Class: Bed::SchemaBuilder

Inherits:
Object show all
Defined in:
lib/bed/definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSchemaBuilder

Returns a new instance of SchemaBuilder.



106
107
108
# File 'lib/bed/definition.rb', line 106

def initialize
  @fields = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(type, *args) ⇒ Object (private)



134
135
136
137
# File 'lib/bed/definition.rb', line 134

def method_missing(type, *args)
  field_name = args.first
  @fields[field_name] = Object.const_get(type)
end

Instance Attribute Details

#fieldsObject (readonly)

Returns the value of attribute fields.



104
105
106
# File 'lib/bed/definition.rb', line 104

def fields
  @fields
end

Instance Method Details

#compile(&block) ⇒ Object



116
117
118
# File 'lib/bed/definition.rb', line 116

def compile(&block)
  instance_eval(&block)
end

#define_field(type, field_name, required: true, enable_default: false, default_value: nil, allow_nil: false) ⇒ Object



124
125
126
# File 'lib/bed/definition.rb', line 124

def define_field(type, field_name, required: true, enable_default: false, default_value: nil, allow_nil: false)
  @fields[field_name] = Field.new(name: field_name, type: type, required: required, enable_default: enable_default, default_value: default_value, allow_nil: allow_nil)
end

#to_schemaObject



120
121
122
# File 'lib/bed/definition.rb', line 120

def to_schema
  Schema.new(@fields)
end