1 require_dependency "manifest/form/field"
6 def self.base_manager manifest, my_manifests
8 base = my_manifests['base'] || {}
9 base.each {|form_name, form_manifest|
10 form[form_name] = Form.new(manifest, form_name, form_manifest)
15 def self.extend_manager manifest, my_manifests
17 extend = my_manifests['extend'] || {}
18 extend.each {|form_name, form_manifest|
19 form[form_name] = ExtendForm.new(manifest, form_name, form_manifest)
24 attr :form_manifest, :form_name, :manifest,
26 def initialize manifest, form_name, form_manifest
28 @form_name = form_name
29 @form_manifest = form_manifest
35 @form_manifest['fields'] ||= {}
36 @form_manifest['field_names'] ||= []
40 @base = @form_manifest['base']
42 @form_manifest['fields'].each {|field_name, field_manifest|
43 @fields[field_name] = FieldFactory.factory(self, field_name, field_manifest)
45 @field_names = @form_manifest['field_names']
49 @field_names.each do |field_name|
50 yield field_name, @fields[field_name]
56 class ExtendForm < Form
61 raise "undefined base for forms > extend > #{self.form_name}\n" unless @form_manifest['base']
66 @base = @form_manifest['base']
67 @base_form = @manifest.forms[@base]
68 raise "undefined base form for forms > extend > #{self.form_name}\n" unless @base_form
69 @fields.merge! @base_form.fields