Extension { #name : #LePictureSnippet } { #category : #'*MiniDocs' } LePictureSnippet >> asMarkdeep [ | output curatedCaption captionLines | captionLines := self caption lines. (captionLines size <= 1) ifTrue: [ curatedCaption := caption ] ifFalse: [ curatedCaption := WriteStream on: ''. curatedCaption nextPutAll: captionLines first. captionLines allButFirstDo: [:line | curatedCaption nextPutAll: ' ', line. curatedCaption := curatedCaption contents. ] ]. output := WriteStream on: ''. output nextPutAll: self metadataDiv; nextPutAll: '![ ', curatedCaption ,' ](', self urlString, ')'; nextPut: Character lf; nextPutAll: ''; nextPut: Character lf; nextPut: Character lf. ^ output contents ] { #category : #'*MiniDocs' } LePictureSnippet >> fromMarkdeep: markdeepDiv [ ^ markdeepDiv asSnippetDictionary asLepiterSnippet ] { #category : #'*MiniDocs' } LePictureSnippet >> fromString: aString [ "aString should be a valid Markdown/Markdeep image string" | args captionTemp urlTemp | args := aString splitOn: ']('. captionTemp := args first. captionTemp := captionTemp copyFrom: 3 to: captionTemp size. urlTemp := args second. urlTemp := urlTemp copyFrom: 1 to: urlTemp size - 1. self caption: captionTemp. self urlString: urlTemp. ^ self ] { #category : #'*MiniDocs' } LePictureSnippet >> metadata [ ^ self optionAt: 'metadata' ifAbsentPut: [ self metadataUpdate ] ] { #category : #'*MiniDocs' } LePictureSnippet >> metadataDiv [ | output | output := WriteStream on: ''. output nextPutAll: '
'; nextPut: Character lf. ^ output contents withInternetLineEndings. ] { #category : #'*MiniDocs' } LePictureSnippet >> metadataUpdate [ | surrogate | self parent ifNil: [ surrogate := nil] ifNotNil: [ surrogate := self parent uidString ]. ^ OrderedDictionary new at: 'id' put: self uidString; at: 'parent' put: surrogate; at: 'created' put: self createTime asString; at: 'modified' put: self latestEditTime asString; at: 'creator' put: self createEmail asString withoutXMLTagDelimiters; at: 'modifier' put: self editEmail asString withoutXMLTagDelimiters; yourself ] { #category : #'*MiniDocs' } LePictureSnippet >> sanitizeMetadata [ self metadata keysAndValuesDo: [:k :v | (v includesAny: #($< $>)) ifTrue: [ self metadata at: k put: (v copyWithoutAll: #($< $>)) ] ] ]