diff --git a/project.clj b/project.clj index 6f8ad59..f656b4f 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject carocad/parcera "0.1.2" +(defproject carocad/parcera "0.1.3" :description "Grammar-based Clojure(script) parser" :url "https://github.com/carocad/parcera" :license {:name "LGPLv3" diff --git a/src/parcera/core.clj b/src/parcera/core.clj index 55dd7e4..506157f 100644 --- a/src/parcera/core.clj +++ b/src/parcera/core.clj @@ -114,9 +114,9 @@ ;; EDN reader says otherwise https://github.com/edn-format/edn#symbols ;; nil, true, false are actually symbols with special meaning ... not grammar rules ;; on their own - VALID-CHARACTERS>: #'[\\w.*+\\-!?$%&=<>\\':#]+' + VALID-CHARACTERS>: #'[^\\s\\(\\)\\[\\]{}\"@~]+' *) - : #'([\\p{L}\\w.*+\\-!?$%&=<>\\':#]+\\/)?(\\/|([\\p{L}\\w.*+\\-!?$%&=<>\\':#]+))(?!\\/)' + : #'([^\\s\\(\\)\\[\\]{}\"@~,\\\\]+\\/)?(\\/|([^\\s\\(\\)\\[\\]{}\"@~,\\\\]+))(?!\\/)' (* HIDDEN PARSERS ------------------------------------------------------ *) diff --git a/test/parcera/test/core.clj b/test/parcera/test/core.clj index 0bacd69..2e66da9 100644 --- a/test/parcera/test/core.clj +++ b/test/parcera/test/core.clj @@ -49,6 +49,17 @@ "high accuracy\n" (with-out-str (pprint/pprint result))))))) +(deftest unit-tests + (testing "names" + (as-> "foo" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "foo-bar" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "foo->bar" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "->" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "->as" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "föl" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "Öl" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "ϕ" input (is (= input (parcera/code (parcera/clojure input))))) + (as-> "❤️" input (is (= input (parcera/code (parcera/clojure input))))))) (deftest macros (testing "metadata"