module JSON::SchemaBuilder::Attribute::ClassMethods

Public Instance Methods

attribute(name, as: nil, array: false) click to toggle source
# File lib/json/schema_builder/attribute.rb, line 7
def attribute(name, as: nil, array: false)
  attr = as || snakeize(name)
  define_method name do |*values|
    result = if array
      _array_attr attr, values.flatten
    else
      _attr attr, values.first
    end

    parent.reinitialize if parent
    result
  end
  alias_method "#{ name }=", name
end

Protected Instance Methods

snakeize(str) click to toggle source
# File lib/json/schema_builder/attribute.rb, line 24
def snakeize(str)
  str.to_s.underscore.gsub(/_(\w)/){ $1.upcase }
end