battery.fnl (380B)
1 (fn battery [name] 2 (let [name (.. "/sys/class/power_supply/" name "/uevent")] 3 (with-open [f (io.open name :r)] 4 (let [fields {}] 5 (each [line #(f:read "*l")] 6 (let [(name value) (line:match "([^=]+)=(.+)")] 7 (tset fields (: (name:gsub "_" "-") :lower) value))) 8 fields)))) 9 10 { :new 11 (fn [name] 12 { 13 :read #(battery name) 14 }) 15 }