class Render::ArrayAttribute

Constants

DEFAULT_NAME
FAUX_DATA_UPPER_LIMIT

Attributes

max_items[RW]
min_items[RW]
simple[RW]
unique[RW]

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method
# File lib/render/attributes/array_attribute.rb, line 13
def initialize(options = {})
  super

  self.name = options.fetch(:title, DEFAULT_NAME).to_sym
  self.min_items = options[:minItems] || 0
  self.max_items = options[:maxItems]
  self.unique = !!options[:uniqueItems]

  options = options.fetch(:items)
  process_options!(options)

  if options.keys.include?(:properties)
    self.schema = Schema.new(options)
  else
    self.simple = true
  end
end

Public Instance Methods

serialize(explicit_values = nil) click to toggle source
# File lib/render/attributes/array_attribute.rb, line 31
def serialize(explicit_values = nil)
  explicit_values = faux_array_data if (Render.live == false && explicit_values.nil?)
  values = if simple
    explicit_values.collect do |value|
      value = (value || default_value)
      Type.to(types, value)
    end
  else
    explicit_values.collect do |value|
      schema.serialize!(value)
    end
  end

  unique ? values.uniq : values
end

Private Instance Methods

faux_array_data() click to toggle source
# File lib/render/attributes/array_attribute.rb, line 49
def faux_array_data
  faux_max = max_items || FAUX_DATA_UPPER_LIMIT
  rand(min_items..faux_max).times.collect do
    simple ? nil : {}
  end
end