[Pkg] The Trunk: Collections-bf.502.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Mar 2 12:46:43 UTC 2013
Bert Freudenberg uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-bf.502.mcz
==================== Summary ====================
Name: Collections-bf.502
Author: bf
Time: 2 March 2013, 1:45:38.248 pm
UUID: 87a84004-6bba-4930-acf3-a86574e1f415
Ancestors: Collections-fbs.501
Sundry changes:
* deal with "[:" and "{}" in String>>findSelector
* process numeric entities in String>>asUnHtml
* remove PositionableStream>>last (unused, buggy)
=============== Diff against Collections-fbs.501 ===============
Item was removed:
- ----- Method: PositionableStream>>last (in category 'accessing') -----
- last
- "Return the final element in the receiver"
-
- ^ collection at: position!
Item was changed:
----- Method: String>>asUnHtml (in category 'converting') -----
asUnHtml
"Strip out all Html stuff (commands in angle brackets <>) and convert
the characters &<> back to their real value. Leave actual cr and tab as
they were in text."
| in out char rest |
in := ReadStream on: self.
out := WriteStream on: (String new: self size).
[in atEnd] whileFalse:
[in peek = $<
ifTrue: [in unCommand] "Absorb <...><...>"
ifFalse: [(char := in next) = $&
ifTrue: [rest := in upTo: $;.
out nextPut: (HtmlEntities
at: rest
+ ifAbsent: [
+ (rest beginsWith: '#')
+ ifTrue: [Character value: rest allButFirst asInteger]
+ ifFalse: [Character space]])]
- ifAbsent: [Character space])]
ifFalse: [out nextPut: char]].
].
^ out contents!
Item was changed:
----- Method: String>>findSelector (in category 'converting') -----
findSelector
"Dan's code for hunting down selectors with keyword parts; while this doesn't give a true parse, in most cases it does what we want, in where it doesn't, we're none the worse for it."
| sel possibleParens |
sel := self withBlanksTrimmed.
(sel includes: $:) ifTrue:
[sel := sel copyReplaceAll: ':' with: ': '. "for the style (aa max:bb) with no space"
+ sel := sel copyReplaceAll: '[:' with: '[ :'. "for the style ([:a) with no space"
possibleParens := sel findTokens: Character separators.
sel := self class streamContents:
[:s | | level |
+ level := 0.
- level := 0.
possibleParens do:
+ [:token |
- [:token | | n |
(level = 0 and: [token endsWith: ':'])
ifTrue: [s nextPutAll: token]
+ ifFalse: [level := level
+ + (token occurrencesOf: $() - (token occurrencesOf: $))
+ + (token occurrencesOf: $[) - (token occurrencesOf: $])
+ + (token occurrencesOf: ${) - (token occurrencesOf: $})]]]].
- ifFalse: [(n := token occurrencesOf: $( ) > 0 ifTrue: [level := level + n].
- (n := token occurrencesOf: $[ ) > 0 ifTrue: [level := level + n].
- (n := token occurrencesOf: $] ) > 0 ifTrue: [level := level - n].
- (n := token occurrencesOf: $) ) > 0 ifTrue: [level := level - n]]]]].
-
sel isEmpty ifTrue: [^ nil].
sel isOctetString ifTrue: [sel := sel asOctetString].
Symbol hasInterned: sel ifTrue:
[:aSymbol | ^ aSymbol].
^ nil!
More information about the Packages
mailing list