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: [ linkParserNodes first className = 'PPCMLink' ifTrue: [ sanitizedText := linkParserNodes first label text] ifFalse: [ sanitizedText := (linkParserNodes first text splitOn: '](') first. sanitizedText := sanitizedText copyReplaceAll: '![' with: '' ] ] 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 ]