mescc: Bugfix: output M1-strings if possible.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 21:42:18 +0000 (23:42 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 22:02:54 +0000 (00:02 +0200)
* module/mes/M1.mes (object->M1): Typo.  Also disallow \return in M1-strings.

module/mes/M1.mes

index 470a183863003aa78085a66b9fc03fc858ed10e5..0740e2aa34398fa762e6a90f88cdc6c69b529e50 100644 (file)
       (let* ((label (if (not (and (pair? (car o)) (eq? (caar o) #:string))) (car o)
                        (string->label (car o))))
              (data (cdr o))
-             (data (filter-map labelize data)))
+             (data (filter-map labelize data))
+             (len (length data))
+             (string-max (or (and=> (getenv "M1_STRING_MAX") string->number) 0)))
         (format #t "\n:~a\n" label)
-        (cond ((and (char? (car data))
-                    ;; FIXME: 0 in M1 strings
-                    (not (find (cut eq? #\nul <>) (list-head data (1- (length data)))))
-                    ;; FIXME: " in M1 strings
-                    (not (find (cut member <> '(#\" #\' #\backspace)) data))
-                    (eq? (last data)= #\nul))
+        (cond ((and (< len string-max)
+                    (char? (car data))
+                    (eq? (last data) #\nul)
+                    (not (find (cut memq <> '(#\nul #\backspace #\return #\" #\')) (list-head data (1- (length data))))))
                (format #t "\"~a\"" (list->string (list-head data (1- (length data))))))
               (else (format #t "~a" (string-join (map text->M1 data) " "))))
         (newline)))