class Diesel::Swagger::Node

Attributes

errors[R]

Public Class Methods

attribute(name, options = {}) click to toggle source
# File lib/diesel/swagger/node.rb, line 27
def attribute(name, options = {})
  name = name.to_sym
  (@attribute_names ||= []) << name
  attr_accessor name
  if options[:type] == :boolean
    define_method("#{name}?".to_sym) do
      !!send(name)
    end
  elsif options[:symbolize]
    define_method("#{name}=".to_sym) do |value|
      instance_variable_set("@#{name}".to_sym, value.nil? ? nil : value.to_sym)
    end
  end
  (@validates_children ||= []) << name if options[:validate]
end
attribute_names() click to toggle source
# File lib/diesel/swagger/node.rb, line 15
def attribute_names
  @attribute_names || []
end
collect_errors(node, all_errors = []) click to toggle source
# File lib/diesel/swagger/node.rb, line 55
def collect_errors(node, all_errors = [])
  if @validates_children
    @validates_children.each do |name|
      if attr_val = node.send(name)
        if @hash_names && @hash_names.include?(name)
          attr_val.each_pair { |k,v| v.collect_errors(all_errors) }

        elsif @list_names && @list_names.include?(name)
          attr_val.each { |v| v.collect_errors(all_errors) }

        else
          unless attr_val.respond_to? :collect_errors
            raise "Expecting #{name} to be a node"
          end
          attr_val.collect_errors(all_errors)
        end
      end
    end
  end
  all_errors
end
hash(name, options = {}) click to toggle source
# File lib/diesel/swagger/node.rb, line 49
def hash(name, options = {})
  attr_accessor name
  (@hash_names ||= []) << name
  (@validates_children ||= []) << name if options[:validate]
end
hash_names() click to toggle source
# File lib/diesel/swagger/node.rb, line 23
def hash_names
  @hash_names || []
end
inherited(base) click to toggle source
# File lib/diesel/swagger/node.rb, line 9
def inherited(base)
  base.instance_variable_set(:@attribute_names, attribute_names.dup)
  base.instance_variable_set(:@list_names, list_names.dup)
  base.instance_variable_set(:@hash_names, hash_names.dup)
end
list(name, options = {}) click to toggle source
# File lib/diesel/swagger/node.rb, line 43
def list(name, options = {})
  attr_accessor name
  (@list_names ||= []) << name
  (@validates_children ||= []) << name if options[:validate]
end
list_names() click to toggle source
# File lib/diesel/swagger/node.rb, line 19
def list_names
  @list_names || []
end
new() click to toggle source
# File lib/diesel/swagger/node.rb, line 80
def initialize
  @errors = []
end

Public Instance Methods

collect_errors(all_errors = []) click to toggle source
# File lib/diesel/swagger/node.rb, line 96
def collect_errors(all_errors = [])
  validate; all_errors.concat(errors)
  self.class.collect_errors(self, all_errors)
end
extensions() click to toggle source
# File lib/diesel/swagger/node.rb, line 84
def extensions
  @extensions ||= {}
end
serializable_hash() click to toggle source
# File lib/diesel/swagger/node.rb, line 101
def serializable_hash
  h = {}

  if self.class.attribute_names
    self.class.attribute_names.each do |nm|
      if v = __send__(nm)
        h[camelize(nm, false)] = value_or_serializable_hash(v)
      end
    end
  end

  if self.class.list_names
    self.class.list_names.each do |nm|
      if arr = __send__(nm)
        result = arr.map do |v|
          value_or_serializable_hash(v)
        end
        h[camelize(nm, false)] = result if result.any?
      end
    end
  end

  if self.class.hash_names
    self.class.hash_names.each do |nm|
      if value_hash = __send__(nm)
        result = value_hash.reduce({}) do |m,(k,v)|
          m[k] = value_or_serializable_hash(v); m
        end
        h[camelize(nm, false)] = result if result.any?
      end
    end
  end

  h
end
to_json() click to toggle source
# File lib/diesel/swagger/node.rb, line 137
def to_json
  MultiJson.dump(serializable_hash)
end
Also aliased as: to_s
to_s()
Alias for: to_json
valid?() click to toggle source
# File lib/diesel/swagger/node.rb, line 91
def valid?
  validate
  @errors.any?
end
validate() click to toggle source
# File lib/diesel/swagger/node.rb, line 88
def validate
end

Private Instance Methods

value_or_serializable_hash(v) click to toggle source
# File lib/diesel/swagger/node.rb, line 144
def value_or_serializable_hash(v)
  v.respond_to?(:serializable_hash) ? v.serializable_hash : v
end