From d5d052dc5a5ae22cd84b0656cd4b42885ceb798a Mon Sep 17 00:00:00 2001 From: Offray Luna Date: Sun, 23 Jan 2022 20:38:07 -0500 Subject: [PATCH] Markdeep exportation for Lepiter, early prototype. --- .../Grafoscopio-Utils/LePage.extension.st | 15 ++- .../LeTextualSnippet.extension.st | 41 ++++++++ .../Grafoscopio-Utils/Markdeep.class.st | 94 ++++++++++++++----- 3 files changed, 126 insertions(+), 24 deletions(-) create mode 100644 repository/Grafoscopio-Utils/LeTextualSnippet.extension.st diff --git a/repository/Grafoscopio-Utils/LePage.extension.st b/repository/Grafoscopio-Utils/LePage.extension.st index dfd1b89..260d2de 100644 --- a/repository/Grafoscopio-Utils/LePage.extension.st +++ b/repository/Grafoscopio-Utils/LePage.extension.st @@ -5,9 +5,10 @@ LePage >> asMarkdeep [ | bodyStream | bodyStream := '' writeStream. self preorderTraversal do: [:snippet | - bodyStream nextPutAll: snippet contentAsString; lf; lf. + bodyStream nextPutAll: snippet asMarkdeep ]. ^ Markdeep new + title: self title; body: bodyStream contents contents. ] @@ -17,3 +18,15 @@ LePage >> asMarkdeepInto: aFileLocator [ self preorderTraversal ] + +{ #category : #'*Grafoscopio-Utils-Core' } +LePage >> fileName [ + ^ self title asDashedLowercase, '.', ((self uidString copyFrom: 1 to: 5 ) copyWithoutAll: '/'), '.md.html' +] + +{ #category : #'*Grafoscopio-Utils-Core' } +LePage >> markdeepTemporalFile [ + | fileName | + fileName := self title asDashedLowercase, '.',(self uidString copyFrom: 1 to: 5), '.md.html'. + ^ FileLocator temp / fileName. +] diff --git a/repository/Grafoscopio-Utils/LeTextualSnippet.extension.st b/repository/Grafoscopio-Utils/LeTextualSnippet.extension.st new file mode 100644 index 0000000..7821bde --- /dev/null +++ b/repository/Grafoscopio-Utils/LeTextualSnippet.extension.st @@ -0,0 +1,41 @@ +Extension { #name : #LeTextualSnippet } + +{ #category : #'*Grafoscopio-Utils-Core' } +LeTextualSnippet >> asMarkdeep [ + | output | + output := '' writeStream. + output + nextPutAll: '
'; lf; + nextPutAll: self markdeepCustomOpener; + nextPutAll: self contentAsString; lf; + nextPutAll: self markdeepCustomCloser; + nextPutAll: '
'; lf; lf. + ^ output contents +] + +{ #category : #'*Grafoscopio-Utils-Core' } +LeTextualSnippet >> childrenIds [ + ^ self children select: [ :each | each uidString ] +] + +{ #category : #'*Grafoscopio-Utils-Core' } +LeTextualSnippet >> markdeepCustomCloser [ + ^ '' +] + +{ #category : #'*Grafoscopio-Utils-Core' } +LeTextualSnippet >> markdeepCustomOpener [ + ^ '' +] + +{ #category : #'*Grafoscopio-Utils-Core' } +LeTextualSnippet >> metadata [ + ^ OrderedDictionary new + at:'id' put: self uidString; + at: 'created' put: self createTime asString; + at: 'edited' put: self latestEditTime asString; + at: 'creator' put: self createEmail asString; + at: 'editor' put: self editEmail asString; + yourself. +] diff --git a/repository/Grafoscopio-Utils/Markdeep.class.st b/repository/Grafoscopio-Utils/Markdeep.class.st index 94b28ea..7e67181 100644 --- a/repository/Grafoscopio-Utils/Markdeep.class.st +++ b/repository/Grafoscopio-Utils/Markdeep.class.st @@ -5,15 +5,14 @@ Class { #name : #Markdeep, #superclass : #Object, #instVars : [ + 'title', + 'body', 'tocStyle', 'comments', 'header', 'tail', - 'body', 'language', - 'markdownFile', - 'config', - 'title' + 'config' ], #category : #'Grafoscopio-Utils-Core' } @@ -72,14 +71,27 @@ Markdeep >> commentsSupport [ ^ self commentsProviderStrings at: self commentsProvider ] +{ #category : #accessing } +Markdeep >> config [ + + ^ config +] + +{ #category : #accessing } +Markdeep >> config: aDictionary [ + + config := aDictionary +] + { #category : #'instance creation' } Markdeep >> contents [ | output | output := '' writeStream. output - nextPutAll: self header; crlf; - nextPutAll: self body; crlf; - nextPutAll: self tail; crlf; crlf; + nextPutAll: self header; lf; lf; + nextPutAll: ' **', self title, '**'; lf; lf; + nextPutAll: self body; lf; lf; + nextPutAll: self tail; lf; lf; lf; lf; nextPutAll: self commentsSupport. ^ output contents. ] @@ -97,7 +109,8 @@ Markdeep >> exportAsFileOn: aFileReference [ aFileReference exists ifFalse: [ aFileReference ensureCreateFile ]. aFileReference writeStreamDo: [ :stream | stream nextPutAll: self contents ]. - self inform: 'Exported as: ', String cr, aFileReference fullName + self inform: 'Exported as: ', String cr, aFileReference fullName. + ^ aFileReference ] { #category : #utilities } @@ -115,6 +128,14 @@ Markdeep >> fromMarkdownFile: aFileReference [ ^ self. ] +{ #category : #accessing } +Markdeep >> gtTextFor: aView [ + + ^ aView textEditor + title: 'Text'; + text: [ self contents ] +] + { #category : #accessing } Markdeep >> header [ ^ self fontAwesomeHeader @@ -135,15 +156,32 @@ Markdeep >> language: anObject [ language := anObject ] +{ #category : #accessing } +Markdeep >> markdeepScriptTag [ + ^ ' +' +] + { #category : #accessing } Markdeep >> markdownFile [ - ^ markdownFile + ^ self config at: 'markdownFile' ] { #category : #accessing } Markdeep >> markdownFile: aFileReference [ - "I provide information about which Markdown file was used to generate the Markdeep body" - markdownFile := aFileReference + "Where the Mardown file associated with me is stored. Used for sync. and import/export purposes." + self config at: 'markdownFile' put: aFileReference +] + +{ #category : #printing } +Markdeep >> printOn: aStream [ + + super printOn: aStream. + aStream + nextPutAll: '( ', self title, ' )' ] { #category : #'instance creation' } @@ -158,17 +196,15 @@ Markdeep >> processMarkdownFor: aFileReference [ { #category : #accessing } Markdeep >> tail [ "I enable the document tail, which, in turn, enables a Markdeep document" - ^ ' - - - - - - - ' + | output | + output := '' writeStream. + output + nextPutAll: ''; lf; lf; + nextPutAll: ''; lf; + nextPutAll: ''; lf; + nextPutAll: self markdeepScriptTag; lf; + nextPutAll: ''. + ^ output contents ] { #category : #accessing } @@ -176,9 +212,21 @@ Markdeep >> tail: anObject [ tail := anObject ] +{ #category : #accessing } +Markdeep >> title [ + + ^ title +] + +{ #category : #accessing } +Markdeep >> title: anObject [ + + title := anObject +] + { #category : #accessing } Markdeep >> tocStyle [ - ^ tocStyle + ^ tocStyle ifNil: [ tocStyle := 'short' ] ] { #category : #accessing }