+ show_solutions: ->
+ @reset()
+ $(".question", @element).each (i, question) =>
+ @solve_question question
+
+ # Parses a list of values, separated by space or comma.
+ # The list is read from data attribute of elem using data_key
+ # Returns a list with elements
+ # eg.: things_i_need: "house bike tv playstation"
+ # yields ["house", "bike", "tv", "playstation"]
+ # If optional numbers argument is true, returns list of numbers
+ # instead of strings
+ get_value_list: (elem, data_key, numbers) ->
+ vl = $(elem).attr("data-" + data_key).split(/[ ,]+/).map($.trim) #.map((x) -> parseInt(x))
+ if numbers
+ vl = vl.map((x) -> parseInt(x))
+ return vl
+
+ # Parses a list of values, separated by space or comma.
+ # The list is read from data attribute of elem using data_key
+ # Returns a 2-element list with mandatory and optional
+ # items. optional items are marked with a question mark on the end
+ # eg.: things_i_need: "house bike tv? playstation?"
+ # yields [[ "house", "bike"], ["tv", "playstation"]]
+ get_value_optional_list: (elem, data_key) ->
+ vals = @get_value_list(elem, data_key)
+ mandat = []
+ opt = []
+ for v in vals
+ if v.slice(-1) == "?"
+ opt.push v.slice(0, -1)
+ else
+ mandat.push v
+ return [mandat, opt]