Class: JsonMessage::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/json_message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}, &blk) ⇒ Field

Returns a new instance of Field.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/json_message.rb', line 37

def initialize(name, options = {}, &blk)
  blk ||= lambda { |*_| options[:schema] || any }

  @name = name
  @schema = Membrane::SchemaParser.parse(&blk)
  @required = options[:required] || false
  @default = options[:default]

  if @required && @default
    raise DefinitionError, \
      "Cannot define a default value for required field #{name}"
  end

  validate(@default) if @default
end

Instance Attribute Details

#defaultObject (readonly)

Returns the value of attribute default.



35
36
37
# File 'lib/json_message.rb', line 35

def default
  @default
end

#nameObject (readonly)

Returns the value of attribute name.



35
36
37
# File 'lib/json_message.rb', line 35

def name
  @name
end

#requiredObject (readonly)

Returns the value of attribute required.



35
36
37
# File 'lib/json_message.rb', line 35

def required
  @required
end

#schemaObject (readonly)

Returns the value of attribute schema.



35
36
37
# File 'lib/json_message.rb', line 35

def schema
  @schema
end

Instance Method Details

#validate(value) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/json_message.rb', line 53

def validate(value)
  begin
    @schema.validate(value)
  rescue Membrane::SchemaValidationError => e
    raise ValidationError.new( { name => e.message } )
  end
end