(import (chibi) (chibi json) (chibi filesystem) (chibi process) (chibi pathname) (chibi app) (chibi string) (chibi io) (srfi 1) (srfi 16) (srfi 95)) (define debug #t) ;(define output-dir "output") ;(define target "GET_FROM_INPUT") ;(define sources (sort (directory-files (make-path target lang)) stringstring-or-fail call errmsg) (let* ((res (process->output+error+status call)) (out (first res)) (err (second res)) (strcall (string-join call " ")) (status (third res))) (if (= status 0) (begin (if debug (display (string-append "\nDEBUG: In call: " strcall "\n" err) (current-error-port))) out) (error (string-append "\n" errmsg "\nIn call: " strcall "\n" err))))) (define (read-meta file) (parse-json (process->string-or-fail `("./utils/yaml2json.py" ,file) "Error parsing Metadata file"))) ;TODO (define (pandoc-web-simple lang out folder) "Receives a list of files and an optional metadata file: (pandoc-web '(file1 file2 ...) metafile)" (define pandoc-call (case-lambda (() `("pandoc" "--to=html" "-o" ,out "--standalone" "--no-highlight" "--data-dir=." ,(string-append "--resource-path=templates/web:" folder) "--base-header-level=2" ;"--shift-heading-level-by=-1" is the new way "--template=web-simple.html" "--lua-filter=toc.lua" "--lua-filter=anchored-h.lua" "--lua-filter=appendixes.lua")) ((files) (append (pandoc-call) files)) ((files metafile) (append (pandoc-call files) `("--metadata-file" ,metafile))))) (process->string-or-fail (pandoc-call (directory-sources lang folder) (directory-meta lang folder)) "Error in web-page creation")) ; TODO (define (pandoc-web lang out folder) "Receives a list of files and an optional metadata file: (pandoc-web '(file1 file2 ...) metafile)" (define pandoc-call (case-lambda (() `("pandoc" "--to=html" "-o" ,out "--standalone" "--self-contained" "--base-header-level=2" ;"--shift-heading-level-by=-1" is the new way "--data-dir=." ,(string-append "--resource-path=./templates/web/:./templates:" folder) "--template=web.html" "--lua-filter=toc.lua" "--lua-filter=anchored-h.lua" "--lua-filter=appendixes.lua")) ((files) (append (pandoc-call) files)) ((files metafile) (append (pandoc-call files) `("--metadata-file" ,metafile))))) (process->string-or-fail (pandoc-call (directory-sources lang folder) (directory-meta lang folder)) "Error in web-page creation")) (define (pandoc-book lang out folder) "Receives a list of files and an optional metadata file: (pandoc-web '(file1 file2 ...) metafile)" (define pandoc-call (case-lambda (() `("pandoc" "-o" ,out "--standalone" "--pdf-engine=xelatex" "--data-dir=." ,(string-append "--resource-path=" folder) "--template=book.latex" "--lua-filter=appendixes.lua")) ((files) (append (pandoc-call) files)) ((files metafile) (append (pandoc-call files) `("--metadata-file" ,metafile))))) (process->string-or-fail (pandoc-call (directory-sources lang folder) (directory-meta lang folder)) "Error in book creation")) ;; RUN THIS LIKE: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define args (cdr (command-line))) (display (pandoc-web "es" "hola.html" (car args))) ;(display (pandoc-book "es" "hola.pdf" (car args))) ;(display (process->string-or-fail '("./utils/yaml2json.py" "src/Programming_in_Python/es/Metadata.yaml") "")) ;(display (cdr (assoc 'title (read-meta "src/Programming_in_Python/es/Metadata.yaml"))))