lib/yaks/mapper/form/config.rb in yaks-0.8.3 vs lib/yaks/mapper/form/config.rb in yaks-0.9.0
- old
+ new
@@ -7,19 +7,53 @@
action: nil,
title: nil,
method: nil,
media_type: nil,
fields: [],
- dynamic_blocks: [],
if: nil
)
- def dynamic(&blk)
- append_to(:dynamic_blocks, blk)
+ def self.builder
+ @builder ||= Builder.new(self) do
+ def_set :action, :title, :method, :media_type
+ def_add :field, create: Field::Builder, append_to: :fields
+ def_add :fieldset, create: Fieldset, append_to: :fields
+ HTML5Forms::INPUT_TYPES.each do |type|
+ def_add(type,
+ create: Field::Builder,
+ append_to: :fields,
+ defaults: { type: type })
+ end
+ def_add :dynamic, create: DynamicField, append_to: :fields
+ def_forward :condition
+ end
end
+ # Builder expects a `create' method. Alias to constructor
+ def self.create(options)
+ new(options)
+ end
+
+ # Build up a configuration based on an initial set of
+ # attributes, and a configuration block
+ def self.build(options = {}, &block)
+ builder.create(options, &block)
+ end
+
+ # Build up a configuration based on a config block. Provide an
+ # object to be supplied to the block
+ def self.build_with_object(object, &block)
+ builder.build(new, object, &block)
+ end
+
def condition(prc = nil, &blk)
with(if: prc || blk)
+ end
+
+ def to_resource_fields(mapper)
+ fields.flat_map do |field|
+ field.to_resource_fields(mapper)
+ end
end
end
end
end
end