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