a29c18b

Pinchord · pinchord.git · Tickets · Changelog

Branches > main > a29c18b > files / generate-dictionary.clj

Split chords into chords.edn and update dictionary generation script

Grahp, 2026-01-09

Commit: a29c18ba0bf99b2a0131ba75cdadef8c5e5e79ac
Parent: 9056192

4 changed files:

README.md modified (view file)

@@ -9,3 +9,11 @@ Everything is versioned with a suffix number.  Thanks to Kate (https://codeberg.org/StrawberryTurtle, https://github.com/StrawberryTurtle) and Harri (https://github.com/StenoHarri) for help and influence :)++# Dictionary++Chords can be found in "chords.edn".++To generate the dictionary into a javelin dict, run `./generate-dict.clj` (requires babashka - https://babashka.org).++Or you can just edit the generated dictionary directly of course

chords.edn added (view file)

@@ -0,0 +1,237 @@+{:version 13+ :initials {"T" "t",+            "TSP*" "sk"+            "TSPHR" "sv",+            "TP" "f",+            "TSWR" "kr",+            "THR" "thr",+            "TPR" "fr",+            "PWR" "br",+            "SH*" "sch",+            "TSPR" "scr",+            "TSWH" "kn",+            "TWH" "thw",+            "PWHR" "bl",+            "SPWHR" "cl",+            "TS" "st",+            "SPR" "spr",+            "SWHR" "shr",+            "HR" "l",+            "WH" "wh",+            "TW" "tw",+            "S" "s",+            "SR" "v",+            "TPWR" "dr",+            "H" "h",+            "PR" "pr",+            "TSPWR" "gr",+            "SHR" "sl",+            "SW" "sw",+            "SWR" "y",+            "TSPWH" "gh",+            "R" "r",+            "TSPR*" "squ",+            "TWR" "vr",+            "TSR" "str",+            "TWHR" "j",+            "SH" "sh",+            "PH" "m",+            "TSP" "sc",+            "TR" "tr",+            "P" "p",+            "WHR" "qu",+            "WHR*" "q",+            "TPHR" "fl",+            "TH" "th",+            "WR" "wr",+            "SPWR" "cr",+            "SPH" "sm",+            "TSW" "k",+            "SPHR" "spl",+            "TSPWHR" "gl",+            "TSWHR" "kl",+            "SPW" "c",+            "SWH" "z",+            "PHR" "pl",+            "SPWH" "ch",+            "TSPW" "g",+            "W" "w",+            "SP" "sp",+            "TSPH" "sn",+            "TPH" "n",+            "TPW" "d",+            "PW" "b"}++ :vowels {"OU" "ou",+          "AU" "au",+          "AOI" "ee",+          "AO^" "oa",+          "AU^" "ua",+          "AI^" "ia",+          "IU^" "ui",+          "IU" "e",+          "AIU" "ea",+          "OI^" "io",+          "AIU^" "ae",+          "AOU" "ei",+          "U^" "ue",+          "U" "u",+          "O" "o",+          "AO" "oo",+          "A" "a",+          "I" "i",+          "I^" "y",+          "AOIU" "",+          "OIU" "oe",+          "AOU^" "ie",+          "OI" "oi",+          "OIU^" "eo",+          "AI" "ai"}++ :finals {"FS" "v"+          "FS*" "vv"+          "LFS" "lv"+          "LRFS" "nv"+          "RFS" "rv"+          "KFS" "sh"+          "LKFS" "lsh"+          "LRKFS" "nsh"+          "RKFS" "rsh"

Show all 238 lines

generate-dictionary.clj added (view file)

@@ -0,0 +1,43 @@+#!/usr/bin/env bb+;; Dictionay generation script+(def priority+  "Priorities used for javelin orthospelling."+  (zipmap [::pre-prefixes ::prefixes ::initials ::vowels ::finals ::suffixes]+          (rest (range))))++(comment+  (def yaml-dict (yaml/parse-string (slurp "pinchord-javelin-dictionary.yaml")))++  (->> (:letters yaml-dict)+       (filter #(= (:order %) 2))+       (map (fn [m] [(:stroke m) (:data m)]))+       (into {})))++(defn finalize+  "Puts dashes before all the keys of m"+  [m]+  (update-keys m (partial str \-)))++(defn generate-dict! []+  (let [chords (edn/read-string (slurp "chords.edn"))+        {:keys [version pre-prefixes prefixes initials vowels finals suffixes]} chords+        layout {::pre-prefixes pre-prefixes+                ::prefixes prefixes+                ::initials initials+                ::vowels vowels+                ::finals (finalize finals)+                ::suffixes (finalize suffixes)}+        dict {:name "Pinchord"+              :maximumOutlineLength 1+              :starters [{:stroke "" :definition "" :mask ""}]+              :letters (->> (reduce (fn [acc [layout entries]]+                                      (into acc (mapv (fn [[stroke translation]] {:stroke stroke :data translation :order (priority layout)})+                                                      entries)))+                                    #{} layout)+                            (sort-by (comp - count :stroke)))}]++    (->> (yaml/generate-string dict)+         (spit (str "pinchord-javelin-dictionary-" version ".yaml")))))++(generate-dict!)+

pinchord-dict.clj deleted (view file)

@@ -1,291 +0,0 @@-;; Dictionay generation script-(def priority-  "Priorities used for javelin orthospelling."-  (zipmap [::pre-prefixes ::prefixes ::initials ::vowels ::finals ::suffixes]-          (rest (range))))--(def version 13)--(comment-  (def yaml-dict (yaml/parse-string (slurp "pinchord-javelin-dictionary.yaml")))--  (->> (:letters yaml-dict)-       (filter #(= (:order %) 2))-       (map (fn [m] [(:stroke m) (:data m)]))-       (into {})))--(def initials {"T" "t",-               "TSP*" "sk"-               "TSPHR" "sv",-               "TP" "f",-               "TSWR" "kr",-               "THR" "thr",-               "TPR" "fr",-               "PWR" "br",-               "SH*" "sch",-               "TSPR" "scr",-               "TSWH" "kn",-               "TWH" "thw",-               "PWHR" "bl",-               "SPWHR" "cl",-               "TS" "st",-               "SPR" "spr",-               "SWHR" "shr",-               "HR" "l",-               "WH" "wh",-               "TW" "tw",-               "S" "s",-               "SR" "v",-               "TPWR" "dr",-               "H" "h",-               "PR" "pr",-               "TSPWR" "gr",-               "SHR" "sl",-               "SW" "sw",-               "SWR" "y",-               "TSPWH" "gh",-               "R" "r",-               "TSPR*" "squ",-               "TWR" "vr",-               "TSR" "str",-               "TWHR" "j",-               "SH" "sh",-               "PH" "m",-               "TSP" "sc",-               "TR" "tr",-               "P" "p",-               "WHR" "qu",-               "WHR*" "q",-               "TPHR" "fl",-               "TH" "th",-               "WR" "wr",-               "SPWR" "cr",-               "SPH" "sm",-               "TSW" "k",-               "SPHR" "spl",-               "TSPWHR" "gl",-               "TSWHR" "kl",-               "SPW" "c",-               "SWH" "z",-               "PHR" "pl",-               "SPWH" "ch",-               "TSPW" "g",-               "W" "w",-               "SP" "sp",-               "TSPH" "sn",-               "TPH" "n",-               "TPW" "d",-               "PW" "b"})--(def vowels {"OU" "ou",-             "AU" "au",-             "AOI" "ee",-             "AO^" "oa",-             "AU^" "ua",-             "AI^" "ia",-             "IU^" "ui",-             "IU" "e",-             "AIU" "ea",-             "OI^" "io",-             "AIU^" "ae",-             "AOU" "ei",-             "U^" "ue",-             "U" "u",-             "O" "o",-             "AO" "oo",-             "A" "a",-             "I" "i",-             "I^" "y",-             "AOIU" "",-             "OIU" "oe",-             "AOU^" "ie",-             "OI" "oi",-             "OIU^" "eo",-             "AI" "ai"})--(def finals {"FS" "v"-             "FS*" "vv"-             "LFS" "lv"-             "LRFS" "nv"-             "RFS" "rv"-             "KFS" "sh"-             "LKFS" "lsh"-             "LRKFS" "nsh"-             "RKFS" "rsh"-             "KFS*" "w"-             "LKFS*" "wl"-             "LRKFS*" "wn"-             "RKFS*" "rw"-             "L" "l"-             "LR" "rl"-             "R" "r"-             "P" "p"-             "LP" "lp"-             "LRP" "mp"-             "RP" "rp"-             "PK" "b"-             "LPK" "lb"-             "LRPK" "mb"-             "RPK" "rb"-             "PF" "n"-             "LPF" "ln"-             "LRPF" "nn"-             "RPF" "rn"-             "PKFS" "g"-             "LPKFS" "lg"-             "LRPKFS" "ng"-             "RPKFS" "rg"-             "RPKFS*" "gh"-             "RPKFST*" "ght"-             "F" "f"-             "F*" "ff"-             "LF" "lf"-             "LRF" "nf"-             "LRF*" "fn" ;; :garfsmie:-             "RF" "rf"-             "PFT" "y"-             "PFT*" "yy"-             "LPFT" "ly"-             "LPFT*" "nly"-             "RPFT" "ry"-             "RPFT*" "rly"-             "LRPFT" "ny"--             "PKST" "j"-             "LPKST" "lj"-             "LRPKST" "nj"-             "RPKST" "rj"--             "PKF" "d"-             "LPKF" "ld"-             "LRPKF" "nd"-             "RPKF" "rd"-             "RPKF*" "dg"-             "KS" "x"-             "RKS" "rx"-             "LKS" "lx"-             "LRKS" "nx"-             "KST" "xt"-             "RKST" "rxt"-             "LKST" "lxt"-             "LRKST" "nxt"-             "KF" "ch"-             "LKF" "lch"-             "LRKF" "nch"-             "RKF" "rch"-             "K" "k"-             "K*" "ck"-             "LK" "lk"-             "LRK" "nk"-             "RK" "rk"-             "S" "s"-             "LS" "ls"-             "LRS" "ns"-             "RS" "rs"-             "PS" "m"-             "LPS" "lm"-             "LRPS" "mn"-             "RPS" "rm"-             ;"P" * "S h"-             ;"PKF" * "S gh"-             ;"PKF" * "TS ght"-             "PFS" "z"-             "LPFS" "lz"-             "LRPFS" "nz"-             "RPFS" "rz"-             "T" "t"-             "LT" "lt"-             "LRT" "nt"-             "RT" "rt"-             "ST" "st"-             "LST" "lst"-             "LRST" "nst"-             "RST" "rst"-             "PT" "pt"-             "KT" "kt"-             "FT" "ft"-             "PKFT" "ky"-             "RPKFT" "cky"-             "L*" "ll"-             "R*" "rr"-             "P*" "pp"-             "PK*" "w"-             "LPK*" "bl"-             "LRPK*" "bbl"-             "PKFS*" "gg"-             "LRPFT*" "nny"-             "PKF*" "dd"-             "LPKF*" "ddl"-             "LRPKF*" "rld"-             "KS*" "sk"-             "RKS*" "rsk"-             "LKS*" "lsk"-             "LRKS*" "nsk"-             "KST*" "sc"-             "RKST*" "rsc"-             "LKST*" "lsc"-             "LRKST*" "nsc"-             "KF*" "tch"-             "PKS" "c"-             "LPKS" "lc"-             "LRPKS" "nc"-             "RPKS" "rc"-             "PKS*" "h"-             "S*" "ss"-             "PS*" "sp"-             ;"P*S*" "tion"-             ;"PKF*S*" "ction"-             ;"PKF*TS*" "nction"-             "PFS*" "zz"-             "T*" "tt"-             "LT*" "ttl"-             "ST*" "th"-             "LST*" "lth"-             "LRST*" "nth"-             "RST*" "rth"-             "KT*" "ct"-             "PKFT*" "cy"})--(defn finalize-  "Puts dashes before all the keys of m"-  [m]-  (update-keys m (partial str \-)))--;; Does not include empty entries since javelin doesn't...-(def layout-  {::pre-prefixes {"+" "{^}"-                   "_" "{^}_"-                   "_+" "{^}_"}-   ::prefixes {"#" "{-|}"}-   ::initials initials-   ::vowels vowels-   ::finals (finalize finals)-   ::suffixes (finalize {"E" "e"})})--(defn javelin-dict []-  {:name "Pinchord"-   :maximumOutlineLength 1-   :starters [{:stroke "" :definition "" :mask ""}]-   :letters (->> (reduce (fn [acc [layout entries]]-                           (into acc (mapv (fn [[stroke translation]] {:stroke stroke :data translation :order (priority layout)})-                                           entries)))-                         #{} layout)-                 (sort-by (comp - count :stroke)))})--#_(defn javelin-dict []-    {:name "Pinchord"-     :maximumOutlineLength 1-     :starters [{:stroke "" :definition "" :mask ""}]-     :letters (sort-by (comp - count :stroke)-                       (for [[layout-key entries] layout-                             [stroke translation] entries]-                         {:stroke stroke-                          :data translation-                          :priority (priority layout-key)}))})--(defn generate-javelin-dict! [dict]-  (->> (yaml/generate-string dict)-       (spit (str "pinchord-javelin-dictionary-" version ".yaml"))))--(comment-  (generate-javelin-dict! (javelin-dict)))