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']
50 class ExtendForm < Form
55 raise "undefined base for forms > extend > #{self.form_name}\n" unless @form_manifest['base']
60 @base = @form_manifest['base']
61 @base_form = @manifest.forms[@base]
62 raise "undefined base form for forms > extend > #{self.form_name}\n" unless @base_form
63 @fields.merge! @base_form.fields