Class: Shaf::Formable::Builder

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(block, create: false, edit: false) ⇒ Builder

Returns a new instance of Builder.



111
112
113
114
115
116
117
# File 'lib/shaf/formable.rb', line 111

def initialize(block, create: false, edit: false)
  @block = block
  @create = create
  @edit = edit
  @form = nil
  @default_method = @create ? :post : :put
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



109
110
111
# File 'lib/shaf/formable.rb', line 109

def block
  @block
end

Class Method Details

.call(block) ⇒ Object



102
103
104
105
106
107
# File 'lib/shaf/formable.rb', line 102

def self.call(block)
  [
    new(block, create: true).call,
    new(block, edit: true).call
  ]
end

Instance Method Details

#callObject



119
120
121
122
# File 'lib/shaf/formable.rb', line 119

def call
  instance_exec(&block)
  @form
end

#call_nested_block(b) ⇒ Object



162
163
164
165
166
167
# File 'lib/shaf/formable.rb', line 162

def call_nested_block(b)
  old, @block = @block, b
  call
ensure
  @block = old
end

#create(&b) ⇒ Object



152
153
154
155
# File 'lib/shaf/formable.rb', line 152

def create(&b)
  return unless @create
  call_nested_block(b)
end

#edit(&b) ⇒ Object



157
158
159
160
# File 'lib/shaf/formable.rb', line 157

def edit(&b)
  return unless @edit
  call_nested_block(b)
end

#field(name, opts = {}) ⇒ Object



148
149
150
# File 'lib/shaf/formable.rb', line 148

def field(name, opts = {})
  form.add_field(name, opts)
end

#fields(fields) ⇒ Object



144
145
146
# File 'lib/shaf/formable.rb', line 144

def fields(fields)
  form.fields = fields
end

#formObject



124
125
126
# File 'lib/shaf/formable.rb', line 124

def form
  @form ||= Form.new(method: @default_method)
end

#method(method) ⇒ Object



136
137
138
# File 'lib/shaf/formable.rb', line 136

def method(method)
  form.method = method
end

#name(name) ⇒ Object



128
129
130
# File 'lib/shaf/formable.rb', line 128

def name(name)
  form.name = name
end

#title(title) ⇒ Object



132
133
134
# File 'lib/shaf/formable.rb', line 132

def title(title)
  form.title = title
end

#type(type) ⇒ Object



140
141
142
# File 'lib/shaf/formable.rb', line 140

def type(type)
  form.type = type
end