Extension { #name : #LePage } { #category : #'*Grafoscopio-Utils-Core' } LePage >> asMarkdeepInto: aFileLocator [ self preorderTraversal ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> detectParentSnippetWithUid: uidString [ "Answer a boolean indicating whether the supplied uid is present" ^ self preorderTraversal detect: [ :snippet | snippet uidString = uidString ] ifNone: [ ^ self ] ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> fileName [ ^ self title asDashedLowercase, '.', ((self uidString copyFrom: 1 to: 5 ) copyWithoutAll: '/'), '.md.html' ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> fromMarkdeepUrl: aString [ | docTree pageMetadata | docTree := GrafoscopioUtils xmlFromUrl: aString. pageMetadata := Markdeep new metadataFromXML: docTree. self basicUid: (pageMetadata at: 'id'); title: (pageMetadata at: 'title'); createTime: (pageMetadata at: 'created') asDateAndTime; editTime: (pageMetadata at: 'modified') asDateAndTime; createEmail: (pageMetadata at: 'creator'); editEmail: (pageMetadata at: 'modifier'); optionAt: 'metadata' put: pageMetadata. self populateChildrenFrom: (docTree xpath: '//div') ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> navTop [ | topNavFile | topNavFile := ((self optionAt: 'storage') / '_navtop.html'). topNavFile exists ifFalse: [ ^ '' ] ifTrue: [ ^ topNavFile contents ] ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> populateChildrenFrom: docTreeDivs [ docTreeDivs doWithIndex: [:div :i | | snippetTemp parent "surrogate" | snippetTemp := LeSnippet fromMetaMarkdeep:div. parent := self detectParentSnippetWithUid: (snippetTemp metadata at: 'parent'). parent snippetBuilder snippet: snippetTemp; add. ] ] { #category : #'*Grafoscopio-Utils-Core' } LePage >> removeSnippetsMetadata [ self preorderTraversal do: [ :snippet | (snippet options isNotNil and: [ snippet options includesKey: 'metadata' ]) ifTrue: [ snippet options removeKey: 'metadata' ] ] ]