Improved detection of keywords, arguments in a string.

This commit is contained in:
Offray Vladimir Luna Cárdenas 2017-08-26 12:31:46 +00:00
parent 0495319170
commit 9153efbbba
2 changed files with 25 additions and 8 deletions

View File

@ -78,8 +78,11 @@ GrafoscopioUtils class >> sanitize: url [
{ #category : #utilities }
GrafoscopioUtils class >> selectorAndArgumentsFrom: aString [
"I return from aString a symbol that contains a message and an array of arguments used in it"
| msgArray answer |
"I return from aString a dictionary that contains a message and an array of arguments used
in such string. Notice that the keyword message must contain spaces between the ':' and its
respective argument.
See GrafoscopioUtilsTest for examples"
| msgArray answer keywords selector args |
answer := OrderedDictionary new.
msgArray := aString splitOn: ':'.
msgArray size = 1
@ -87,12 +90,18 @@ GrafoscopioUtils class >> selectorAndArgumentsFrom: aString [
^ answer
at: 'selector' put: (msgArray at: 1) asSymbol;
yourself ].
msgArray size = 2
ifTrue: [
^ answer
at: 'selector' put: ((msgArray at: 1),':') asSymbol;
at: 'args' put: (Array with: (msgArray at: 2));
yourself ].
selector := ''.
args := OrderedCollection new.
aString
splitOn: Character space
do: [ :part |
part endsWithAColon
ifTrue: [ selector := selector, part ]
ifFalse: [ args add: part ] ].
answer
at: 'selector' put: selector asSymbol;
at: 'args' put: args asArray.
^ answer
]
{ #category : #updating }

View File

@ -0,0 +1,8 @@
"
A GrafoscopioUtilsTest is a test class for testing the behavior of GrafoscopioUtils
"
Class {
#name : #GrafoscopioUtilsTest,
#superclass : #TestCase,
#category : #'Grafoscopio-Utils-Tests'
}