File: features.clj

package info (click to toggle)
fonts-firacode 6.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 11,796 kB
  • sloc: sh: 287; python: 146; makefile: 19
file content (37 lines) | stat: -rw-r--r-- 1,139 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(ns fira-code.features
  (:require
   [clojure.java.io :as io]
   [clojure.string :as str]
   [fira-code.glyphs :as glyphs]
   [fira-code.files :as files]))


(defn append-calt [font]
  (let [features (->> (files/find "features/calt" #"features/calt/[^/]+\.fea")
                   (map slurp)
                   (map str/trim)
                   (str/join "\n\n"))]
    (println "  appending to feature calt" (glyphs/lines features) "lines")
    (glyphs/update-code font :features "calt"
      #(str % "\n\n" features))))


(defn fill-feature [font file]
  (let [[_ name]  (re-matches #"([^.]+)\.fea" (.getName file))
        code      (slurp file)
        [_ notes code'] (re-matches #"(?s)#([^\n]+)\n(.*)" code)
        feature   (cond-> {:code (str/trim (or code' code))
                           :name name}                    
                    notes
                    (assoc :notes (str/trim notes)))]
    (glyphs/set-feature font name feature)))


(defn fill-features [font]
  (reduce fill-feature font (files/find "features" #"features/[^/]+\.fea")))


(defn fill-all [font]
  (-> font
    (append-calt)
    (fill-features)))