(ns html-table
(:use clojure.contrib.prxml)
(:use clojure.contrib.seq-utils))
(defn print-table [grid selected]
(prxml
[:table {:cellpadding 30, :bgcolor "#6666aa"}
(for [[x row] (indexed grid)]
[:tr
(for [[y cell] (indexed row)]
[:td {:bgcolor (if (= selected [x y])
"#d0e0ff"
"#cfcfdf")}
[:font {:color "#0000cc"} (subs cell 0 1)]
(subs cell 1)])])]))
(defn make-grid [col-size data]
(partition col-size
(filter #(not= % "") data)))
(print-table
(make-grid 3 ["cat" "dog" "" "rabbit" "frog" "elephant" "gorilla"])
[0 0])
(println)
On Feb 17, 2:18 am, Jesse Aldridge <[email protected]> wrote:
> I'm trying to port some Python code to Clojure. I'm new to functional
> programming and I hit a function that is causing my brain to melt.
> The python function looks something like this:
>
> def build_table():
> num_cols = 3
> selected_row = 0
> selected_col = 0
> strings = ["cat", "dog", "", "rabbit", "frog", "elephant",
> "gorilla"]
>
> row, col = 0, 0
> table_contents = "<table cellpadding=30 bgcolor=#6666aa>\n<tr>\n"
> for string in strings:
> if string == "":
> continue
>
> if col >= num_cols:
> row += 1
> col = 0
> table_contents += "</tr>\n<tr>"
>
> def new_cell():
> bg_color = "cfcfdf"
> if(col == selected_col and row == selected_row):
> bg_color = "d0e0ff"
> return "<td bgcolor=#" + bg_color + ">" + \
> "<font color=#0000cc>" + string[0] + \
> "</font>" + string[1:] + "</td>\n"
> table_contents += new_cell()
>
> col += 1
>
> table_contents += "</tr>\n</table>"
> return table_contents
>
> If someone could please demonstrate how to do this in Clojure, I think
> it would greatly help my understanding of the language and functional
> programming in general.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---