Sto provando a creare un tavolo (un programma di lavoro) che ho precedentemente codificato usando python, penso che sarebbe una bella introduzione al linguaggio Clojure per me.Creare una tabella HTML da mappe nidificate (e vettori)
Ho poca esperienza in Clojure (o lisp in quella materia) e ho fatto il mio giro in google e un bel po 'di prove ed errori ma non riesco a capire come funziona questo stile di codifica.
Ecco il mio dati di esempio (arriveranno da un database SQLite in futuro):
(def smpl2 (ref {"Salaried"
[{"John Doe" ["12:00-20:00" nil nil nil "11:00-19:00"]}
{"Mary Jane" [nil "12:00-20:00" nil nil nil "11:00-19:00"]}]
"Shift Manager"
[{"Peter Simpson" ["12:00-20:00" nil nil nil "11:00-19:00"]}
{"Joe Jones" [nil "12:00-20:00" nil nil nil "11:00-19:00"]}]
"Other"
[{"Super Man" ["07:00-16:00" "07:00-16:00" "07:00-16:00"
"07:00-16:00" "07:00-16:00"]}]}))
stavo cercando di passare da questo originariamente utilizzando per poi si spostano su doseq e infine domap (che sembra avere più successo) e scaricare il contenuto in una tabella html (il mio programma python originale l'ha prodotto da un database sqlite in un foglio di calcolo Excel usando COM).
Qui è il mio tentativo (fn create-tabella):
(defn html-doc [title & body]
(html (doctype "xhtml/transitional")
[:html [:head [:title title]] [:body body]]))
(defn create-table []
[:h1 "Schedule"]
[:hr]
[:table (:style "border: 0; width: 90%")
[:th "Name"][:th "Mon"][:th "Tue"][:th "Wed"]
[:th "Thur"][:th "Fri"][:th "Sat"][:th "Sun"]
[:tr
(domap [ct @smpl2]
[:tr [:td (key ct)]
(domap [cl (val ct)]
(domap [c cl]
[:tr [:td (key c)]]))])
]])
(defroutes tstr
(GET "/" ((html-doc "Sample" create-table)))
(ANY "*" 404))
che emette la tabella con le sezioni (stipendiati, direttore, ecc) ei nomi nelle sezioni, mi sento come I' abusando del domap annidandolo troppe volte poiché probabilmente avrò bisogno di aggiungere più domaps solo per ottenere i tempi di turno nelle loro colonne appropriate e il codice sta diventando un po '"sporco".
Mi scuso in anticipo se non includo informazioni sufficienti, di solito non chiedo aiuto per la codifica, anche questa è la mia prima domanda SO :).
Se conosci approcci migliori per fare questo o anche consigli o suggerimenti che dovrei sapere come novizio, sono sicuramente i benvenuti.
Grazie.
Per il futuro, non si dovrebbero contrassegnare domande rispondenti come questa wiki della comunità. Questo rovina il nostro gioco di raccolta di reputazione. ;-) –
Mi spiace, non mi sono reso conto che ha gettato via il sistema di ripetizioni. Ho pensato che la mia domanda era modificabile (che non doveva essere comunque) :(. Ma grazie per aver risposto a prescindere, ho imparato molto dai tuoi post :) :) – Kenny164
Felice di sentirlo. :-) –