From d2fb9e00da881a8b2e2d6a62e79dbc834a472fdf Mon Sep 17 00:00:00 2001 From: Offray Luna Date: Sat, 16 Jul 2022 21:47:46 -0500 Subject: [PATCH] Improving Markdown support. --- .../BaselineOfMiniDocs.class.st | 2 +- src/MiniDocs/LePage.extension.st | 33 ++++++++++++++++++- src/MiniDocs/Markdown.class.st | 15 +++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/BaselineOfMiniDocs/BaselineOfMiniDocs.class.st b/src/BaselineOfMiniDocs/BaselineOfMiniDocs.class.st index 8f1d982..5f9710f 100644 --- a/src/BaselineOfMiniDocs/BaselineOfMiniDocs.class.st +++ b/src/BaselineOfMiniDocs/BaselineOfMiniDocs.class.st @@ -16,7 +16,7 @@ BaselineOfMiniDocs >> baseline: spec [ "Packages" spec - package: 'Markdeep' + package: 'MiniDocs' with: [ spec requires: #('Mustache') ] ]. spec diff --git a/src/MiniDocs/LePage.extension.st b/src/MiniDocs/LePage.extension.st index 11015de..1b3e5fd 100644 --- a/src/MiniDocs/LePage.extension.st +++ b/src/MiniDocs/LePage.extension.st @@ -36,11 +36,42 @@ LePage >> asMarkdeepFile [ ^ self asMarkdeep exportAsFileOn: folder / self markdeepFileName ] +{ #category : #'*MiniDocs' } +LePage >> asMarkdown [ + | bodyStream markdown | + bodyStream := '' writeStream. + bodyStream + nextPutAll: '---'; + nextPutAll: String lf. + self metadata keysAndValuesDo: [ :k :v | + bodyStream + nextPutAll: k , ': ' , v; + nextPutAll: String lf ]. + bodyStream nextPutAll: '---' , String lf , String lf. + self preorderTraversal + do: [ :snippet | bodyStream nextPutAll: snippet asMarkdown ]. + markdown := Markdown new contents: bodyStream contents. + ^ markdown +] + +{ #category : #'*MiniDocs' } +LePage >> asMarkdownFile [ + | folder | + folder := self options at: 'storage' ifAbsent: [ FileLocator temp ]. + ^ MarkupFile exportAsFileOn: folder / self markdownFileName containing: self asMarkdown contents +] + { #category : #'*MiniDocs' } LePage >> markdeepFileName [ + + ^ self markdownFileName , '.html' +] + +{ #category : #'*MiniDocs' } +LePage >> markdownFileName [ | sanitized | sanitized := self title asDashedLowercase copyWithoutAll: #($/). - ^ sanitized, '--',(self uidString copyFrom: 1 to: 5), '.md.html'. + ^ sanitized, '--',(self uidString copyFrom: 1 to: 5), '.md'. ] { #category : #'*MiniDocs' } diff --git a/src/MiniDocs/Markdown.class.st b/src/MiniDocs/Markdown.class.st index aea4669..da1c146 100644 --- a/src/MiniDocs/Markdown.class.st +++ b/src/MiniDocs/Markdown.class.st @@ -124,6 +124,14 @@ Markdown >> fromFile: aFileReference [ self file: aFileReference ] +{ #category : #accessing } +Markdown >> gtTextFor: aView [ + + ^ aView textEditor + title: 'Text'; + text: [ self contents ] +] + { #category : #utilities } Markdown >> lines [ ^ self contents lines. @@ -139,6 +147,13 @@ Markdown >> metadata [ ^ rawMeta ] +{ #category : #accessing } +Markdown >> printOn: aStream [ + super printOn: aStream. + aStream + nextPutAll: '( ', (self metadata at: 'title'), ' )' +] + { #category : #utilities } Markdown >> startsWithYAMLMetadataDelimiter [ ^ self lines first beginsWith: self class yamlMetadataDelimiter