From ad806d01fee4d9a72e5c8b2c4ec4b9a9e76060fb Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 7 Apr 2004 10:44:56 +0000 Subject: [PATCH] (get-coding-filename, get-coding-command): New function. (coding-alist): Also hold filename, command. (read-encoding-file): Return symbols. --- ChangeLog | 7 +++++++ scm/encoding.scm | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45e66a739e..d5b379cacb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-04-07 Jan Nieuwenhuizen + + * scm/encoding.scm (get-coding-filename, get-coding-command): New + function. + (coding-alist): Also hold filename, command. + (read-encoding-file): Return symbols. + 2004-04-06 Han-Wen Nienhuys * scm/output-tex.scm: remove fontify; text and char take a font diff --git a/scm/encoding.scm b/scm/encoding.scm index fe3b4028bc..310bf150dd 100644 --- a/scm/encoding.scm +++ b/scm/encoding.scm @@ -11,14 +11,16 @@ (define-public (read-encoding-file filename) - "Read .enc file, return as a vector of symbols." + "Read .enc file, return (COMMAND-NAME . VECTOR-OF-SYMBOLS)." (let* ((raw (ly:kpathsea-gulp-file filename)) (string (regexp-substitute/global #f "%[^\n]*" raw 'pre "" 'post)) - (start (string-index string #\[)) - (end (string-index string #\])) - (ps-lst (string-tokenize (substring string (+ start 1) end))) - (lst (map (lambda (x) (substring x 1)) ps-lst))) - (list->vector lst))) + (command (match:substring + (string-match "/([^ \t\n\r]*)[ \t\n\r]+[[]" string) 1)) + (encoding (match:substring (string-match "[[](.*)[]]" string) 1)) + (ps-lst (string-tokenize encoding)) + (lst (map (lambda (x) (string->symbol (substring x 1))) ps-lst)) + (vector (list->vector lst))) + (cons command vector))) (define (make-encoding-table encoding-vector) "Return a hash table mapping names to chars. ENCODING-VECTOR is a @@ -58,16 +60,18 @@ vector of symbols." (define (get-coding-from-file filename) "Read FILENAME, return a list containing encoding vector and table" - (let* ((vec (read-encoding-file filename)) + (let* ((coding (read-encoding-file filename)) + (com (car coding)) + (vec (cdr coding)) (tab (make-encoding-table vec))) - (list vec tab))) + (list com vec tab))) -;; coding-alist maps NAME -> (list VECTOR TAB) +;; coding-alist maps NAME -> (list FILENAME COMMAND VECTOR TAB) (define coding-alist (map (lambda (x) (cons (car x) - (delay (get-coding-from-file (cdr x))))) + (cons (cdr x) (delay (get-coding-from-file (cdr x)))))) '( ;; teTeX @@ -95,16 +99,21 @@ vector of symbols." )) (define (get-coding coding-name) - (force (assoc-get coding-name coding-alist ))) + (let ((entry (assoc-get coding-name coding-alist))) + (cons (car entry) (force (cdr entry))))) -(define-public (get-coding-vector coding-name) +(define-public (get-coding-filename coding-name) + (format (current-error-port) "FILENAME: ~S\n" (get-coding coding-name)) (car (get-coding coding-name))) -(define-public (get-coding-table coding-name) +(define-public (get-coding-command coding-name) + (format (current-error-port) "COMMAND: ~S\n" (get-coding coding-name)) (cadr (get-coding coding-name))) +(define-public (get-coding-vector coding-name) + (format (current-error-port) "VECTOR: ~S\n" (get-coding coding-name)) + (caddr (get-coding coding-name))) -;;; JUNKME -;;; what's this for? --hwn -;; (define-public (encoded-index font-coding input-coding code) -;; This was used by simplistic first incarnation of reencode-string --jcn +(define-public (get-coding-table coding-name) + (format (current-error-port) "TABLE: ~S\n" (get-coding coding-name)) + (cadddr (get-coding coding-name))) -- 2.39.2