Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env boot
- (merge-env! :dependencies
- '[[cheshire "5.7.1"]
- [clj-yaml "0.4.0"]])
- (require '[cheshire.core :as json]
- '[clj-yaml.core :as yaml]
- '[clojure.string :as str])
- (import (java.nio.charset StandardCharsets))
- (defn keywords [entry]
- (let [[language {ace-mode "ace_mode" :strs [aliases]}] entry]
- (into (sorted-set) (conj aliases (str/lower-case language) ace-mode))))
- (defn keyword-map [language-map]
- (into (sorted-map) (for [[language :as entry] language-map]
- [language (keywords entry)])))
- (defn bytes->str [b]
- (String. b StandardCharsets/UTF_8))
- (defn str->bytes [s]
- (.getBytes s StandardCharsets/UTF_8))
- (defn process [b]
- (-> b
- bytes->str
- (yaml/parse-string false)
- keyword-map
- (json/generate-string {:pretty true})
- (str "\n")
- str->bytes))
- (defn stdin []
- (byte-array (take-while pos? (repeatedly #(.read System/in)))))
- (defn stdout [b]
- (.write System/out b))
- (stdout (process (stdin)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement