From 977922d7a3bb1788f23c021b54a9e92ae324c864 Mon Sep 17 00:00:00 2001 From: Offray Luna Date: Thu, 11 Apr 2024 13:06:21 -0500 Subject: [PATCH] Enabling importation of Markdeep pages without page metadata. --- src/MiniDocs/LeDatabase.extension.st | 20 ++++++++++++-------- src/MiniDocs/LePage.extension.st | 8 ++++++++ src/MiniDocs/Markdeep.class.st | 4 +++- src/MiniDocs/Markdown.class.st | 4 +++- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/MiniDocs/LeDatabase.extension.st b/src/MiniDocs/LeDatabase.extension.st index 8ebc753..939688e 100644 --- a/src/MiniDocs/LeDatabase.extension.st +++ b/src/MiniDocs/LeDatabase.extension.st @@ -44,14 +44,18 @@ LeDatabase >> addPageFromMarkdeep: markdeepDocTree withRemote: externalDocLocati remoteMetadata at: 'origin' put: externalDocLocation. dataSnippets := self sanitizeMarkdeepSnippets: divSnippets withMetadata: remoteMetadata. snippets := dataSnippets collect: [ :each | each asLepiterSnippet ]. - page := LePage new - title: (remoteMetadata at: 'title'); - basicUid: (UUID fromString36: (remoteMetadata at: 'id')); - createTime: (LeTime new time: (remoteMetadata at: 'created') asDateAndTime); - editTime: (LeTime new time: (remoteMetadata at: 'modified') asDateAndTime); - latestEditTime: (LeTime new time: (remoteMetadata at: 'modified') asDateAndTime); - createEmail: (remoteMetadata at: 'creator'); - editEmail: (remoteMetadata at: 'modifier'). + page := LePage new. + page + title: (remoteMetadata at: 'title' ifAbsent: [ page detectMarkdeepTitleFrom: markdeepDocTree ]); + basicUid: (UUID fromString36: (remoteMetadata at: 'id' ifAbsent: [UUID new asString36])); + createTime: (LeTime new + time: (remoteMetadata at: 'created' ifAbsent: [ DateAndTime now]) asDateAndTime); + editTime: (LeTime new + time: (remoteMetadata at: 'modified' ifAbsent: [ DateAndTime now]) asDateAndTime); + latestEditTime: (LeTime new + time: (remoteMetadata at: 'modified' ifAbsent: [ DateAndTime now]) asDateAndTime); + createEmail: (remoteMetadata at: 'creator' ifAbsent: [ 'unknown' ]); + editEmail: (remoteMetadata at: 'modifier' ifAbsent: [ 'unknown' ]). snippets do: [ :snippet | "| currentParent |" page addSnippet: snippet. "currentParent := page detectParentSnippetWithUid: (snippet metadata at: 'parent'). diff --git a/src/MiniDocs/LePage.extension.st b/src/MiniDocs/LePage.extension.st index ba36168..ef917f2 100644 --- a/src/MiniDocs/LePage.extension.st +++ b/src/MiniDocs/LePage.extension.st @@ -94,6 +94,14 @@ LePage >> defaultPandocTemplate [ ^ FileLocator home / '.pandoc' / 'templates' / 'clean-menu-mod.html' ] +{ #category : #'*MiniDocs' } +LePage >> detectMarkdeepTitleFrom: xmlSubtree [ + | titleLine | + titleLine := (xmlSubtree nodesCollect: [:node | node contentString ]) first lines + detect: [:line | line includesSubstring: ' **'] ifNone: ['Untitled']. + ^ titleLine trimmed trimBoth: [:char | char = $* ] +] + { #category : #'*MiniDocs' } LePage >> detectParentSnippetWithUid: uidString [ uidString = self uid asString36 ifTrue: [ ^ self ]. diff --git a/src/MiniDocs/Markdeep.class.st b/src/MiniDocs/Markdeep.class.st index bac2dfc..73ffc5c 100644 --- a/src/MiniDocs/Markdeep.class.st +++ b/src/MiniDocs/Markdeep.class.st @@ -380,9 +380,11 @@ Markdeep >> options [ { #category : #printing } Markdeep >> printOn: aStream [ + | response | super printOn: aStream. + response := self title ifNil: [ 'Untitled' ]. aStream - nextPutAll: '( ', self title, ' )' + nextPutAll: '( ', response, ' )' ] { #category : #'instance creation' } diff --git a/src/MiniDocs/Markdown.class.st b/src/MiniDocs/Markdown.class.st index 4964521..e50190e 100644 --- a/src/MiniDocs/Markdown.class.st +++ b/src/MiniDocs/Markdown.class.st @@ -208,9 +208,11 @@ Markdown >> options [ { #category : #accessing } Markdown >> printOn: aStream [ + | response | super printOn: aStream. + response := self title ifNil: [ 'Untitled' ]. aStream - nextPutAll: '( ', self title , ' )' + nextPutAll: '( ', response , ' )' ] { #category : #accessing }