1 ManifestBase.require_modules "local_manifest/form/",
5 class Form < ManifestBase::Base
8 def self.load manifest, jsons, module_name
9 Hash[jsons[module_name]['base'].map {|name, json|
10 [name, self.new(manifest, name, json, module_name)]
14 attr :fields, :field_names
18 @json['fields'] ||= {}
19 @json['field_names'] ||= []
25 @fields = ManifestBase.load_type_name_args self, @json, 'fields', FieldFactory
26 @field_names = @json['field_names']
30 @field_names.each do |field_name|
31 yield field_name, @fields[field_name]
37 class ExtendForm < Form
41 def self.load manifest, jsons, module_name
42 Hash[jsons[module_name]['extend'].map {|name, json|
43 [name, self.new(manifest, name, json, module_name)]
49 ManifestBase.alert_undefined_message 'base', self.module_message unless @json['base']
55 @base_form = @manifest.forms[@base]
56 ManifestBase.alert_undefined_message 'base form', self.module_message unless @base_form
57 @fields.merge! @base_form.fields