lilypond-common-includes/scm/yaml_parser.scm

13 lines
726 B
Scheme

(use-modules (ice-9 popen) (ice-9 textual-ports) (json parser))
(define (yml-file->scm filename)
(let* ((python_cmd (string-append "import sys, yaml, json; print(json.dumps(yaml.safe_load(open('" filename "'))))"))
; WTF? On Windows there is "py" and we need to specify the encoding, on linux there is "python3" or "python"
; but "python3" seems to work better. Be sure you have PyYAML installed.
(pipe (open-pipe (string-append "PYTHONHOME='' " (if windows? "py" "python3") " -X utf8 -c \"" python_cmd "\"") OPEN_READ))
(json (get-string-all pipe)))
(close-pipe pipe)
(json-string->scm json)))
(define (parse-yml-file filename) (resolve-inherits (yml-file->scm filename)))