76 lines
1.5 KiB
Smalltalk
76 lines
1.5 KiB
Smalltalk
Class {
|
|
#name : #PubPubGrammar,
|
|
#superclass : #PP2CompositeNode,
|
|
#instVars : [
|
|
'document',
|
|
'link',
|
|
'linkLabel',
|
|
'linkContent',
|
|
'imageLinkLabel',
|
|
'imageLinkContent',
|
|
'alternativeImages',
|
|
'imageLink'
|
|
],
|
|
#category : #'MiniDocs-Model'
|
|
}
|
|
|
|
{ #category : #accessing }
|
|
PubPubGrammar >> alternativeImages [
|
|
^ self linkContent
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPubGrammar >> document [
|
|
^ (link / imageLink ) islandInSea star
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> imageLink [
|
|
^ imageLinkLabel, imageLinkContent, alternativeImages
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> imageLinkContent [
|
|
^ '(' asPParser, #any asPParser starLazy flatten, ')' asPParser ==> #second
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> imageLinkLabel [
|
|
|
|
| label |
|
|
label := ("$] asPParser not /" #any asPParser) starLazy flatten.
|
|
^ '![' asPParser, label, ']' asPParser ==> #second.
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPubGrammar >> imageLinkSea [
|
|
^ imageLink sea ==> #second
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> link [
|
|
^ linkLabel, linkContent
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> linkContent [
|
|
^ '{' asPParser, #any asPParser starLazy flatten, '}' asPParser ==> #second.
|
|
]
|
|
|
|
{ #category : #links }
|
|
PubPubGrammar >> linkLabel [
|
|
| label |
|
|
label := ("$] asPParser not /" #any asPParser) starLazy flatten.
|
|
^ $[ asPParser, label, $] asPParser ==> #second.
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPubGrammar >> linkSea [
|
|
^ link sea ==> #second
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PubPubGrammar >> start [
|
|
^ document
|
|
]
|