Class: ActiveForm::Element::Builder
Constant Summary
collapse
- NIL_LAMBDA =
lambda { |elem| }
- DEFAULT_HTML_BUILDER =
lambda { |builder, elem| builder.div('') }
Class Method Summary
collapse
Instance Method Summary
collapse
#contained?, #default_value, #define_formatting_filter, #define_freeze_filter, #description, #disabled?, #element_attributes, #element_binding, #element_binding_key, #element_name, #element_type, #export_value, #fallback_value, #fallback_value=, #format_value, #formatted_value, #freeze_element, #freeze_value, #frozen?, #frozen_value, #frozen_value=, #hidden?, #hide_element, #identifier, included, #label, #labelled?, #localize, #localized?, #readonly?, #register_container, #required=, #required?, #reset_formatting_filter, #reset_freeze_filter, #revert_value, #title, #update_options_and_attributes
Class Method Details
.create(definition_name, &block) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/active_form/elements/builder.rb', line 79
def create(definition_name, &block)
class_name = type_classname(definition_name)
if !ActiveForm::Element.const_defined?(class_name)
ActiveForm::Element.const_set(class_name, Class.new(self))
if klass = ActiveForm::Element.const_get(class_name)
klass.html_builder_proc = block if block_given?
ActiveForm::Element::register(klass)
return klass
end
end
nil
end
|
.element_type ⇒ Object
68
69
70
|
# File 'lib/active_form/elements/builder.rb', line 68
def self.element_type
:builder
end
|
.html_builder(prc = nil, &block) ⇒ Object
Also known as:
html_builder_proc=
92
93
94
|
# File 'lib/active_form/elements/builder.rb', line 92
def html_builder(prc = nil, &block)
define_singleton_method(:html_builder_proc, &(block_given? ? block : prc))
end
|
.inherited(derivative) ⇒ Object
.reset_html_builder ⇒ Object
97
98
99
|
# File 'lib/active_form/elements/builder.rb', line 97
def reset_html_builder
undefine_singleton_method(:html_builder_proc) rescue nil
end
|
Instance Method Details
#accept_block(&block) ⇒ Object
16
17
18
|
# File 'lib/active_form/elements/builder.rb', line 16
def accept_block(&block)
define_html_builder(&block) if block_given?
end
|
#define_html_builder(prc = nil, &block) ⇒ Object
Also known as:
html, html_builder=
40
41
42
|
# File 'lib/active_form/elements/builder.rb', line 40
def define_html_builder(prc = nil, &block)
@html_builder = (block_given? ? block : prc)
end
|
#element_value(export = false) ⇒ Object
Also known as:
values, value
20
21
22
|
# File 'lib/active_form/elements/builder.rb', line 20
def element_value(export = false)
@element_value ||= default_value
end
|
#element_value=(value) ⇒ Object
Also known as:
initial_value=, values=, value=, binding=, bind_to, html=
26
27
28
|
# File 'lib/active_form/elements/builder.rb', line 26
def element_value=(value)
@element_value = value
end
|
#html_builder ⇒ Object
36
37
38
|
# File 'lib/active_form/elements/builder.rb', line 36
def html_builder
@html_builder ||= self.class.respond_to?(:html_builder_proc) ? self.class.method_to_proc(:html_builder_proc) : nil
end
|
#initialize_element(*args, &block) ⇒ Object
11
12
13
14
|
# File 'lib/active_form/elements/builder.rb', line 11
def initialize_element(*args, &block)
super(*args, &NIL_LAMBDA)
define_html_builder(&block) if block_given?
end
|
#render_element(builder = create_builder) ⇒ Object
58
59
60
61
62
63
64
65
66
|
# File 'lib/active_form/elements/builder.rb', line 58
def render_element(builder = create_builder)
if html_builder.respond_to?(:call)
html_builder.call(builder, self)
elsif !element_value.blank?
builder << "#{element_value}\n"
else
DEFAULT_HTML_BUILDER.call(builder, self)
end
end
|
#render_frozen(builder = create_builder) ⇒ Object
54
55
56
|
# File 'lib/active_form/elements/builder.rb', line 54
def render_frozen(builder = create_builder)
render_element(builder)
end
|
#render_label(builder = create_builder) ⇒ Object
50
51
52
|
# File 'lib/active_form/elements/builder.rb', line 50
def render_label(builder = create_builder)
element_name
end
|
#reset_html_builder ⇒ Object
46
47
48
|
# File 'lib/active_form/elements/builder.rb', line 46
def reset_html_builder
@html_builder = nil
end
|