The Trunk: Collections-nice.892.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Collections-nice.892.mcz

commits-2
Nicolas Cellier uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-nice.892.mcz

==================== Summary ====================

Name: Collections-nice.892
Author: nice
Time: 10 May 2020, 2:40:51.912657 pm
UUID: 4013b080-6fde-4ada-a615-c2f7a47cede9
Ancestors: Collections-nice.891

Fixup: of course, we need a regex if we want to use the negative lookahead.
Also $: needs to be escaped.

Apologies for the quality of previous commit.

=============== Diff against Collections-nice.891 ===============

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 copyWithRegex: '''[^'']*''' matchesReplacedWith: '''a string'''.
  sel := sel copyWithRegex: '#[^\[\(\s\.$]*' matchesReplacedWith: '#aSymbol'.
  sel := sel copyWithRegex: '\$.' matchesReplacedWith: '$x'. "handle $( $[ and $:"
+ sel := sel copyWithRegex: '\:(?!!=)' matchesReplacedWith: ': '. "for the style (aa max:bb) with no space"
- 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 substrings.
  sel := self class streamContents:
  [:s | | level |
  level := 0.
  possibleParens do:
  [:token |
  (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:
  [sel := self substrings ifNotEmpty: [:tokens | tokens last]].
  sel ifEmpty: [^ nil].
  sel first = $# ifTrue:
  [sel := sel allButFirst.
  sel ifEmpty: [^ nil]].
  sel isOctetString ifTrue: [sel := sel asOctetString].
  ^ Symbol lookup: sel!