Compare commits

..

10 Commits

4 changed files with 43 additions and 15 deletions

View File

@ -23,6 +23,30 @@ FileLocator class >> atAlias: aString put: aFolderOrFile [
^ updatedAliases ^ updatedAliases
] ]
{ #category : #'*MiniDocs' }
FileLocator >> extractMetadata [
"I package the functionality from [[How to extract meta information using ExifTool]],
from the GToolkit Book.
I depend on the external tool ExifTool."
| process variablesList |
process := GtSubprocessWithInMemoryOutput new
command: 'exiftool';
arguments: { self fullName}.
process errorBlock: [ :proc | ^ self error: 'Failed to run exiftool' ].
process runAndWait.
variablesList := process stdout lines collect: [ :currentLine |
| separatorIndex name value |
separatorIndex := currentLine indexOf: $:.
name := (currentLine copyFrom: 1 to: separatorIndex - 1) trimBoth.
value := (currentLine
copyFrom: separatorIndex + 1
to: currentLine size) trimBoth.
name -> value
].
^ variablesList asOrderedDictionary
]
{ #category : #'*MiniDocs' } { #category : #'*MiniDocs' }
FileLocator class >> fileAliases [ FileLocator class >> fileAliases [
^ MiniDocs appFolder / 'fileAliases.ston' ^ MiniDocs appFolder / 'fileAliases.ston'

View File

@ -37,7 +37,9 @@ HedgeDoc >> asLePage [
addSnippet: snippet; addSnippet: snippet;
yourself. yourself.
newPage incomingLinks. newPage incomingLinks.
newPage metadata addAll: self metadata. newPage options
at: 'originalMetadata' put: self metadata;
at: 'url' put: self url.
^ newPage ^ newPage
] ]
@ -162,7 +164,6 @@ HedgeDoc >> url: anObject [
(html xpath: '//head/meta[@name="application-name"][@content = "HedgeDoc - Ideas grow better together"]') isEmpty (html xpath: '//head/meta[@name="application-name"][@content = "HedgeDoc - Ideas grow better together"]') isEmpty
ifTrue: [ self inform: 'Not a hedgedoc url'. ifTrue: [ self inform: 'Not a hedgedoc url'.
url := nil ]. url := nil ].
self metadata at: 'title' put: tempUrl firstPathSegment.
server := tempUrl host. server := tempUrl host.
url := anObject url := anObject
] ]

View File

@ -50,7 +50,7 @@ Markdown >> body: aString [
{ #category : #operation } { #category : #operation }
Markdown >> commentYAMLMetadata [ Markdown >> commentYAMLMetadata [
| newContents | | newContents |
self detectYAMLMetadata ifFalse: [ ^ self ]. self contents detectYAMLMetadata ifFalse: [ ^ self ].
newContents := '' writeStream. newContents := '' writeStream.
newContents nextPutAll: '<!--@yaml'; lf. newContents nextPutAll: '<!--@yaml'; lf.
newContents nextPutAll: self yamlMetadataString. newContents nextPutAll: self yamlMetadataString.
@ -160,7 +160,10 @@ Markdown >> fromFile: aFileReference [
{ #category : #'instance creation' } { #category : #'instance creation' }
Markdown >> fromString: markdownString [ Markdown >> fromString: markdownString [
markdownString yamlMetadata markdownString yamlMetadata
ifNotNil: [(self metadata) at: 'original' put: markdownString yamlMetadata]. ifNotNil: [
self metadata
ifEmpty: [self metadata: markdownString yamlMetadata]
ifNotEmpty: [self metadata at: 'original' put: markdownString yamlMetadata]].
self body: markdownString contentsWithoutYAMLMetadata self body: markdownString contentsWithoutYAMLMetadata
] ]
@ -191,6 +194,7 @@ Markdown >> metadata [
^ metadata ifNil: [ metadata := Dictionary new]. ^ metadata ifNil: [ metadata := Dictionary new].
] ]
{ #category : #accessing } { #category : #accessing }
@ -230,3 +234,8 @@ Markdown >> printOn: aStream [
Markdown >> title [ Markdown >> title [
^ title ifNil: [ title:= self headerAsTitle ] ^ title ifNil: [ title:= self headerAsTitle ]
] ]
{ #category : #accessing }
Markdown >> title: aString [
title := aString
]

View File

@ -147,17 +147,11 @@ Pandoc class >> markdownToHtmlOnUnix: inputFile [
outputFile := inputFile parent / (inputFile basenameWithoutExtension , '.html'). outputFile := inputFile parent / (inputFile basenameWithoutExtension , '.html').
outputFile ensureDelete. outputFile ensureDelete.
outputFile ensureCreateFile. outputFile ensureCreateFile.
OSSUnixSubprocess new GtSubprocessWithInMemoryOutput new
command: 'pandoc'; shellCommand: 'pandoc -f markdown+startnum+task_lists --standalone -t html ', inputFile fullName, ' --output ', outputFile fullName;
arguments: {'-f'. 'markdown+startnum+task_lists'. '--standalone'. '-t'. 'html'. inputFile fullName. runAndWait;
'--output'. outputFile fullName }; stdout.
redirectStdout; ^ outputFile.
redirectStderr;
runAndWaitOnExitDo: [ :process :outString :errString |
process isSuccess
ifTrue: [ ^ outputFile ]
ifFalse: [ ^ inputFile ]
]
] ]
{ #category : #converters } { #category : #converters }