Floppy/carbon-diet

View on GitHub
app/helpers/wml_helper.rb

Summary

Maintainability
A
3 hrs
Test Coverage
module WmlHelper

  def wml_date_select(date = Date.today)
    start_year = date.year-5
    end_year = date.year+5
    wml_select('day', (1..31).to_a, date.day) +
      wml_select('month', (1..12).to_a.map{|x|Date::ABBR_MONTHNAMES[x]}, Date::ABBR_MONTHNAMES[date.month], Proc.new{|x|Date::ABBR_MONTHNAMES.index(x)}) +
      wml_select('year', (start_year..end_year).to_a, date.year)
  end
  
  def wml_select(name, values, default=nil, value_func = nil, value_text = nil)
    ivalue = values.index(default)
    wml = "<select name='#{name}'"
    wml << " ivalue='#{ivalue+1}'" if ivalue
    wml << ">"
    ivalue = nil
    values.each_index do |x|
      if value_text
        text = values[x].send(value_text)
      else
        text = values[x]
      end
      if value_func
        if value_func.is_a? Proc
          ivalue = value_func.call(values[x])
        else
          ivalue = values[x].send(value_func)
        end
      end
      if ivalue
        wml << "<option value='#{ivalue}'>#{text}</option>"
      else
        wml << "<option>#{text}</option>"
      end
    end
    wml << "</select>"
    wml.html_safe
  end

end