Class: Forme::Formatter

Inherits:
Object
  • Object
show all
Defined in:
lib/forme.rb

Overview

The default formatter used by the library. Any custom formatters should probably inherit from this formatter unless they have very special needs.

Unlike most other transformers which are registered as instances and use a functional style, this class is registered as a class due to the large amount of state it uses.

Registered as :default.

Direct Known Subclasses

Disabled, ReadOnly

Defined Under Namespace

Classes: Disabled, ReadOnly

Constant Summary collapse

ATTRIBUTE_OPTIONS =

These options are copied directly from the options hash to the the attributes hash, so they don’t need to be specified in the :attr option. However, they can be specified in both places, and if so, the :attr option version takes precedence.

[:name, :id, :placeholder, :value, :style]
CHECKBOX_MAP =

Used to specify the value of the hidden input created for checkboxes. Since the default for an unspecified checkbox value is 1, the default is

  1. If the checkbox value is ‘t’, the hidden value is ‘f’, since that is

common usage for boolean values.

Hash.new(0)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#attrObject (readonly)

The attributes to to set on the lower level Tag form returned. This are derived from the input‘s opts, but some processing is done on them.



672
673
674
# File 'lib/forme.rb', line 672

def attr
  @attr
end

#formObject (readonly)

The Form instance for the receiver, taken from the input.



663
664
665
# File 'lib/forme.rb', line 663

def form
  @form
end

#inputObject (readonly)

The Input instance for the receiver. This is what the receiver converts to the lower level Tag form (or an array of them).



667
668
669
# File 'lib/forme.rb', line 667

def input
  @input
end

#optsObject (readonly)

The opts hash of the input.



675
676
677
# File 'lib/forme.rb', line 675

def opts
  @opts
end

Class Method Details

.call(input) ⇒ Object

Create a new instance and call it



658
659
660
# File 'lib/forme.rb', line 658

def self.call(input)
  new.call(input)
end

Instance Method Details

#call(input) ⇒ Object

Transform the input into a Tag instance (or an array of them), wrapping it with the form‘s wrapper, and the form’s error_handler and labeler if the input has an :error or :label options.



688
689
690
691
692
693
694
695
696
697
698
699
700
# File 'lib/forme.rb', line 688

def call(input)
  @input = input
  @form = input.form
  attr = input.opts[:attr]
  @attr = attr ? attr.dup : {}
  @opts = input.opts
  normalize_options

  tag = convert_to_tag(input.type)
  tag = wrap_tag_with_label(tag) if input.opts[:label]
  tag = wrap_tag_with_error(tag) if input.opts[:error]
  wrap_tag(tag)
end