module ActionView::Helpers::InstanceTagMethods::ClassMethods

def check_box_checked?(value, checked_value)

def check_box_checked?(value, checked_value)
  case value
  when TrueClass, FalseClass
    value
  when NilClass
    false
  when Integer
    value != 0
  when String
    value == checked_value
  when Array
    value.include?(checked_value)
  else
    value.to_i != 0
  end
end

def radio_button_checked?(value, checked_value)

def radio_button_checked?(value, checked_value)
  value.to_s == checked_value.to_s
end

def value(object, method_name)

def value(object, method_name)
  object.send method_name unless object.nil?
end

def value_before_type_cast(object, method_name)

def value_before_type_cast(object, method_name)
  unless object.nil?
    if object.respond_to?(method_name)
      object.send(method_name)
    # FIXME: this is AR dependent
    elsif object.respond_to?(method_name + "_before_type_cast")
      object.send(method_name + "_before_type_cast")
    else
      raise NoMethodError, "Model #{object.class} does not respond to #{method_name}"
    end
  end
end