45 lines
1.2 KiB
Smalltalk
45 lines
1.2 KiB
Smalltalk
Extension { #name : #LePage }
|
|
|
|
{ #category : #'*Markdeep' }
|
|
LePage >> asMarkdeep [
|
|
| bodyStream markdeep |
|
|
bodyStream := '' writeStream.
|
|
self preorderTraversal do: [:snippet |
|
|
bodyStream nextPutAll: snippet asMarkdeep
|
|
].
|
|
markdeep := Markdeep new
|
|
title: self title;
|
|
body: bodyStream contents;
|
|
navTop: self navTop.
|
|
self metadata keysAndValuesDo: [:k :v |
|
|
k = 'lang'
|
|
ifTrue: [
|
|
markdeep head
|
|
add: '<meta lang="', v,'">';
|
|
yourself.
|
|
]
|
|
ifFalse: [
|
|
markdeep head
|
|
add: '<meta name="', k, '" content="', v,'">';
|
|
yourself.
|
|
]
|
|
].
|
|
self metadata at: 'authors' ifPresent: [:author | markdeep metadata at: 'authors' put: author ].
|
|
self metadata at: 'version' ifPresent: [:version | markdeep metadata at: 'version' put: version ].
|
|
^ markdeep.
|
|
]
|
|
|
|
{ #category : #'*Markdeep' }
|
|
LePage >> asMarkdeepFile [
|
|
| folder |
|
|
folder := self options at: 'storage' ifAbsent: [ FileLocator temp ].
|
|
^ self asMarkdeep exportAsFileOn: folder / self markdeepFileName
|
|
]
|
|
|
|
{ #category : #'*Markdeep' }
|
|
LePage >> markdeepFileName [
|
|
| sanitized |
|
|
sanitized := self title asDashedLowercase copyWithoutAll: #($/).
|
|
^ sanitized, '--',(self uidString copyFrom: 1 to: 5), '.md.html'.
|
|
]
|