forked from nat/natalieee.net
58 lines
1.2 KiB
Hy
58 lines
1.2 KiB
Hy
(import yaml [safe-load])
|
|
|
|
(setv ones-names [
|
|
"hena"
|
|
"di"
|
|
"tri"
|
|
"tetra"
|
|
"penta"
|
|
"hexa"
|
|
"hepta"
|
|
"octa"
|
|
"ennea"])
|
|
|
|
(setv tens-names [
|
|
"decagon"
|
|
"icosi"
|
|
"triconta"
|
|
"tetraconta"
|
|
"pentaconta"
|
|
"hexaconta"
|
|
"heptaconta"
|
|
"octaconta"
|
|
"enneaconta"])
|
|
|
|
(defn n-gon-name [n]
|
|
(when (> 10 n)
|
|
(return (+ (get ones-names (- n 1)) "gon")))
|
|
|
|
(when (= n 11)
|
|
(return "undecagon"))
|
|
|
|
(when (= n 12)
|
|
(return "dodecagon"))
|
|
|
|
(when (> 20 n)
|
|
(return (+ (get ones-names (- n 1)) "decagon")))
|
|
|
|
(when (= 20 n)
|
|
(return "icosagon"))
|
|
|
|
(let [[modc r] (divmod n 10)]
|
|
(+ (get tens-names (- modc 1)) "kai" (get ones-names (- r 1)) "gon")))
|
|
|
|
(defn get-members []
|
|
(with [f (open "www/src/data/arpa-n-gon.yaml" "r")]
|
|
(return (get (safe-load f) "members"))))
|
|
|
|
(defn get-member-by-domain [members domain]
|
|
(for [[idx member] (enumerate members)]
|
|
(when (= (get member "arpa-domain") domain)
|
|
(return #(idx member)))))
|
|
|
|
(defn next-member [members domain]
|
|
(get members (% (+ (get (get-member-by-domain members domain) 0) 1) (len members))))
|
|
|
|
(defn prev-member [members domain]
|
|
(get members (% (- (get (get-member-by-domain members domain) 0) 1) (len members))))
|