我想創建一個表格(工作日程表)我以前使用Python編碼,我認爲這將是一個很好的介紹給我的Clojure語言。從嵌套的地圖(和向量)創建一個HTML表格
我在Clojure(或者lisp)方面的經驗很少,而且我在谷歌和一些嘗試和錯誤方面做了很多工作,但似乎無法擺脫這種編碼風格。
這裏是我的樣本數據(從SQLite數據庫是未來的未來):
(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"]}]}))
我試圖逐步完成這個原本使用爲,然後移動到doseq終於domap(它似乎更成功),並將內容轉儲到一個html表格中(我的原始python程序使用COM將sqlite數據庫輸出到excel電子表格中)。
這裏是我的嘗試(在創建表FN):
(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))
,與部分(職員,經理等),並在各部分的名稱輸出表,我只是覺得我」因爲我可能需要添加更多的domaps才能在適當的列中獲得移位時間,並且代碼對它有'骯髒'的感覺,所以通過嵌套它來濫用domap。
如果我沒有提供足夠的信息,我很抱歉,我通常不會尋求編碼方面的幫助,這也是我的第一個問題:)。
如果你知道任何更好的方法來做到這一點,甚至提示或技巧,我應該知道作爲一個新手,他們肯定是受歡迎的。
謝謝。
未來,您不應該標記像這個社區維基這樣的可回答的問題。這破壞了我們的聲譽收集遊戲。 ;-) – 2010-03-15 01:59:29
對不起,我沒有意識到它扔掉了rep系統。我只是認爲這意味着我的問題是可編輯的(它不需要無論如何):(但謝謝你回答不管,我從你的帖子中學到了很多。:) – Kenny164 2010-03-15 16:52:26
很高興聽到這一點。 :-) – 2010-03-15 21:58:48