From e2199738537758ab8110fcbefe189648b5ddc51f Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Mon, 17 Feb 2014 17:57:27 -0500 Subject: [PATCH] Fix up quoting keywords. Fixes this: => :foo '\ufdd0:foo' => `:foo '\ufdd0\ufdd0:foo' --- hy/models/keyword.py | 5 ++++- tests/native_tests/language.hy | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/hy/models/keyword.py b/hy/models/keyword.py index f2633a9..6d25633 100644 --- a/hy/models/keyword.py +++ b/hy/models/keyword.py @@ -29,5 +29,8 @@ class HyKeyword(HyObject, str_type): """ def __new__(cls, value): - obj = str_type.__new__(cls, "\uFDD0" + value) + if not value.startswith("\uFDD0"): + value = "\uFDD0" + value + + obj = str_type.__new__(cls, value) return obj diff --git a/tests/native_tests/language.hy b/tests/native_tests/language.hy index cb75e66..5e6f6c7 100644 --- a/tests/native_tests/language.hy +++ b/tests/native_tests/language.hy @@ -983,3 +983,8 @@ (assert (is bar (get foo 1))) (setv (. foo [1] test) "hello") (assert (= (getattr (. foo [1]) "test") "hello"))) + +(defn test-keyword-quoting [] + "NATIVE: test keyword quoting magic" + (assert (= :foo "\ufdd0:foo")) + (assert (= `:foo "\ufdd0:foo")))