50 lines
1.7 KiB
Smalltalk
50 lines
1.7 KiB
Smalltalk
Extension { #name : #XMLElement }
|
|
|
|
{ #category : #'*MiniDocs' }
|
|
XMLElement >> asSnippetDictionary [
|
|
| response |
|
|
response := STON fromString: (self attributes at: 'st-data').
|
|
response at: 'className' put: (self attributes at: 'st-class').
|
|
response at: 'content' put: self sanitizedContent.
|
|
^ response
|
|
]
|
|
|
|
{ #category : #'*MiniDocs' }
|
|
XMLElement >> sanitizedContent [
|
|
| className sanitizedText |
|
|
className := self attributes at: 'st-class'.
|
|
(className = 'LeTextSnippet')
|
|
ifTrue: [
|
|
sanitizedText := self contentString.
|
|
sanitizedText := sanitizedText allButFirst.
|
|
sanitizedText := sanitizedText allButLast.
|
|
].
|
|
(className = 'LePharoSnippet') ifTrue: [ | joinedText |
|
|
sanitizedText := self contentString lines.
|
|
sanitizedText := sanitizedText copyFrom: 4 to: sanitizedText size -2.
|
|
joinedText := '' writeStream.
|
|
sanitizedText do: [ :line | joinedText nextPutAll: line; nextPut: Character lf ].
|
|
sanitizedText := joinedText contents allButLast.
|
|
].
|
|
(className = 'LePictureSnippet')
|
|
ifTrue: [ | linkParser linkParserNodes|
|
|
linkParser := (PPCommonMarkBlockParser parse: self contentString allButFirst)
|
|
accept: CMBlockVisitor new.
|
|
linkParserNodes := linkParser children first children.
|
|
linkParserNodes size = 1
|
|
ifTrue: [ sanitizedText := linkParserNodes first label text ]
|
|
ifFalse: [
|
|
sanitizedText := '' writeStream.
|
|
linkParserNodes allButLast do: [:each |
|
|
each className = 'PPCMText'
|
|
ifTrue: [ sanitizedText nextPutAll: each text allButFirst ].
|
|
each className = 'PPCMLink'
|
|
ifTrue: [ sanitizedText nextPutAll: each printString ]
|
|
].
|
|
sanitizedText := sanitizedText contents
|
|
]
|
|
].
|
|
^ sanitizedText
|
|
|
|
]
|