112 lines
2.2 KiB
Smalltalk
112 lines
2.2 KiB
Smalltalk
|
Class {
|
||
|
#name : #PPCMList,
|
||
|
#superclass : #PPCMDelegateNode,
|
||
|
#instVars : [
|
||
|
'type',
|
||
|
'start'
|
||
|
],
|
||
|
#category : #'PetitMarkdown-AST'
|
||
|
}
|
||
|
|
||
|
{ #category : #visiting }
|
||
|
PPCMList >> accept: visitor [
|
||
|
^ visitor visitList: self
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> isBlockLevel [
|
||
|
^ true
|
||
|
]
|
||
|
|
||
|
{ #category : #'as yet unclassified' }
|
||
|
PPCMList >> isLooseItem: item [
|
||
|
| document size |
|
||
|
"empty item case"
|
||
|
(item children size == 0) ifTrue: [ ^ false ].
|
||
|
|
||
|
document := item child.
|
||
|
size := document children size.
|
||
|
|
||
|
size < 3 ifTrue: [ ^ false ].
|
||
|
|
||
|
(1 to: size - 2) do: [ :idx |
|
||
|
((document children at: idx) isBlockLevel and:
|
||
|
[(document children at: idx + 1) isBlankLine and:
|
||
|
[(document children at: idx + 2) isBlockLevel] ]) ifTrue: [ ^ true ]
|
||
|
].
|
||
|
^ false
|
||
|
]
|
||
|
|
||
|
{ #category : #'as yet unclassified' }
|
||
|
PPCMList >> isLooseList [
|
||
|
| size |
|
||
|
size := children size.
|
||
|
|
||
|
size < 3 ifTrue: [ ^ false ].
|
||
|
|
||
|
(1 to: size - 2) do: [ :idx |
|
||
|
((children at: idx) isBlockLevel and:
|
||
|
[(children at: idx + 1) isBlankLine and:
|
||
|
[(children at: idx + 2) isBlockLevel] ]) ifTrue: [ ^ true ]
|
||
|
].
|
||
|
^ false
|
||
|
]
|
||
|
|
||
|
{ #category : #'as yet unclassified' }
|
||
|
PPCMList >> isTight [
|
||
|
"blanks in the list?"
|
||
|
self isLooseList ifTrue: [
|
||
|
^ false
|
||
|
].
|
||
|
|
||
|
"blanks in the items?"
|
||
|
self children do: [ :listItem |
|
||
|
(self isLooseItem: listItem) ifTrue: [
|
||
|
^ false
|
||
|
]
|
||
|
].
|
||
|
^ true
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> start [
|
||
|
^ start
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> start: anObject [
|
||
|
start := anObject
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> type [
|
||
|
^ type
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> type: string [
|
||
|
type := string
|
||
|
]
|
||
|
|
||
|
{ #category : #accessing }
|
||
|
PPCMList >> viewBody [
|
||
|
|
||
|
| aText |
|
||
|
aText := (self className, ' type: ', self type) asRopedText.
|
||
|
|
||
|
self children do: [ :child |
|
||
|
aText append: ' ' asRopedText.
|
||
|
aText append: (child className asRopedText foreground:
|
||
|
BrGlamorousColors disabledButtonTextColor).
|
||
|
aText append: ('= "' asRopedText foreground:
|
||
|
BrGlamorousColors disabledButtonTextColor).
|
||
|
aText append: (child className asRopedText foreground:
|
||
|
BrGlamorousColors disabledButtonTextColor).
|
||
|
aText append:
|
||
|
('"' asRopedText foreground:
|
||
|
BrGlamorousColors disabledButtonTextColor) ].
|
||
|
|
||
|
|
||
|
^ aText
|
||
|
]
|