From 5d5299e84e5129dcf4f8351a34b1d09735c76e86 Mon Sep 17 00:00:00 2001 From: Offray Date: Sun, 10 Dec 2023 12:49:28 -0500 Subject: [PATCH] Moving Pandoc to MiniDocs. --- repository/Grafoscopio-Utils/Pandoc.class.st | 146 ------------------- 1 file changed, 146 deletions(-) delete mode 100644 repository/Grafoscopio-Utils/Pandoc.class.st diff --git a/repository/Grafoscopio-Utils/Pandoc.class.st b/repository/Grafoscopio-Utils/Pandoc.class.st deleted file mode 100644 index ae1aecd..0000000 --- a/repository/Grafoscopio-Utils/Pandoc.class.st +++ /dev/null @@ -1,146 +0,0 @@ -" -I model the interaction between Pandoc and Grafoscopio. -" -Class { - #name : #Pandoc, - #superclass : #Object, - #classInstVars : [ - 'executable' - ], - #category : #'Grafoscopio-Utils-Core' -} - -{ #category : #'as yet unclassified' } -Pandoc class >> downloadLuaFilters [ - self luaFilters do: [ :filter | | filterUrl | - filterUrl := filter asUrl. - (FileLocator temp asFileReference / (filterUrl segments last)) exists - ifFalse: [ - ZnClient new - url: filterUrl; - downloadTo: FileLocator temp ] ] -] - -{ #category : #accessing } -Pandoc class >> executable [ - ^ executable ifNil: [ self executableLocation ] -] - -{ #category : #accessing } -Pandoc class >> executable: aFileReference [ - executable := aFileReference -] - -{ #category : #accessing } -Pandoc class >> executableLocation [ - | location | - location := '/usr/bin/pandoc'. - location asFileReference exists - ifTrue: [ ^ location ] - ifFalse: [ self definePandocExecutable ] -] - -{ #category : #utility } -Pandoc class >> extractImagesInUnixFor: aFileReference withFilter: aLuaFilter [ - "I use Pandoc Lua scripting capabilities to extract al images links in aFileReference" - - OSSUnixSubprocess new - command: 'pandoc'; - arguments: {aFileReference fullName . '--lua-filter=',aLuaFilter fullName }; - redirectStdout; - redirectStderr; - runAndWaitOnExitDo: [ :process :outString :errString | - process isSuccess - ifTrue: [ - ^ ((Soup fromString: outString) findAllTags: 'td') collect: [ :each | each next ] ] - ifFalse: [ - "OSSUnixProcessExitStatus has a nice #printOn: " - Transcript show: 'Command exit with error status: ', process exitStatusInterpreter printString; cr. - Transcript show: 'Stderr contents: ', errString. - ] - ] -] - -{ #category : #converters } -Pandoc class >> htmlToMarkdown: inputFile [ - - | outputFile | - outputFile := FileLocator temp / 'body.md'. - outputFile ensureDelete. - outputFile ensureCreateFile. - OSSUnixSubprocess new - command: 'pandoc'; - arguments: {'-f'. 'html'. '-t'. 'markdown'. '--atx-headers'. inputFile fullName. - '--output'. outputFile fullName }; - redirectStdout; - redirectStderr; - runAndWaitOnExitDo: [ :process :outString :errString | - process isSuccess - ifTrue: [ ^ outputFile contents ] - ifFalse: [ ^inputFile contents ] - ] -] - -{ #category : #'as yet unclassified' } -Pandoc class >> listImagesFrom: aFileReference [ - "I provide a list of all images contained in aFile." - - | filter commandString outputString | - filter := FileLocator temp asFileReference / 'image-links.lua'. - filter exists - ifFalse: [ self downloadLuaFilters ]. - commandString := 'pandoc ' , aFileReference fullName - , ' --lua-filter=' , filter fullName. - ^ self extractImagesInUnixFor: aFileReference withFilter: filter -] - -{ #category : #utility } -Pandoc class >> luaFilters [ - "I define the location of set of scripts, that allows to change the default behaviour of Pandoc - and/or the processing of supported markup languages. - - For more information about Lua filters see: - - https://pandoc.org/lua-filters.html - " - - | filters | - filters := OrderedCollection new. - filters - add: 'http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/Scripts/image-links.lua'. - ^ filters -] - -{ #category : #converters } -Pandoc class >> markdownToHtml: inputFile [ - - (Smalltalk os isUnix or: [ Smalltalk os isMacOS ]) ifTrue: [ ^ self markdownToHtmlOnUnix: inputFile ]. - Smalltalk os isWindows ifTrue: [ ^ self markdownToHtmlOnWindows: inputFile ]. -] - -{ #category : #converters } -Pandoc class >> markdownToHtmlOnUnix: inputFile [ - - | outputFile | - outputFile := FileLocator temp / (inputFile basenameWithoutExtension , '.html'). - outputFile ensureDelete. - outputFile ensureCreateFile. - OSSUnixSubprocess new - command: 'pandoc'; - arguments: {'-f'. 'markdown+startnum+task_lists'. '-t'. 'html'. inputFile fullName. - '--output'. outputFile fullName }; - redirectStdout; - redirectStderr; - runAndWaitOnExitDo: [ :process :outString :errString | - process isSuccess - ifTrue: [ ^ outputFile ] - ifFalse: [ ^ inputFile ] - ] -] - -{ #category : #converters } -Pandoc class >> markdownToHtmlOnWindows: inputFile [ - - "ToDo: This command still doesn't receive any arguments." - ^ (LibC resultOfCommand: 'pandoc ', inputFile fullName) correctAccentedCharacters. -]