36 lines
679 B
Smalltalk
36 lines
679 B
Smalltalk
|
Class {
|
||
|
#name : #PPPreceedsParser,
|
||
|
#superclass : #PPDelegateParser,
|
||
|
#instVars : [
|
||
|
'length'
|
||
|
],
|
||
|
#category : #'PetitMarkdown-Parser'
|
||
|
}
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPPreceedsParser >> length [
|
||
|
^ length
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPPreceedsParser >> length: anObject [
|
||
|
length := anObject
|
||
|
]
|
||
|
|
||
|
{ #category : #'as yet unclassified' }
|
||
|
PPPreceedsParser >> parseOn: aPPContext [
|
||
|
| memento result |
|
||
|
(aPPContext position < length) ifTrue: [
|
||
|
^ PPFailure message: 'not enough space to preceed' context: aPPContext
|
||
|
].
|
||
|
|
||
|
memento := aPPContext position.
|
||
|
|
||
|
aPPContext skip: length negated.
|
||
|
result := parser parseOn: aPPContext.
|
||
|
|
||
|
aPPContext position: memento.
|
||
|
^ result
|
||
|
|
||
|
]
|