1 ;;; pysk.scm -- implement Python output routines (for Sketch)
3 ;;; source file of the GNU LilyPond music typesetter
5 ;;; (c) 1998--2001 Jan Nieuwenhuizen <janneke@gnu.org>
6 ;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 (define-module (scm pysk)
11 :export (pysk-output-expression)
22 (define this-module (current-module))
23 (define (pysk-output-expression expr port)
24 (display (pythonify expr) port )
27 (define (ly-warn s) (display s))
31 ((string? q) (py-str q))
32 ((symbol? q) (py-str (symbol->string q)))
35 (not (eq? '() (cdr q)))
37 ((pair? q) (py-listify q))
38 ((number? q) (number->string q))
41 (ly-warn "Unknown object to pythonify:")
48 (string-append "'" s "'")
52 (string-append "(" (pythonify (car q)) "," (pythonify (cdr q)) ")")
55 (define (reduce-list list between)
56 "Create new list, inserting BETWEEN between elements of LIST"
59 (if (null? (cdr list))
62 (cons between (reduce-list (cdr list) between)))
66 (define (string-join str-list sep)
67 (apply string-append (reduce-list str-list sep))
74 (cons (f (car l)) (my-map f (cdr l)))
75 (cons (f (car l)) (f (cdr l)))
79 (define (tuplify-list lst)
83 (cons (car lst) (tuplify-list (cdr lst)))
84 (if (eq? '() (cdr lst))
86 (list (string-append "(" (car lst) ", " (cdr lst) ")" ))
90 (define (py-listify q)
94 (tuplify-list (my-map pythonify q)) ",")