Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-06 Thread Nicolai Hess
2014-05-06 17:49 GMT+02:00 :

>  Nicolai Hess wrote:
>
>
>
>
> 2014-05-06 1:17 GMT+02:00 Carlo :
>
>> Hi
>>
>>  The problem seems to be due to the use of an internal collection class
>> of OrderedCollection which has restrictions on use of #at:put:. This means
>> that certain methods will have to delegate to the internal collection class
>> to be ’safe’; in this scenario it is the XMLOrderedList
>> >>copyReplaceFrom:to:with:
>>
>>  I don’t have write access to the
>> http://www.smalltalkhub.com/#!/~PharoExtras/XMLParser/ project but here
>> is a unit test and code change that seems to work.
>>
>>  Cheers
>> Carlo
>>
>>  XMLOrderedListTest>>testConcatenation
>>  | anXmlOrderedList expectedConcatenationResult |
>>  expectedConcatenationResult := XMLOrderedList new add: '1'; yourself.
>>  self
>>  shouldnt: [ anXmlOrderedList := expectedConcatenationResult ,
>> XMLOrderedList new ]
>>  raise: SubscriptOutOfBounds
>>  description:
>>  'Expect that concatenation does not fail even though internal
>> collection class of XMLOrderedList is an OrderedCollection. See comment for
>> XMLOrderedList>>copyReplaceFrom:to:with:'.
>>  self assert: anXmlOrderedList equals: expectedConcatenationResult.
>>
>>
>>   XMLOrderedList >>copyReplaceFrom: start to: stop with:
>> replacementCollection
>>  "Delegate to my internal collection class as it may restrict copying
>> and replacing.
>>  See comment for OrderedCollection>>copyReplaceFrom:to:with: and
>> OrderedCollection>>at:put:"
>>
>>  ^ self collection copyReplaceFrom: start to: stop with:
>> replacementCollection
>>
>>
>
>
>
>  But the test fails :)
>
> XMLOrderedList >>copyReplaceFrom: start to: stop with:
> replacementCollection
>  should return self, not the collection.
>
> hi Nicolas, What you say seems inconsistent with...
> OrderedCollection>>copyReplaceFrom:to:with:which ends with
> ^newOrderedCollection
>
> The test fails because...
> ^ self collection copyReplaceFrom: start to: stop with:
> replacementCollection
> returns anOrderedCollection because /collection/ is an OrderedCollection
>
> What is needed is...
> ^ self newWithCollection: (collection copyReplaceFrom: start to: stop
> with: replacementCollection).
> which returns anXMLOrderedList.
>
> cheers -ben
>
>
>
>   XMLOrderedList >>copyReplaceFrom: start to: stop with:
> replacementCollection
>  "Delegate to my internal collection class as it may restrict copying and
> replacing.
>  See comment for OrderedCollection>>copyReplaceFrom:to:with: and
> OrderedCollection>>at:put:"
>
>self collection copyReplaceFrom: start to: stop with:
> replacementCollection.
>
>
>
>
>
>
>
>
>>
>>  On 05 May 2014, at 7:13 PM, Ben Coman  wrote:
>>
>>
>> Thanks. That info made it much easier to try.  Sorry I didn't end up with
>> an answer for you, but I confirm there is some issue here, or something new
>> I can learn when other chip in.
>>
>> Here is what I tried.
>>
>> * Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
>>
>> * Ran your code. Got the same error.
>>
>> * From the call stack I observed that
>> XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
>> has the line "newSequenceableCollection := self species new: newSize."
>> such that it seems your error might be reduced to the question of why the
>> following two snippets fail:
>> d := OrderedCollection new: 1.
>> d at: 1 put: 1.
>>
>> e := OrderedCollection new: 3.
>> e at: 2 put: 1.
>>
>> However I'm sorry that is beyond my knowledge, and I'm hoping someone
>> else can chip in so I can learn something.
>>
>> Pushing on, I noticed that XMLOrderedList has an instance variable
>> /collection/ which holds the OrderedCollection.
>>
>> Now I wonder (without great experience and hoping to learn something) if
>> it smells funny that XMLOrderedList inherits all of SequencableCollection
>> methods that can not operate on /collection/.
>>
>> I noticed that XMLOrderedList was using an inherited
>> SequenceableCollection>>copyReplaceFrom:to:with
>> while OrderedCollection overrode that method with its own. So taking
>> inspiration XMLOrderedList>>copyFrom:to: to override
>> SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
>> seems to solve your problem:
>> XMLOrderedList>>copyReplaceFrom: start to: stop with:
>> replacementCollection
>> ^ self newWithCollection:
>> (collection copyReplaceFrom: start to: stop with:
>> replacementCollection )
>>
>>
>> Along the way I noticed a few (possible) bugs that seems not related to
>> your problem:
>>
>> * When stepping through XMLOrderedList>>setCollection:
>> there is a red-box-of-death for the instance variables, which can be
>> solved by defining the following.
>> XMLOrderedList>>size
>> ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
>>
>> * In the debugger the /collection/ instance variable is not shown! (e.g.
>> line XMLOrderedList>>at:put:).
>> Can someone confirm this should show?
>>
>> HTH

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-06 Thread btc




Nicolai Hess wrote:

  
  
  
  2014-05-06 1:17 GMT+02:00 Carlo :
  
Hi


The problem seems to be due to the use of an internal
collection class of OrderedCollection which has restrictions on use of
#at:put:. This means that certain methods will have to delegate to the
internal collection class to be ’safe’; in this scenario it is the
XMLOrderedList >>copyReplaceFrom:to:with:


I don’t have write access to the http://www.smalltalkhub.com/#!/~PharoExtras/XMLParser/ project
but here is a unit test and code change that seems to work.


Cheers
Carlo



XMLOrderedListTest>>testConcatenation
 | anXmlOrderedList
expectedConcatenationResult |
 expectedConcatenationResult :=
XMLOrderedList new add: '1'; yourself.
 self
 shouldnt: [ anXmlOrderedList :=
expectedConcatenationResult , XMLOrderedList new ]
 raise: SubscriptOutOfBounds
 description:
 'Expect that concatenation does not
fail even though internal collection class of XMLOrderedList is an
OrderedCollection. See comment for
XMLOrderedList>>copyReplaceFrom:to:with:'.
 self assert: anXmlOrderedList equals:
expectedConcatenationResult.






XMLOrderedList >>copyReplaceFrom: start to: stop with:
replacementCollection

 "Delegate to my internal collection
class as it may restrict copying and replacing.
 See comment for
OrderedCollection>>copyReplaceFrom:to:with: and
OrderedCollection>>at:put:"


 ^ self collection copyReplaceFrom:
start to: stop with: replacementCollection









  
  
  
  
  
  
  But the test fails :)
  
XMLOrderedList >>copyReplaceFrom: start to: stop with:
replacementCollection
  
  should return self, not the collection.
  
  
  
  

hi Nicolas, What you say seems inconsistent with... 
OrderedCollection>>copyReplaceFrom:to:with:    which ends with
    
    ^newOrderedCollection

The test fails because... 
    ^ self collection copyReplaceFrom: start to: stop with:
replacementCollection
returns anOrderedCollection because /collection/ is an OrderedCollection

What is needed is...
    ^ self newWithCollection: (collection copyReplaceFrom: start to:
stop with: replacementCollection).
which returns anXMLOrderedList.

cheers -ben


  
  
  
  
  
  
  
  
  XMLOrderedList >>copyReplaceFrom: start to: stop with:
replacementCollection
  
   "Delegate to my internal collection
class as it may restrict copying and replacing.
   See comment for
OrderedCollection>>copyReplaceFrom:to:with: and
OrderedCollection>>at:put:"
  
  
    self collection copyReplaceFrom: start
to: stop with: replacementCollection.
  
  
  
  
  
  
  
  
  
  
  
  
 
  







On 05 May 2014, at 7:13 PM, Ben Coman  wrote:



Thanks. That info made it much easier to try.  Sorry I didn't end up
with an answer for you, but I confirm there is some issue here, or
something new I can learn when other chip in. 

Here is what I tried.

* Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.

* Ran your code. Got the same error.

* From the call stack I observed that
XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
has the line "newSequenceableCollection := self species new: newSize."
such that it seems your error might be reduced to the question of why
the following two snippets fail:
    d := OrderedCollection new: 1.
    d at: 1 put: 1.

    e := OrderedCollection new: 3.
    e at: 2 put: 1.

However I'm sorry that is beyond my knowledge, and I'm hoping someone
else can chip in so I can learn something.

Pushing on, I noticed that XMLOrderedList has an instance variable
/collection/ which holds the OrderedCollection.

Now I wonder (without great experience and hoping to learn something)
if it smells funny that XMLOrderedList inherits all of
SequencableCollection methods that can not operate on /collection/. 

I noticed that XMLOrderedList was using an
inherited SequenceableCollection>>copyReplaceFrom:to:with 
while OrderedCollection overrode that method with its own. So taking
inspiration XMLOrderedList>>copyFrom:to: to override
SequencableCollection>>copyReplaceFrom:to:with: to work with
/collection/
seems to solve your problem:
    XMLOrderedList>>copyReplaceFrom: start to: stop with:
replacementCollection 
    ^ self newWithCollection:
        (collection copyReplaceFrom: start to: stop with:
replacementCollection )


Along the way I noticed a few (possible) bugs that seems not related to
your problem:

* When stepping through XMLOrderedList>>setCollection:
there is a red-box-of-death for the instance variables, which can be
solved by defining the following.
    XMLOrderedList>>size
    ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]

* In the debugger the /collection/ instance variable is not shown!
(e.g

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-06 Thread Carlo
Hi

Sorry about that, I think it’s meant to be:

copyReplaceFrom: start to: stop with: replacementCollection
"Delegate to my internal collection class as it may restrict copying 
and replacing.
See comment for OrderedCollection>>copyReplaceFrom:to:with: and 
OrderedCollection>>at:put:"

^ self newWithCollection: (self collection copyReplaceFrom: start to: 
stop with: replacementCollection)

Cheers
Carlo

On 06 May 2014, at 9:43 AM, Nicolai Hess  wrote:




2014-05-06 1:17 GMT+02:00 Carlo :
Hi

The problem seems to be due to the use of an internal collection class of 
OrderedCollection which has restrictions on use of #at:put:. This means that 
certain methods will have to delegate to the internal collection class to be 
’safe’; in this scenario it is the XMLOrderedList >>copyReplaceFrom:to:with:

I don’t have write access to the 
http://www.smalltalkhub.com/#!/~PharoExtras/XMLParser/ project but here is a 
unit test and code change that seems to work.

Cheers
Carlo

XMLOrderedListTest>>testConcatenation
| anXmlOrderedList expectedConcatenationResult |
expectedConcatenationResult := XMLOrderedList new add: '1'; yourself.
self
shouldnt: [ anXmlOrderedList := expectedConcatenationResult , 
XMLOrderedList new ]
raise: SubscriptOutOfBounds
description:
'Expect that concatenation does not fail even though 
internal collection class of XMLOrderedList is an OrderedCollection. See 
comment for XMLOrderedList>>copyReplaceFrom:to:with:'.
self assert: anXmlOrderedList equals: expectedConcatenationResult.


XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
"Delegate to my internal collection class as it may restrict copying 
and replacing.
See comment for OrderedCollection>>copyReplaceFrom:to:with: and 
OrderedCollection>>at:put:"

^ self collection copyReplaceFrom: start to: stop with: 
replacementCollection





But the test fails :)

XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
should return self, not the collection.

XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
"Delegate to my internal collection class as it may restrict copying 
and replacing.
See comment for OrderedCollection>>copyReplaceFrom:to:with: and 
OrderedCollection>>at:put:"

self collection copyReplaceFrom: start to: stop with: 
replacementCollection.






 

On 05 May 2014, at 7:13 PM, Ben Coman  wrote:


Thanks. That info made it much easier to try.  Sorry I didn't end up with an 
answer for you, but I confirm there is some issue here, or something new I can 
learn when other chip in. 

Here is what I tried.

* Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.

* Ran your code. Got the same error.

* From the call stack I observed that 
XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
has the line "newSequenceableCollection := self species new: newSize." such 
that it seems your error might be reduced to the question of why the following 
two snippets fail:
d := OrderedCollection new: 1.
d at: 1 put: 1.

e := OrderedCollection new: 3.
e at: 2 put: 1.

However I'm sorry that is beyond my knowledge, and I'm hoping someone else can 
chip in so I can learn something.

Pushing on, I noticed that XMLOrderedList has an instance variable /collection/ 
which holds the OrderedCollection.

Now I wonder (without great experience and hoping to learn something) if it 
smells funny that XMLOrderedList inherits all of SequencableCollection methods 
that can not operate on /collection/. 

I noticed that XMLOrderedList was using an inherited 
SequenceableCollection>>copyReplaceFrom:to:with 
while OrderedCollection overrode that method with its own. So taking 
inspiration XMLOrderedList>>copyFrom:to: to override 
SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
seems to solve your problem:
XMLOrderedList>>copyReplaceFrom: start to: stop with: replacementCollection 
^ self newWithCollection:
(collection copyReplaceFrom: start to: stop with: 
replacementCollection )


Along the way I noticed a few (possible) bugs that seems not related to your 
problem:

* When stepping through XMLOrderedList>>setCollection:
there is a red-box-of-death for the instance variables, which can be solved by 
defining the following.
XMLOrderedList>>size
^ collection ifNil: [ 0 ] ifNotNil: [ collection size]

* In the debugger the /collection/ instance variable is not shown! (e.g. line 
XMLOrderedList>>at:put:). 
Can someone confirm this should show?

HTH
cheers -ben

Thushar G R wrote:
> 
> XMLOrderedList belongs to package XML-Parser-Nodes.
> 
> a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
> 
> Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am expected 
> to get a copy of 'a' 

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-06 Thread Ben Coman




Thushar G R wrote:

  Hi,
  
  
  Thanks for all the responses.Ben and Carlos solutions works.
What workaround i did was i overrided the concatenation method in XMLOrderedList for the time being ,
until someone authorised has 
  has
a solution and commits it.I hope it happens soon so i dont have to
maintain a patch.
  
  
  Thanks
to all,
  thushar
  
  
  


btw, did you make your XMLOrderedList>>copyReplaceFrom:to:with an
extension of XLMParser from your own package. That way you avoid a
dirty XMLParser package by saving your method with your package.
cheers -ben



  
  
  
  
  
  
  
  
  
  On Mon, May 5, 2014 at 4:47 PM, Thushar G R 
wrote:
  
Hi,

I am getting an error while doing this.

a := XMLOrderedList new.
a add:'1'.
a , XMLOrderedList new.


Thanks,


Thushar

  
  
  
  








Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-06 Thread Nicolai Hess
2014-05-06 1:17 GMT+02:00 Carlo :

> Hi
>
> The problem seems to be due to the use of an internal collection class of
> OrderedCollection which has restrictions on use of #at:put:. This means
> that certain methods will have to delegate to the internal collection class
> to be ’safe’; in this scenario it is the XMLOrderedList
> >>copyReplaceFrom:to:with:
>
> I don’t have write access to the
> http://www.smalltalkhub.com/#!/~PharoExtras/XMLParser/ project but here
> is a unit test and code change that seems to work.
>
> Cheers
> Carlo
>
> XMLOrderedListTest>>testConcatenation
> | anXmlOrderedList expectedConcatenationResult |
> expectedConcatenationResult := XMLOrderedList new add: '1'; yourself.
> self
> shouldnt: [ anXmlOrderedList := expectedConcatenationResult ,
> XMLOrderedList new ]
> raise: SubscriptOutOfBounds
> description:
> 'Expect that concatenation does not fail even though internal collection
> class of XMLOrderedList is an OrderedCollection. See comment for
> XMLOrderedList>>copyReplaceFrom:to:with:'.
> self assert: anXmlOrderedList equals: expectedConcatenationResult.
>
>
> XMLOrderedList >>copyReplaceFrom: start to: stop with:
> replacementCollection
> "Delegate to my internal collection class as it may restrict copying and
> replacing.
> See comment for OrderedCollection>>copyReplaceFrom:to:with: and
> OrderedCollection>>at:put:"
>
> ^ self collection copyReplaceFrom: start to: stop with:
> replacementCollection
>
>



But the test fails :)

XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
should return self, not the collection.

XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
"Delegate to my internal collection class as it may restrict copying and
replacing.
See comment for OrderedCollection>>copyReplaceFrom:to:with: and
OrderedCollection>>at:put:"

  self collection copyReplaceFrom: start to: stop with:
replacementCollection.








>
> On 05 May 2014, at 7:13 PM, Ben Coman  wrote:
>
>
> Thanks. That info made it much easier to try.  Sorry I didn't end up with
> an answer for you, but I confirm there is some issue here, or something new
> I can learn when other chip in.
>
> Here is what I tried.
>
> * Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
>
> * Ran your code. Got the same error.
>
> * From the call stack I observed that
> XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
> has the line "newSequenceableCollection := self species new: newSize."
> such that it seems your error might be reduced to the question of why the
> following two snippets fail:
> d := OrderedCollection new: 1.
> d at: 1 put: 1.
>
> e := OrderedCollection new: 3.
> e at: 2 put: 1.
>
> However I'm sorry that is beyond my knowledge, and I'm hoping someone else
> can chip in so I can learn something.
>
> Pushing on, I noticed that XMLOrderedList has an instance variable
> /collection/ which holds the OrderedCollection.
>
> Now I wonder (without great experience and hoping to learn something) if
> it smells funny that XMLOrderedList inherits all of SequencableCollection
> methods that can not operate on /collection/.
>
> I noticed that XMLOrderedList was using an inherited
> SequenceableCollection>>copyReplaceFrom:to:with
> while OrderedCollection overrode that method with its own. So taking
> inspiration XMLOrderedList>>copyFrom:to: to override
> SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
> seems to solve your problem:
> XMLOrderedList>>copyReplaceFrom: start to: stop with:
> replacementCollection
> ^ self newWithCollection:
> (collection copyReplaceFrom: start to: stop with:
> replacementCollection )
>
>
> Along the way I noticed a few (possible) bugs that seems not related to
> your problem:
>
> * When stepping through XMLOrderedList>>setCollection:
> there is a red-box-of-death for the instance variables, which can be
> solved by defining the following.
> XMLOrderedList>>size
> ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
>
> * In the debugger the /collection/ instance variable is not shown! (e.g.
> line XMLOrderedList>>at:put:).
> Can someone confirm this should show?
>
> HTH
> cheers -ben
>
> Thushar G R wrote:
>
> XMLOrderedList belongs to package XML-Parser-Nodes.
>
>  a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
>
>  Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am
> expected to get a copy of 'a' , but instead it throws an error
> SubscriptOutOfBounds.
>
>
>
>
>  OrderedCollection(Object)>>errorSubscriptBounds:
> OrderedCollection>>ensureBoundsFrom:to:
> OrderedCollection>>at:put:
> OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
> XMLOrderedList>>replaceFrom:to:with:startingAt:
> XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
> XMLOrderedList(SequenceableCollection)>>,
> UndefinedObject>>DoIt
> OpalCompiler>>evaluate
> SmalltalkEd

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Thushar G R
Hi,

Thanks for all the responses.Ben and Carlos solutions works. What
workaround i did was i overrided the concatenation method in XMLOrderedList
for the time being , until someone authorised has
has a solution and commits it.I hope it happens soon so i dont have to
maintain a patch.

Thanks to all,
thushar

*G R Thushar*
*Team Leader(Technology),*
*Signos Software Solutions Pvt. Ltd.*
*Ground Floor **A.R Plaza, TC 11/43 (2),*
*P.M.G Junction,*
*Thiruvananthapuram, 695004. Kerala, India.*

*Web: www.signossolutions.com *
Email: thushar...@signossolutions.com, thushar...@gmail.com
Phone: +91984652





On Mon, May 5, 2014 at 4:47 PM, Thushar G R  wrote:

> Hi,
>
> I am getting an error while doing this.
>
> a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
>
> Thanks,
>
> Thushar
>


Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Carlo
Hi

The problem seems to be due to the use of an internal collection class of 
OrderedCollection which has restrictions on use of #at:put:. This means that 
certain methods will have to delegate to the internal collection class to be 
’safe’; in this scenario it is the XMLOrderedList >>copyReplaceFrom:to:with:

I don’t have write access to the 
http://www.smalltalkhub.com/#!/~PharoExtras/XMLParser/ project but here is a 
unit test and code change that seems to work.

Cheers
Carlo

XMLOrderedListTest>>testConcatenation
| anXmlOrderedList expectedConcatenationResult |
expectedConcatenationResult := XMLOrderedList new add: '1'; yourself.
self
shouldnt: [ anXmlOrderedList := expectedConcatenationResult , 
XMLOrderedList new ]
raise: SubscriptOutOfBounds
description:
'Expect that concatenation does not fail even though 
internal collection class of XMLOrderedList is an OrderedCollection. See 
comment for XMLOrderedList>>copyReplaceFrom:to:with:'.
self assert: anXmlOrderedList equals: expectedConcatenationResult.


XMLOrderedList >>copyReplaceFrom: start to: stop with: replacementCollection
"Delegate to my internal collection class as it may restrict copying 
and replacing.
See comment for OrderedCollection>>copyReplaceFrom:to:with: and 
OrderedCollection>>at:put:"

^ self collection copyReplaceFrom: start to: stop with: 
replacementCollection


On 05 May 2014, at 7:13 PM, Ben Coman  wrote:


Thanks. That info made it much easier to try.  Sorry I didn't end up with an 
answer for you, but I confirm there is some issue here, or something new I can 
learn when other chip in. 

Here is what I tried.

* Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.

* Ran your code. Got the same error.

* From the call stack I observed that 
XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
has the line "newSequenceableCollection := self species new: newSize." such 
that it seems your error might be reduced to the question of why the following 
two snippets fail:
d := OrderedCollection new: 1.
d at: 1 put: 1.

e := OrderedCollection new: 3.
e at: 2 put: 1.

However I'm sorry that is beyond my knowledge, and I'm hoping someone else can 
chip in so I can learn something.

Pushing on, I noticed that XMLOrderedList has an instance variable /collection/ 
which holds the OrderedCollection.

Now I wonder (without great experience and hoping to learn something) if it 
smells funny that XMLOrderedList inherits all of SequencableCollection methods 
that can not operate on /collection/. 

I noticed that XMLOrderedList was using an inherited 
SequenceableCollection>>copyReplaceFrom:to:with 
while OrderedCollection overrode that method with its own. So taking 
inspiration XMLOrderedList>>copyFrom:to: to override 
SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
seems to solve your problem:
XMLOrderedList>>copyReplaceFrom: start to: stop with: replacementCollection 
^ self newWithCollection:
(collection copyReplaceFrom: start to: stop with: 
replacementCollection )


Along the way I noticed a few (possible) bugs that seems not related to your 
problem:

* When stepping through XMLOrderedList>>setCollection:
there is a red-box-of-death for the instance variables, which can be solved by 
defining the following.
XMLOrderedList>>size
^ collection ifNil: [ 0 ] ifNotNil: [ collection size]

* In the debugger the /collection/ instance variable is not shown! (e.g. line 
XMLOrderedList>>at:put:). 
Can someone confirm this should show?

HTH
cheers -ben

Thushar G R wrote:
> 
> XMLOrderedList belongs to package XML-Parser-Nodes.
> 
> a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
> 
> Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am expected 
> to get a copy of 'a' , but instead it throws an error SubscriptOutOfBounds. 
> 
> 
> 
> 
> OrderedCollection(Object)>>errorSubscriptBounds:
> OrderedCollection>>ensureBoundsFrom:to:
> OrderedCollection>>at:put:
> OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
> XMLOrderedList>>replaceFrom:to:with:startingAt:
> XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
> XMLOrderedList(SequenceableCollection)>>,
> UndefinedObject>>DoIt
> OpalCompiler>>evaluate
> SmalltalkEditor>>evaluateSelectionAndDo:
> PluggableTextMorph>>inspectIt in Block: [ textMorph editor 
> evaluateSelectionAndDo: [ :resu...etc...
> PluggableTextMorph>>handleEdit: in Block: [ result := editBlock value ]
> TextMorphForEditView(TextMorph)>>handleEdit:
> PluggableTextMorph>>handleEdit:
> PluggableTextMorph>>inspectIt
> SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: [ :morph 
> | morph inspectIt ]
> BlockClosure>>cull:
> BlockClosure>>cull:cull:
> BlockClosure>>cull:cull:cull:
> KMCategoryBinding>>completeMatch:

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Sven Van Caekenberghe
The EyeCollectionInspector show the 'collection view' (what enumeration does), 
the EyeBasicInspector shows the actual instance variables as well as the 
variable part (and thus allows a look inside). That is why there are multiple 
views.

On 05 May 2014, at 23:50, Nicolai Hess  wrote:

> 2014-05-05 19:13 GMT+02:00 Ben Coman :
> 
> Thanks. That info made it much easier to try.  Sorry I didn't end up with an 
> answer for you, but I confirm there is some issue here, or something new I 
> can learn when other chip in. 
> 
> Here is what I tried.
> 
> * Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
> 
> * Ran your code. Got the same error.
> 
> * From the call stack I observed that 
> XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
> has the line "newSequenceableCollection := self species new: newSize." such 
> that it seems your error might be reduced to the question of why the 
> following two snippets fail:
> d := OrderedCollection new: 1.
> d at: 1 put: 1.
> 
> e := OrderedCollection new: 3.
> e at: 2 put: 1.
> 
> However I'm sorry that is beyond my knowledge, and I'm hoping someone else 
> can chip in so I can learn something.
> 
> Pushing on, I noticed that XMLOrderedList has an instance variable 
> /collection/ which holds the OrderedCollection.
> 
> Now I wonder (without great experience and hoping to learn something) if it 
> smells funny that XMLOrderedList inherits all of SequencableCollection 
> methods that can not operate on /collection/. 
> 
> I noticed that XMLOrderedList was using an inherited 
> SequenceableCollection>>copyReplaceFrom:to:with 
> while OrderedCollection overrode that method with its own. So taking 
> inspiration XMLOrderedList>>copyFrom:to: to override 
> SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
> seems to solve your problem:
> XMLOrderedList>>copyReplaceFrom: start to: stop with: 
> replacementCollection 
> ^ self newWithCollection:
> (collection copyReplaceFrom: start to: stop with: 
> replacementCollection )
> 
> 
> Along the way I noticed a few (possible) bugs that seems not related to your 
> problem:
> 
> * When stepping through XMLOrderedList>>setCollection:
> there is a red-box-of-death for the instance variables, which can be solved 
> by defining the following.
> XMLOrderedList>>size
> ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
> 
> * In the debugger the /collection/ instance variable is not shown! (e.g. line 
> XMLOrderedList>>at:put:). 
> Can someone confirm this should show?
> 
> 
> I think this is the default Collection inspector (EyeCollectionInspector). 
> Debugging
> a OrderedCollection behaves the same, the debugger does not show the array 
> and index
> instvars.
> 
> nicolai
> 
> 
> 
> HTH
> cheers -ben
> 
> Thushar G R wrote:
>> XMLOrderedList belongs to package XML-Parser-Nodes.
>> 
>> a := XMLOrderedList new.
>> a add:'1'.
>> a , XMLOrderedList new.
>> 
>> Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am 
>> expected to get a copy of 'a' , but instead it throws an error 
>> SubscriptOutOfBounds. 
>> 
>> 
>> 
>> 
>> OrderedCollection(Object)>>errorSubscriptBounds:
>> OrderedCollection>>ensureBoundsFrom:to:
>> OrderedCollection>>at:put:
>> OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
>> XMLOrderedList>>replaceFrom:to:with:startingAt:
>> XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
>> XMLOrderedList(SequenceableCollection)>>,
>> UndefinedObject>>DoIt
>> OpalCompiler>>evaluate
>> SmalltalkEditor>>evaluateSelectionAndDo:
>> PluggableTextMorph>>inspectIt in Block: [ textMorph editor 
>> evaluateSelectionAndDo: [ :resu...etc...
>> PluggableTextMorph>>handleEdit: in Block: [ result := editBlock value ]
>> TextMorphForEditView(TextMorph)>>handleEdit:
>> PluggableTextMorph>>handleEdit:
>> PluggableTextMorph>>inspectIt
>> SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: [ :morph 
>> | morph inspectIt ]
>> BlockClosure>>cull:
>> BlockClosure>>cull:cull:
>> BlockClosure>>cull:cull:cull:
>> KMCategoryBinding>>completeMatch:buffer:
>> KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l completeMatch: 
>> self buffer: aBuffer ]
>> Array(SequenceableCollection)>>do:
>> KMKeymap>>notifyCompleteMatchTo:buffer:
>> KMKeymap>>onMatchWith:notify:andDo:
>> KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry | entry 
>> onMatchWith: anEventBuffer notify...etc...
>> Set>>do:
>> KMCategory>>onMatchWith:notify:andDo:
>> KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
>> KMDispatcher>>dispatch: in Block: [ :aTarget | ...
>> OrderedCollection>>do:
>> 
>> 
>> Plese refer to the above stack.
>> 
>> Thanks in advance.
>> 
>> thushar
>> 
>> 
>> On Mon, May 5, 2014 at 6:28 PM, Ben Coman  wrote:
>> Thushar G R wrote:
>> Hi,
>> 
>> I am getting an error while doing this.
>> 
>> a := XMLOrderedList new.
>> a add:'1'.
>> a , XMLOrderedList ne

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Nicolai Hess
2014-05-05 19:13 GMT+02:00 Ben Coman :

>
> Thanks. That info made it much easier to try.  Sorry I didn't end up with
> an answer for you, but I confirm there is some issue here, or something new
> I can learn when other chip in.
>
> Here is what I tried.
>
> * Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
>
> * Ran your code. Got the same error.
>
> * From the call stack I observed that
> XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
> has the line "newSequenceableCollection := self species new: newSize."
> such that it seems your error might be reduced to the question of why the
> following two snippets fail:
> d := OrderedCollection new: 1.
> d at: 1 put: 1.
>
> e := OrderedCollection new: 3.
> e at: 2 put: 1.
>
> However I'm sorry that is beyond my knowledge, and I'm hoping someone else
> can chip in so I can learn something.
>
> Pushing on, I noticed that XMLOrderedList has an instance variable
> /collection/ which holds the OrderedCollection.
>
> Now I wonder (without great experience and hoping to learn something) if
> it smells funny that XMLOrderedList inherits all of SequencableCollection
> methods that can not operate on /collection/.
>
> I noticed that XMLOrderedList was using an inherited
> SequenceableCollection>>copyReplaceFrom:to:with
> while OrderedCollection overrode that method with its own. So taking
> inspiration XMLOrderedList>>copyFrom:to: to override
> SequencableCollection>>copyReplaceFrom:to:with: to work with /collection/
> seems to solve your problem:
> XMLOrderedList>>copyReplaceFrom: start to: stop with:
> replacementCollection
> ^ self newWithCollection:
> (collection copyReplaceFrom: start to: stop with:
> replacementCollection )
>
>
> Along the way I noticed a few (possible) bugs that seems not related to
> your problem:
>
> * When stepping through XMLOrderedList>>setCollection:
> there is a red-box-of-death for the instance variables, which can be
> solved by defining the following.
> XMLOrderedList>>size
> ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
>
> * In the debugger the /collection/ instance variable is not shown! (e.g.
> line XMLOrderedList>>at:put:).
> Can someone confirm this should show?
>


I think this is the default Collection inspector (EyeCollectionInspector).
Debugging
a OrderedCollection behaves the same, the debugger does not show the array
and index
instvars.

nicolai



> HTH
> cheers -ben
>
> Thushar G R wrote:
>
> XMLOrderedList belongs to package XML-Parser-Nodes.
>
>  a := XMLOrderedList new.
> a add:'1'.
> a , XMLOrderedList new.
>
>  Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am
> expected to get a copy of 'a' , but instead it throws an error
> SubscriptOutOfBounds.
>
>
>
>
>  OrderedCollection(Object)>>errorSubscriptBounds:
> OrderedCollection>>ensureBoundsFrom:to:
> OrderedCollection>>at:put:
> OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
> XMLOrderedList>>replaceFrom:to:with:startingAt:
> XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
> XMLOrderedList(SequenceableCollection)>>,
> UndefinedObject>>DoIt
> OpalCompiler>>evaluate
> SmalltalkEditor>>evaluateSelectionAndDo:
> PluggableTextMorph>>inspectIt in Block: [ textMorph editor
> evaluateSelectionAndDo: [ :resu...etc...
> PluggableTextMorph>>handleEdit: in Block: [ result := editBlock value ]
> TextMorphForEditView(TextMorph)>>handleEdit:
> PluggableTextMorph>>handleEdit:
> PluggableTextMorph>>inspectIt
> SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: [
> :morph | morph inspectIt ]
> BlockClosure>>cull:
> BlockClosure>>cull:cull:
> BlockClosure>>cull:cull:cull:
> KMCategoryBinding>>completeMatch:buffer:
> KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l completeMatch:
> self buffer: aBuffer ]
> Array(SequenceableCollection)>>do:
> KMKeymap>>notifyCompleteMatchTo:buffer:
> KMKeymap>>onMatchWith:notify:andDo:
> KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry | entry
> onMatchWith: anEventBuffer notify...etc...
> Set>>do:
> KMCategory>>onMatchWith:notify:andDo:
> KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
> KMDispatcher>>dispatch: in Block: [ :aTarget | ...
> OrderedCollection>>do:
>
>
>  Plese refer to the above stack.
>
>  Thanks in advance.
>
>  thushar
>
>
> On Mon, May 5, 2014 at 6:28 PM, Ben Coman  wrote:
>
>>  Thushar G R wrote:
>>
>>> Hi,
>>>
>>> I am getting an error while doing this.
>>>
>>> a := XMLOrderedList new.
>>> a add:'1'.
>>> a , XMLOrderedList new.
>>>
>>> Thanks,
>>>
>>> Thushar
>>>
>>  I could give you "an answer" ;) - but it would be what you wanted.  It
>> would help if you told what the error was, where it occurs (which of the
>> three lines), and what you expect each line is doing (especially the third
>> line).
>>
>> Also I don't see XMLOrderedList in the default Pharo image, so it would
>> help if you describe where you got that from and 

Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Ben Coman





Thanks. That info made it much easier to try.  Sorry I didn't end up
with an answer for you, but I confirm there is some issue here, or
something new I can learn when other chip in. 

Here is what I tried.

* Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.

* Ran your code. Got the same error.

* From the call stack I observed that
XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
has the line "newSequenceableCollection := self species new: newSize."
such that it seems your error might be reduced to the question of why
the following two snippets fail:
    d := OrderedCollection new: 1.
    d at: 1 put: 1.

    e := OrderedCollection new: 3.
    e at: 2 put: 1.

However I'm sorry that is beyond my knowledge, and I'm hoping someone
else can chip in so I can learn something.

Pushing on, I noticed that XMLOrderedList has an instance variable
/collection/ which holds the OrderedCollection.

Now I wonder (without great experience and hoping to learn something)
if it smells funny that XMLOrderedList inherits all of
SequencableCollection methods that can not operate on /collection/. 

I noticed that XMLOrderedList was using an
inherited SequenceableCollection>>copyReplaceFrom:to:with 
while OrderedCollection overrode that method with its own. So taking
inspiration XMLOrderedList>>copyFrom:to: to override
SequencableCollection>>copyReplaceFrom:to:with: to work with
/collection/
seems to solve your problem:
    XMLOrderedList>>copyReplaceFrom: start to: stop with:
replacementCollection 
    ^ self newWithCollection:
        (collection copyReplaceFrom: start to: stop with:
replacementCollection )


Along the way I noticed a few (possible) bugs that seems not related to
your problem:

* When stepping through XMLOrderedList>>setCollection:
there is a red-box-of-death for the instance variables, which can be
solved by defining the following.
    XMLOrderedList>>size
    ^ collection ifNil: [ 0 ] ifNotNil: [ collection size]

* In the debugger the /collection/ instance variable is not shown!
(e.g. line XMLOrderedList>>at:put:). 
Can someone confirm this should show?

HTH
cheers -ben

Thushar G R wrote:

  XMLOrderedList belongs
to package XML-Parser-Nodes.
  
  
  a
:= XMLOrderedList new.
  a
add:'1'.
  a ,
XMLOrderedList new.
  
  
  Here
select all and Do it. On line 3 (a ,
XMLOrderedList new.)  i am
expected to get a copy of 'a' , but instead it throws an error SubscriptOutOfBounds. 
  
  
  
  
  
  
  
  
  
  OrderedCollection(Object)>>errorSubscriptBounds:
  OrderedCollection>>ensureBoundsFrom:to:
  OrderedCollection>>at:put:
  OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
  XMLOrderedList>>replaceFrom:to:with:startingAt:
  XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
  XMLOrderedList(SequenceableCollection)>>,
  UndefinedObject>>DoIt
  OpalCompiler>>evaluate
  SmalltalkEditor>>evaluateSelectionAndDo:
  PluggableTextMorph>>inspectIt in Block: [ textMorph editor
evaluateSelectionAndDo: [ :resu...etc...
  PluggableTextMorph>>handleEdit: in Block: [ result :=
editBlock value ]
  TextMorphForEditView(TextMorph)>>handleEdit:
  PluggableTextMorph>>handleEdit:
  PluggableTextMorph>>inspectIt
  SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn:
in Block: [ :morph | morph inspectIt ]
  BlockClosure>>cull:
  BlockClosure>>cull:cull:
  BlockClosure>>cull:cull:cull:
  KMCategoryBinding>>completeMatch:buffer:
  KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l
completeMatch: self buffer: aBuffer ]
  Array(SequenceableCollection)>>do:
  KMKeymap>>notifyCompleteMatchTo:buffer:
  KMKeymap>>onMatchWith:notify:andDo:
  KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry |
entry onMatchWith: anEventBuffer notify...etc...
  Set>>do:
  KMCategory>>onMatchWith:notify:andDo:
  KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
  KMDispatcher>>dispatch: in Block: [ :aTarget | ...
  OrderedCollection>>do:
  
  
  
  
  Plese refer to the above stack.
  
  
  Thanks in advance.
  
  
  thushar
  
  
  
  
  On Mon, May 5, 2014 at 6:28 PM, Ben Coman 
wrote:
  

Thushar G R wrote:

Hi,
  
I am getting an error while doing this.
  
a := XMLOrderedList new.
a add:'1'.
a , XMLOrderedList new.
  
Thanks,
  
Thushar



I could give you "an answer" ;) - but it would be what you wanted.  It
would help if you told what the error was, where it occurs (which of
the three lines), and what you expect each line is doing (especially
the third line).

Also I don't see XMLOrderedList in the default Pharo image, so it would
help if you describe where you got that from and how you installed it.

cheers -ben

  
  
  
  








Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Thushar G R
XMLOrderedList belongs to package XML-Parser-Nodes.

a := XMLOrderedList new.
a add:'1'.
a , XMLOrderedList new.

Here select all and Do it. On line 3 (a , XMLOrderedList new.)  i am
expected to get a copy of 'a' , but instead it throws an error
SubscriptOutOfBounds.




OrderedCollection(Object)>>errorSubscriptBounds:
OrderedCollection>>ensureBoundsFrom:to:
OrderedCollection>>at:put:
OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
XMLOrderedList>>replaceFrom:to:with:startingAt:
XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
XMLOrderedList(SequenceableCollection)>>,
UndefinedObject>>DoIt
OpalCompiler>>evaluate
SmalltalkEditor>>evaluateSelectionAndDo:
PluggableTextMorph>>inspectIt in Block: [ textMorph editor
evaluateSelectionAndDo: [ :resu...etc...
PluggableTextMorph>>handleEdit: in Block: [ result := editBlock value ]
TextMorphForEditView(TextMorph)>>handleEdit:
PluggableTextMorph>>handleEdit:
PluggableTextMorph>>inspectIt
SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn: in Block: [
:morph | morph inspectIt ]
BlockClosure>>cull:
BlockClosure>>cull:cull:
BlockClosure>>cull:cull:cull:
KMCategoryBinding>>completeMatch:buffer:
KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l completeMatch:
self buffer: aBuffer ]
Array(SequenceableCollection)>>do:
KMKeymap>>notifyCompleteMatchTo:buffer:
KMKeymap>>onMatchWith:notify:andDo:
KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry | entry
onMatchWith: anEventBuffer notify...etc...
Set>>do:
KMCategory>>onMatchWith:notify:andDo:
KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
KMDispatcher>>dispatch: in Block: [ :aTarget | ...
OrderedCollection>>do:


Plese refer to the above stack.

Thanks in advance.

thushar

*G R Thushar*
*Team Leader(Technology),*
*Signos Software Solutions Pvt. Ltd.*
*Ground Floor **A.R Plaza, TC 11/43 (2),*
*P.M.G Junction,*
*Thiruvananthapuram, 695004. Kerala, India.*

*Web: www.signossolutions.com *
Email: thushar...@signossolutions.com, thushar...@gmail.com
Phone: +91984652





On Mon, May 5, 2014 at 6:28 PM, Ben Coman  wrote:

> Thushar G R wrote:
>
>> Hi,
>>
>> I am getting an error while doing this.
>>
>> a := XMLOrderedList new.
>> a add:'1'.
>> a , XMLOrderedList new.
>>
>> Thanks,
>>
>> Thushar
>>
> I could give you "an answer" ;) - but it would be what you wanted.  It
> would help if you told what the error was, where it occurs (which of the
> three lines), and what you expect each line is doing (especially the third
> line).
>
> Also I don't see XMLOrderedList in the default Pharo image, so it would
> help if you describe where you got that from and how you installed it.
>
> cheers -ben
>
>


Re: [Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Ben Coman

Thushar G R wrote:

Hi,

I am getting an error while doing this.

a := XMLOrderedList new.
a add:'1'.
a , XMLOrderedList new.

Thanks,

Thushar
I could give you "an answer" ;) - but it would be what you wanted.  It 
would help if you told what the error was, where it occurs (which of the 
three lines), and what you expect each line is doing (especially the 
third line).


Also I don't see XMLOrderedList in the default Pharo image, so it would 
help if you describe where you got that from and how you installed it.


cheers -ben



[Pharo-users] XMLOrderedList Concantenation

2014-05-05 Thread Thushar G R
Hi,

I am getting an error while doing this.

a := XMLOrderedList new.
a add:'1'.
a , XMLOrderedList new.

Thanks,

Thushar