Oh wow, this is perfect. Thanks.
On Feb 17, 2:21 pm, James Reeves <weavejes...@googlemail.com> wrote:
> (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 <jessealdri...@gmail.com> 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 clojure@googlegroups.com
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---