PPPredicateObjectParser.st
changeset 405 0470a5e6e712
parent 387 e2b2ccaa4de6
child 427 a7f5e6de19d2
equal deleted inserted replaced
404:8da796db7f95 405:0470a5e6e712
    18 	^ self new initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString
    18 	^ self new initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString
    19 !
    19 !
    20 
    20 
    21 startOfLine
    21 startOfLine
    22 	
    22 	
    23 	^ PPStartOfLine new.
    23 	^ PPStartOfLineParser new.
    24 ! !
    24 ! !
    25 
    25 
    26 !PPPredicateObjectParser class methodsFor:'factory-chars'!
    26 !PPPredicateObjectParser class methodsFor:'factory-chars'!
    27 
    27 
    28 blank
    28 blank
    40 chars: aCollection message: aString
    40 chars: aCollection message: aString
    41 	^ self on: (PPCharSetPredicate on: [ :char | aCollection includes: char ]) message: aString
    41 	^ self on: (PPCharSetPredicate on: [ :char | aCollection includes: char ]) message: aString
    42 !
    42 !
    43 
    43 
    44 cr
    44 cr
    45         ^ self char: (Character codePoint: 13) message: 'carriage return expected'
    45 	^ self char: (Character codePoint: 13) message: 'carriage return expected'
    46 
       
    47     "Modified: / 03-10-2014 / 23:56:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    48 !
    46 !
    49 
    47 
    50 digit
    48 digit
    51 	^ self on: (PPCharSetPredicate on: [ :char | char isDigit ]) message: 'digit expected'
    49 	^ self on: (PPCharSetPredicate on: [ :char | char isDigit ]) message: 'digit expected'
    52 !
    50 !
    63 letter
    61 letter
    64 	^ self on: (PPCharSetPredicate on: [ :char | char isLetter ]) message: 'letter expected'
    62 	^ self on: (PPCharSetPredicate on: [ :char | char isLetter ]) message: 'letter expected'
    65 !
    63 !
    66 
    64 
    67 lf
    65 lf
    68 	^ self char: Character lf
    66 	^ self char: (Character codePoint: 10)
    69 !
    67 !
    70 
    68 
    71 lowercase
    69 lowercase
    72 	^ self on: (PPCharSetPredicate on: [ :char | char isLowercase ]) message: 'lowercase letter expected'
    70 	^ self on: (PPCharSetPredicate on: [ :char | char isLowercase ]) message: 'lowercase letter expected'
    73 !
    71 !
    74 
    72 
    75 newline
    73 newline
    76         ^ self chars: (String with: (Character codePoint: 13) with: (Character codePoint: 10)) message: 'newline expected'
    74 	^ self chars: (String with: (Character codePoint: 13) with: (Character codePoint: 10)) message: 'newline expected'
    77 
       
    78     "Modified: / 03-10-2014 / 23:56:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    79 !
    75 !
    80 
    76 
    81 punctuation
    77 punctuation
    82 	^ self chars: '.,"''?!!;:#$%&()*+-/<>=@[]\^_{}|~' message: 'punctuation expected'
    78 	^ self chars: '.,"''?!!;:#$%&()*+-/<>=@[]\^_{}|~' message: 'punctuation expected'
    83 !
    79 !
   122 	^ self
   118 	^ self
   123 		on: [ :each | each >= min and: [ each <= max ] ] message: min printString , '..' , max printString , ' expected'
   119 		on: [ :each | each >= min and: [ each <= max ] ] message: min printString , '..' , max printString , ' expected'
   124 		negated: [ :each | each < min or: [ each > max ] ] message: min printString , '..' , max printString , ' not expected'
   120 		negated: [ :each | each < min or: [ each > max ] ] message: min printString , '..' , max printString , ' not expected'
   125 !
   121 !
   126 
   122 
       
   123 endOfLine
       
   124 	
       
   125 	^ PPEndOfLineParser new.
       
   126 !
       
   127 
   127 expect: anObject
   128 expect: anObject
   128 	^ self expect: anObject message: anObject printString , ' expected'
   129 	^ self expect: anObject message: anObject printString , ' expected'
   129 !
   130 !
   130 
   131 
   131 expect: anObject message: aString
   132 expect: anObject message: aString
   132 	^ self 
   133 	^ self 
   133 		on: [ :each | each = anObject ] message: aString
   134 		on: [ :each | each = anObject ] message: aString
   134 		negated: [ :each | each ~= anObject ] message: 'no ' , aString
   135 		negated: [ :each | each ~= anObject ] message: 'no ' , aString
   135 ! !
   136 ! !
       
   137 
   136 
   138 
   137 !PPPredicateObjectParser methodsFor:'initialization'!
   139 !PPPredicateObjectParser methodsFor:'initialization'!
   138 
   140 
   139 initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString
   141 initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString
   140 	predicate := aBlock.
   142 	predicate := aBlock.