[squeak-dev] HtmlParser MNU: ByteString>>replaceHtmlCharRefs

Bernhard Pieber bernhard at pieber.com
Sun Oct 22 19:40:00 UTC 2017


Hi Chris,

Thanks for the missing method and the tip regarding the old images.

Cheers,
Bernhard

> Am 22.10.2017 um 19:33 schrieb Chris Cunnington <brasspen at gmail.com>:
> 
> >Dear Squeakers,
> 
> >I tried to parse an HTML file like this in a trunk image and ran into a MNU:
> >FileStream fileNamed: ’some.html’ do: [:stream | HtmlParser parse: stream]
> 
> >In HtmlText>>#initialize the message #replaceHtmlCharRefs is sent. I suppose this method was once the image. Otherwise HtmlPar>ser would never have worked. How can I find out, when it got lost? How would you do it?
> 
> >Cheers,
> >Bernhard
> 
> Go to the files archive and start opening old images to find what was removed. Your method is in a 3.2 image. 
> I have old images lying around on my desktops and I cannot get off the couch right now, so I thought I’d look for it. 
> Googling your selector “replaceHtmlCharRefs” would show that Steph had the same problem in 2009. 
> 
> Chris 
> 
> 
> String>>#replaceHtmlCharRefs
> 
>         | pos ampIndex scIndex special specialValue outString outPos newOutPos |
> 
>         outString _ String new: self size.
>         outPos _ 0.
> 
>         pos _ 1.
>         
>         [ pos <= self size ] whileTrue: [ 
>                 "read up to the next ampersand"
>                 ampIndex _ self indexOf: $& startingAt: pos ifAbsent: [0].
>                 
>                 ampIndex = 0 ifTrue: [
>                         pos = 1 ifTrue: [ ^self ] ifFalse: [ ampIndex _ self size+1 ] ].
> 
>                 newOutPos _ outPos + ampIndex - pos.
>                 outString
>                         replaceFrom: outPos + 1
>                         to: newOutPos
>                         with: self
>                         startingAt: pos.
>                 outPos _ newOutPos.
>                 pos _ ampIndex.
> 
>                 ampIndex <= self size ifTrue: [
>                         "find the $;"
>                         scIndex _ self indexOf: $; startingAt: ampIndex ifAbsent: [ self size + 1 ].
> 
>                         special _ self copyFrom: ampIndex+1 to: scIndex-1.       
>                         specialValue _ HtmlEntity valueOfHtmlEntity: special. 
> 
>                         specialValue
>                                 ifNil: [
>                                         "not a recognized entity.  wite it back"
> 								  scIndex > self size ifTrue: [ scIndex _ self size ].
> 
>                                         newOutPos _ outPos + scIndex - ampIndex + 1.
>                                         outString
>                                                 replaceFrom: outPos+1
>                                                 to: newOutPos
>                                                 with: self
>                                                 startingAt: ampIndex.
>                                         outPos _ newOutPos.]
>                                 ifNotNil: [
>                                         outPos _ outPos + 1.
>                                         outString at: outPos put: specialValue.].
>                         
>                         pos _ scIndex + 1. ]. ].
> 
> 
>         ^outString copyFrom: 1 to: outPos
> 



More information about the Squeak-dev mailing list