https://github.com/gersak/timing 0.8.2 ⏰ “Have you ever had to...” • Calculate business days skipping weekends AND country-specific holidays? • Figure out “30 business days from now” for a contract deadline? • Handle payroll across multiple countries with different holiday calendars? • Convert meeting times across 5 timezones without losing your mind? Numeric core - Time as milliseconds. Simple arithmetic, functional pipelines.
Variable-length periods:
;; Jan 31 + 1 month = Feb 29 (not Feb 31!)
(add-months (time->value (date 2024 1 31)) 1)
;; Add 6 months, not "180 days"
(add-months invoice-date 6)
Business days with holidays:
;; 30 business days from now, skipping Polish holidays
(add-business-days now 30) ; holidays auto-detected by locale
~200 country holidays - Cherry-pick by locale:
(require '[timing.holiday.pl]) ; just Poland
Teleport between timezones:
(teleport timestamp "Asia/Tokyo")
Cron expressions for scheduling:
(take 10 (future-timestamps now "0 0 9 * * MON"))
Multiple calendars - Gregorian, Julian, Hebrew, Islamic.
🕊️ Zero dependencies. JVM, JS, Babashka.
https://github.com/gersak/timingokay this is sick
😁 thanks…
Announcing https://github.com/ericdallo/rewrite-json/ - A Clojure library for format-preserving JSON and JSONC editing ✨ After struggling with json editting not messing style/format in #eca, and not finding any good lib to do that, I realized a lib would help and might help more people!
(def settings "{\n // Font settings\n \"editor.fontSize\": 14\n}")
(-> (rj/parse-string settings)
(rj/assoc-in ["editor.fontSize"] 16)
rj/to-string)
;; => "{\n // Font settings\n \"editor.fontSize\": 16\n}"
It supports both Path based and Zipper APIs
Inspired by #rewrite-clj 💙Amazing. It also works with bb:
$ bb -Sdeps '{:deps {dev.ericdallo/rewrite-json {:mvn/version "0.1.1"}}}' -e '(require (quote [rewrite-json.core :as rj])) (-> (rj/parse-string "{\"a\": 1}") (rj/update-in ["a"] inc) rj/to-string)'
"{\"a\": 2}"_ _ __ _ _ _
___| |(_) / _(_) __ _| | ___| |_
/ __| || |_____| |_| |/ _` | |/ _ \ __|
| (__| || |_____| _| | (_| | | __/ |_
\___|_|/ | |_| |_|\__, |_|\___|\__|
|__/ |___/
clj-figlet — native FIGlet ASCII art for Clojure. No shelling out, no dependencies beyond Clojure itself.
Render text in arbitrary font, directly in your Clojure code:
Fonts load as plain Clojure maps. Rendering is a pure function. The
whole thing composes naturally with the language — no
subprocess, no state.
What’s in the box:
- Implements the FIGfont Version 2 spec (Cowan & Burton, 1996-97)
- All 6 horizontal smushing rules + universal smushing
- Output identical to the reference C figlet (verified against 16 fonts)
- 16 bundled fonts including standard, doom, slant, script, banner, graffiti, starwars, and more
- Two-function API: load-font and render
GitHub: https://github.com/danlentz/clj-figlet
Feedback welcome — this is the initial release. Enjoy!This is really cool. The code's a pleasure to read, too!
Tks!
There are a few important things to do (ie, better randomized testing). And maybe serializing fonts so you can edit them / save new ones in Clojure. And probably better if there were more bundled fonts (that are reasonably licensed)
very cool! a small suggestion, maybe use a slightly longer phrase than "hello" in the font catalog, so you get a better representation of the font?
good idea
nice. works with bb too :)
$ bb -Sdeps '{:deps {com.github.danlentz/clj-figlet {:mvn/version "0.1.3"}}}'
Downloading: com/github/danlentz/clj-figlet/0.1.3/clj-figlet-0.1.3.pom from clojars
Downloading: com/github/danlentz/clj-figlet/0.1.3/clj-figlet-0.1.3.jar from clojars
Babashka v1.12.218-SNAPSHOT
Type :repl/help for help
user=> (require '[clj-figlet.core :as fig])
nil
user=> (print (fig/render "standard" "Hello!"))
_ _ _ _ _
| | | | ___| | | ___ | |
| |_| |/ _ \ | |/ _ \| |
| _ | __/ | | (_) |_|
|_| |_|\___|_|_|\___/(_)sweet!
Congrats - this is awesome - great work!! Very happy to finally see a pure clojure impl of Figlet :) I recently took a little dive into this space and did a quick and dirty (no smushing) implementation of Figlet + lolcat. https://github.com/paintparty/bling?tab=readme-ov-file#figlet-banners, if you curious. The goal was to support a few select fonts for a “banner” feature in Bling. Do you plan to accept contributions (original fonts) for this lib?
ya absolutely
thanks!
submit a PR?
im interest in bling i hadn’t run into it before. will try to read through
api=> (add-lib 'com.github.danlentz/clj-figlet {:mvn/version "0.1.3"})
[com.github.danlentz/clj-figlet
com.google.javascript/closure-compiler
com.zaxxer/HikariCP-java7
org.clojure/clojurescript
org.clojure/google-closure-library
org.clojure/google-closure-library-third-party
org.mozilla/rhino
org.slf4j/jcl-over-slf4j]
weird that adding the lib brought in weird stuffnot related to you i guess
❯ clj
Clojure 1.12.1
user=> (add-lib 'com.github.danlentz/clj-figlet {:mvn/version "0.1.3"})
[com.github.danlentz/clj-figlet]ya wow no idea. we have no external deps
yeah. not you. but no idea why the project did that. sorry for the noise
Hooked it up to our logs
lol yikes
it’s such a fun library. nice job
thanks. hope its useful to folks
As far as i understand, its bad manners (?) to re-announce so soon. but significant new release i hope folks check it out. I think we’re in a good place here, unless anyone has any other ideas or suggestions.
Rendering engine rewritten to match the C figlet exactly. 45 bundled fonts. Output verified against the reference binary with 17,000+ randomized assertions per test run.
What's new:
- write-font for serializing fonts back to .flf — full round-trip support
- validate-font / valid-font? backed by clojure.spec
- all-fonts discovers bundled fonts from the classpath
- 35 new contributed fonts (45 total)
is this worth to post in #annoucements ? i think i’m done for a while one this
the #announcements only lets you post once a month for the same project, it's in the description of the channel
you could either wait or post it in #releases
ah ok makes sense
meh. i think its cool. i hope people see it and it gets some use, but i’m not going to spend much effort promoting it
you can post in #releases all you want and there's plenty of people following that. you can also edit the original message you posted here and add on to it
oof cut and paste didn’t work that hurts.
_ _ __ _ _ _
___| |(_) / _(_) __ _| | ___| |_
/ __| || |_____| |_| |/ _` | |/ _ \ __|
| (__| || |_____| _| | (_| | | __/ |_
\___|_|/ | |_| |_|\__, |_|\___|\__|
|__/ |___/
_
| | | | _| | | _ | |
| || |/ \ | |/ _ \| |
| | _/ | | () ||
|| ||\_|||\_/(_)
https://github.com/cjohansen/lookup: CSS selectors and text extraction tools for hiccup https://clojars.org/no.cjohansen/lookup/versions/2026.03.1 is now available.
This version fixes a bug in attribute selectors for non-string attribute values, so lookup finds stuff like [:button {:data-variant :primary} "Click it"] with the selector "button[data-variant=primary]"