This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-01-27
Channels
- # announcements (24)
- # babashka (26)
- # beginners (8)
- # calva (8)
- # clojure (78)
- # clojure-europe (1)
- # clojure-norway (22)
- # clojurescript (14)
- # datascript (5)
- # datomic (8)
- # fulcro (22)
- # helix (9)
- # humbleui (11)
- # malli (4)
- # off-topic (28)
- # pedestal (5)
- # reitit (10)
- # shadow-cljs (2)
- # tools-build (8)
- # tools-deps (9)
Jeg har en kodesnutt som forkorter lange filnavn som "8VtNax5CtquBqm7vme3npabBNUCbaUdqypaDRY7FHcgyoZDmQySxJoWAGQpJLmEEhk7AXdqxoNkwXXVt896v1MRxNA.png"
til kortere versjoner som "8VtNa[...]RxNA.png"
for visning.
Jeg legger kode for funksjoner og urls
i tråd.
Jeg synes koden ble litt krøkkete. Ville du endret på short-filename-str
eller (clerk/table ,,,)
?
(def urls
(list
{:url "",
:filename
"8VtNax5CtquBqm7vme3npabBNUCbaUdqypaDRY7FHcgyoZDmQySxJoWAGQpJLmEEhk7AXdqxoNkwXXVt896v1MRxNA.png"}
{:url "",
:filename
"8VtTivwwuY9r7NV4YJ3rRaC1sybkfXLgs2amzQJq5BHvFGciriUvsmkPnk3vwNEVDekrZ3ZLJdcCajzR65sfzv829h.png"}
{:url "",
:filename
"8VuaUe1r8DQCnEGipsNYxLRs6pQkHWcoXGr3VJVimdAfM8gD789V3Y9RpYtU1tCWs2gncQB3FEKnVXmP8kt7XLUpT6.png"}
{:url "",
:filename
"8VwCexF7bUGGQePXB4PfhUQAweLWDMLk9WgQxJcHsZrFqFGDrHxFyziRNHRevVRWasJ1rS7jeXVEyDmuLeVeXNMF9Y.png"}))
(defn short-filename-str [s]
(let [l (.length s)]
(str
(subs s 0 5)
"[...]"
(subs s (- l 8) l))))
(clerk/table (->> urls
(map #(update % :filename short-filename-str))))
Alternativ tabellgenerering, som også gjør URL-er klikkbare:
(let [urls-pretty
(->> urls
(map (fn [m]
(-> m
(update :filename short-filename-str)
(update :url #(clerk/html [:a {:href %} %]))))))]
(clerk/caption "we hash the urls to get valid file names"
(clerk/table urls-pretty)))
Du kan slippe den siste let-en med litt mer threading:
(->> urls
(map (fn [m]
(-> m
(update :filename short-filename-str)
(update :url #(clerk/html [:a {:href %} %])))))
clerk/table
(clerk/caption "we hash the urls to get valid file names"))
Evt:
(->> (for [m urls]
(-> m
(update :filename short-filename-str)
(update :url #(clerk/html [:a {:href %} %]))))
clerk/table
(clerk/caption "we hash the urls to get valid file names"))
Jeg har vært litt forsiktig med å bruke clerk/html
, clerk/caption
og liknende sammen med threading fordi jeg ikke har sett noe mønster i argumentrekkefølgen de tar. Ofte er første objekt “tingen” og andre objekt “options”. Med clerk/caption
er det motsatt. @U5H74UNSF har sagt at det er for å få beskrivelsen over objektet når man koder det opp.
Samtidig liker jeg at du får “flatet ut” dataflyten i dine to løsninger, det blir veldig tydelig at vi bruker urls
én gang.
Tror ikke du får den til å gjøre akkurat det som ble gjort her (du får prikkene bakerst)
Det er jeg nesten klar over, men jeg antok at det kanskje ikke var et krav fra @U3X7174KS sin side, mer kanskje det første han tenkte på 🙂
Som utvikler mener jeg det er viktig og riktig å foreslå alternative løsninger som kanskje ikke følger spec’en, dersom de løsningene er vesentlig billigere.
i dette tilfellet ville ikke text-overflow: ellipsis;
fungert. Koden kjører med Clerk, og Clerk har allerede en object-browser med https://book.clerk.vision/#elisions. Hadde dette vært produksjon av rå HTML/CSS, ville jeg nok gått for det!
> Det er jeg nesten klar over, men jeg antok at det kanskje ikke var et krav fra @U3X7174KS sin side, mer kanskje det første han tenkte på 🙂
intensjonen var å få med filutvidelsen, så det står png
i tabellen. Men som du er inne på, kravspek kan utfordres!