From e64acfac83e5d4150af630e6b0cc1ffc42279405 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 26 Apr 2021 14:07:51 +0530 Subject: Escape asterisk characters in scm->yaml. * ccwl/yaml.scm (display-atom): Escape asterisk characters. * tests/yaml.scm ("strings with asterisk characters should be escaped"): New test. --- ccwl/yaml.scm | 4 ++-- tests/yaml.scm | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ccwl/yaml.scm b/ccwl/yaml.scm index a891c60..19f26c2 100644 --- a/ccwl/yaml.scm +++ b/ccwl/yaml.scm @@ -54,9 +54,9 @@ ATOM is a symbol." ;; Escape string with double quotes if ;; - every character is a digit or period, and the unescaped ;; string can therefore be misinterpreted as a number - ;; - string contains the colon or hyphen characters + ;; - string contains the colon, hyphen or asterisk characters (if (or (string-every (char-set-union char-set:digit (char-set #\.)) atom) - (string-any (char-set #\: #\-) atom)) + (string-any (char-set #\: #\- #\*) atom)) (write atom port) (display atom port))) ((boolean? atom) diff --git a/tests/yaml.scm b/tests/yaml.scm index 073f1e5..70c6cea 100644 --- a/tests/yaml.scm +++ b/tests/yaml.scm @@ -34,4 +34,9 @@ bar: {} " (scm->yaml-string #("-1"))) +(test-equal "strings with asterisk characters should be escaped" + "- \"*foo\" +" + (scm->yaml-string #("*foo"))) + (test-end "yaml") -- cgit v1.2.3