PPFlattenParser.st
changeset 0 739fe9b7253e
child 4 90de244a7fa2
equal deleted inserted replaced
-1:000000000000 0:739fe9b7253e
       
     1 "{ Package: 'squeak:petitparser' }"
       
     2 
       
     3 PPDelegateParser subclass:#PPFlattenParser
       
     4 	instanceVariableNames:''
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'PetitParser-Parsers'
       
     8 !
       
     9 
       
    10 PPFlattenParser comment:'A parser that answers a flat copy of the range my delegate parses.'
       
    11 !
       
    12 
       
    13 
       
    14 !PPFlattenParser methodsFor:'hooks'!
       
    15 
       
    16 create: aCollection start: aStartInteger stop: aStopInteger
       
    17 	^ aCollection copyFrom: aStartInteger to: aStopInteger
       
    18 ! !
       
    19 
       
    20 !PPFlattenParser methodsFor:'parsing'!
       
    21 
       
    22 parseOn: aStream
       
    23 	| start element stop |
       
    24 	start := aStream position.
       
    25 	element := parser parseOn: aStream.
       
    26 	element isPetitFailure ifTrue: [
       
    27 		aStream position: start.
       
    28 		^ element ].
       
    29 	stop := aStream position.
       
    30 	^ self create: aStream collection start: start + 1 stop: stop
       
    31 ! !
       
    32 
       
    33 !PPFlattenParser class methodsFor:'documentation'!
       
    34 
       
    35 version_SVN
       
    36     ^ '$Id: PPFlattenParser.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
       
    37 ! !