From b1f3db78ed10458d8871c92e85956060d4d50f2e Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Sun, 7 Feb 2021 13:46:30 +0100 Subject: [PATCH] add csk --- deps.edn | 4 +- .../babashka/impl/csk.clj | 41 +++++++++++++++++++ project.clj | 3 ++ script/compile | 1 + script/uberjar | 8 ++++ script/uberjar.bat | 6 +++ src/babashka/impl/features.clj | 4 ++ src/babashka/main.clj | 4 +- 8 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 feature-camel-snake-kebab/babashka/impl/csk.clj diff --git a/deps.edn b/deps.edn index be01e738..94128043 100644 --- a/deps.edn +++ b/deps.edn @@ -7,6 +7,7 @@ "feature-hiccup" "feature-test-check" "feature-spec-alpha" + "feature-camel-snake-kebab" "pods/src" "babashka.nrepl/src" "depstar/src" "process/src" @@ -34,7 +35,8 @@ babashka/clojure-lanterna {:mvn/version "0.9.8-SNAPSHOT"} org.clojure/math.combinatorics {:mvn/version "0.1.6"} org.clojure/core.match {:mvn/version "1.0.0"} - hiccup/hiccup {:mvn/version "2.0.0-alpha2"}} + hiccup/hiccup {:mvn/version "2.0.0-alpha2"} + camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"}} :aliases {:main {:main-opts ["-m" "babashka.main"]} :profile diff --git a/feature-camel-snake-kebab/babashka/impl/csk.clj b/feature-camel-snake-kebab/babashka/impl/csk.clj new file mode 100644 index 00000000..115d7e99 --- /dev/null +++ b/feature-camel-snake-kebab/babashka/impl/csk.clj @@ -0,0 +1,41 @@ +(ns babashka.impl.csk + {:no-doc true} + (:require [camel-snake-kebab.core :as csk] + [sci.core :as sci])) + +(def cns (sci/create-ns 'camel.snake.kabe nil)) + +#_(do (require '[camel-snake-kebab.core]) + (doseq [k (sort (keys (ns-publics 'camel-snake-kebab.core)))] + (println (str "'" k) (format "(sci/copy-var csk/%s cns)" k)))) + +(def csk-namespace + {'->Camel_Snake_Case (sci/copy-var csk/->Camel_Snake_Case cns) + '->Camel_Snake_Case_Keyword (sci/copy-var csk/->Camel_Snake_Case_Keyword cns) + '->Camel_Snake_Case_String (sci/copy-var csk/->Camel_Snake_Case_String cns) + '->Camel_Snake_Case_Symbol (sci/copy-var csk/->Camel_Snake_Case_Symbol cns) + '->HTTP-Header-Case (sci/copy-var csk/->HTTP-Header-Case cns) + '->HTTP-Header-Case-Keyword (sci/copy-var csk/->HTTP-Header-Case-Keyword cns) + '->HTTP-Header-Case-String (sci/copy-var csk/->HTTP-Header-Case-String cns) + '->HTTP-Header-Case-Symbol (sci/copy-var csk/->HTTP-Header-Case-Symbol cns) + '->PascalCase (sci/copy-var csk/->PascalCase cns) + '->PascalCaseKeyword (sci/copy-var csk/->PascalCaseKeyword cns) + '->PascalCaseString (sci/copy-var csk/->PascalCaseString cns) + '->PascalCaseSymbol (sci/copy-var csk/->PascalCaseSymbol cns) + '->SCREAMING_SNAKE_CASE (sci/copy-var csk/->SCREAMING_SNAKE_CASE cns) + '->SCREAMING_SNAKE_CASE_KEYWORD (sci/copy-var csk/->SCREAMING_SNAKE_CASE_KEYWORD cns) + '->SCREAMING_SNAKE_CASE_STRING (sci/copy-var csk/->SCREAMING_SNAKE_CASE_STRING cns) + '->SCREAMING_SNAKE_CASE_SYMBOL (sci/copy-var csk/->SCREAMING_SNAKE_CASE_SYMBOL cns) + '->camelCase (sci/copy-var csk/->camelCase cns) + '->camelCaseKeyword (sci/copy-var csk/->camelCaseKeyword cns) + '->camelCaseString (sci/copy-var csk/->camelCaseString cns) + '->camelCaseSymbol (sci/copy-var csk/->camelCaseSymbol cns) + '->kebab-case (sci/copy-var csk/->kebab-case cns) + '->kebab-case-keyword (sci/copy-var csk/->kebab-case-keyword cns) + '->kebab-case-string (sci/copy-var csk/->kebab-case-string cns) + '->kebab-case-symbol (sci/copy-var csk/->kebab-case-symbol cns) + '->snake_case (sci/copy-var csk/->snake_case cns) + '->snake_case_keyword (sci/copy-var csk/->snake_case_keyword cns) + '->snake_case_string (sci/copy-var csk/->snake_case_string cns) + '->snake_case_symbol (sci/copy-var csk/->snake_case_symbol cns) + 'convert-case (sci/copy-var csk/convert-case cns)}) diff --git a/project.clj b/project.clj index b91000a0..c424a6b1 100644 --- a/project.clj +++ b/project.clj @@ -53,6 +53,8 @@ :dependencies [[hiccup/hiccup "2.0.0-alpha2"]]} :feature/test-check {:source-paths ["feature-test-check"]} :feature/spec-alpha {:source-paths ["feature-spec-alpha"]} + :feature/camel-snake-kebab {:source-paths ["feature-camel-snake-kebab"] + :dependencies [[camel-snake-kebab "0.4.2"]]} :test [:feature/xml :feature/lanterna :feature/yaml @@ -68,6 +70,7 @@ :feature/hiccup :feature/test-check :feature/spec-alpha + :feature/camel-snake-kebab {:dependencies [[clj-commons/conch "0.9.2"] [com.clojure-goes-fast/clj-async-profiler "0.4.1"] [com.opentable.components/otj-pg-embedded "0.13.3"]]}] diff --git a/script/compile b/script/compile index 5451c4f6..ee66220e 100755 --- a/script/compile +++ b/script/compile @@ -103,6 +103,7 @@ then export BABASHKA_FEATURE_HICCUP="${BABASHKA_FEATURE_HICCUP:-false}" export BABASHKA_FEATURE_TEST_CHECK="${BABASHKA_FEATURE_TEST_CHECK:-false}" export BABASHKA_FEATURE_SPEC_ALPHA="${BABASHKA_FEATURE_SPEC_ALPHA:-false}" + export BABASHKA_FEATURE_CAMEL_SNAKE_KEBAB="${BABASHKA_FEATURE_CAMEL_SNAKE_KEBAB:-false}" fi "$GRAALVM_HOME/bin/native-image" "${args[@]}" diff --git a/script/uberjar b/script/uberjar index 56e64669..188a6363 100755 --- a/script/uberjar +++ b/script/uberjar @@ -146,6 +146,14 @@ else BABASHKA_LEIN_PROFILES+=",-feature/spec-alpha" fi +if [ "$BABASHKA_FEATURE_CAMEL_SNAKE_KEBAB" != "false" ] +then + BABASHKA_LEIN_PROFILES+=",+feature/camel-snake-kebab" +else + BABASHKA_LEIN_PROFILES+=",-feature/camel-snake-kebab" +fi + + if [ -z "$BABASHKA_JAR" ]; then lein with-profiles "$BABASHKA_LEIN_PROFILES,+reflection,-uberjar" do run lein with-profiles "$BABASHKA_LEIN_PROFILES" do clean, uberjar diff --git a/script/uberjar.bat b/script/uberjar.bat index 6e71856f..a3dc82a3 100755 --- a/script/uberjar.bat +++ b/script/uberjar.bat @@ -112,6 +112,12 @@ set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,+feature/spec-alpha set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/spec-alpha ) +if not "%BABASHKA_FEATURE_CAMEL_SNAKE_KEBAB%"=="false" ( +set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,+feature/camel-snake-kebab +) else ( +set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/camel-snake-kebab +) + call lein with-profiles %BABASHKA_LEIN_PROFILES% bb "(+ 1 2 3)" call lein with-profiles %BABASHKA_LEIN_PROFILES%,+reflection,-uberjar do run diff --git a/src/babashka/impl/features.clj b/src/babashka/impl/features.clj index ee097903..6735aa7e 100644 --- a/src/babashka/impl/features.clj +++ b/src/babashka/impl/features.clj @@ -14,6 +14,7 @@ (def core-match? (not= "false" (System/getenv "BABASHKA_FEATURE_CORE_MATCH"))) (def hiccup? (not= "false" (System/getenv "BABASHKA_FEATURE_HICCUP"))) (def test-check? (not= "false" (System/getenv "BABASHKA_FEATURE_TEST_CHECK"))) +(def camel-snake-kebab? (not= "false" (System/getenv "BABASHKA_FEATURE_CAMEL_SNAKE_KEBAB"))) ;; excluded by default (def jdbc? (= "true" (System/getenv "BABASHKA_FEATURE_JDBC"))) @@ -66,3 +67,6 @@ (when spec-alpha? (require '[babashka.impl.spec])) + +(when camel-snake-kebab? + (require '[babashka.impl.csk])) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 26536dbc..6df2419a 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -421,7 +421,9 @@ Use -- to separate script command line args from bb command line args. features/spec-alpha? (-> (assoc ;; spec 'clojure.spec.alpha @(resolve 'babashka.impl.spec/spec-namespace) 'clojure.spec.gen.alpha @(resolve 'babashka.impl.spec/gen-namespace) - 'clojure.spec.test.alpha @(resolve 'babashka.impl.spec/test-namespace))))) + 'clojure.spec.test.alpha @(resolve 'babashka.impl.spec/test-namespace))) + features/camel-snake-kebab? (-> (assoc + 'camel-snake-kebab.core @(resolve 'babashka.impl.csk/csk-namespace))))) (def imports '{ArithmeticException java.lang.ArithmeticException