PPTrimmingParser.st
changeset 0 739fe9b7253e
child 4 90de244a7fa2
equal deleted inserted replaced
-1:000000000000 0:739fe9b7253e
       
     1 "{ Package: 'squeak:petitparser' }"
       
     2 
       
     3 PPDelegateParser subclass:#PPTrimmingParser
       
     4 	instanceVariableNames:'trimmer'
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'PetitParser-Parsers'
       
     8 !
       
     9 
       
    10 PPTrimmingParser comment:'A parser that silently consumes spaces before and after the delegate parser.'
       
    11 !
       
    12 
       
    13 
       
    14 !PPTrimmingParser class methodsFor:'instance creation'!
       
    15 
       
    16 on: aParser trimmer: aTrimParser
       
    17 	^ self new
       
    18 		setParser: aParser;
       
    19 		setTrimmer: aTrimParser;
       
    20 		yourself
       
    21 ! !
       
    22 
       
    23 !PPTrimmingParser methodsFor:'initialization'!
       
    24 
       
    25 setTrimmer: aParser
       
    26 	trimmer := aParser
       
    27 ! !
       
    28 
       
    29 !PPTrimmingParser methodsFor:'operations'!
       
    30 
       
    31 trim
       
    32 	"There is no point in trimming more than once."
       
    33 
       
    34 	^ self
       
    35 ! !
       
    36 
       
    37 !PPTrimmingParser methodsFor:'parsing'!
       
    38 
       
    39 parseOn: aStream
       
    40 	| position element |
       
    41 	position := aStream position.
       
    42 	[ (trimmer parseOn: aStream) isPetitFailure ]
       
    43 		whileFalse.
       
    44 	element := parser parseOn: aStream.
       
    45 	element isPetitFailure ifTrue: [
       
    46 		aStream position: position.
       
    47 		^ element ].
       
    48 	[ (trimmer parseOn: aStream) isPetitFailure ]
       
    49 		whileFalse.
       
    50 	^ element
       
    51 ! !
       
    52 
       
    53 !PPTrimmingParser class methodsFor:'documentation'!
       
    54 
       
    55 version_SVN
       
    56     ^ '$Id: PPTrimmingParser.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
       
    57 ! !