Sha256: e71b808a7e32651757835bbb7971a7eb1497438a0723bb42314bd324b5f17b1d
Contents?: true
Size: 1.82 KB
Versions: 3
Compression:
Stored size: 1.82 KB
Contents
module Restspec module Schema # A schema is a collection of attributes that defines how the data passed through the API # should be formed. In REST, they are the representation of the resources the REST API # returns. class Schema # The schema identifier. attr_reader :name # The set of attributes that conforms the schema. attr_reader :attributes # The root raw value attr_reader :root # TODO: Document attr_accessor :intention attr_accessor :original_schema # @param name [Symbol] The name of the schema # @param options [Hash] Some options: # - root: If the schema should have a root `{ schema: }` around the object. If this # attribute is a symbol or string, that will be the schema root to use. # @return a new {Restspec::Schema::Schema Schema} object def initialize(name, options = {}) self.name = name self.attributes = {} self.root = options[:root] end # @param without [Array] An array of attributes that should be removed from the schema. # This shouldn't be used without cloning first, to avoid modifying a schema # used elsewhere. def extend_with(without: []) without.each { |attribute_name| attributes.delete(attribute_name.to_s) } self end def attributes_for_intention return attributes if intention.blank? attributes.inject({}) do |hash, (name, attribute)| attribute.can?(intention) ? hash.merge(name => attribute) : hash end end # # @return [true, false] if the schema must include a root. def root? !!root end def root_name root == true ? name.to_sym : root.to_sym end private attr_writer :name, :attributes, :root end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
restspec-0.3.2 | lib/restspec/schema/schema.rb |
restspec-0.3.1 | lib/restspec/schema/schema.rb |
restspec-0.3.0 | lib/restspec/schema/schema.rb |