Sha256: a9e2565e4309e3e4268a7f42ae6de1acf602c81761f5cc1fe9b593d2ab9e1cde

Contents?: true

Size: 671 Bytes

Versions: 4

Compression:

Stored size: 671 Bytes

Contents

# frozen_string_literal: true

class Zilla::Versions::V20::Parameter
  include Memery

  attr_reader :json, :definitions

  def initialize(json, definitions: {})
    @json = json
    @definitions = definitions
  end

  [:name, :in, :description, :required, :type].each do |name|
    define_method(name) do
      json[name.to_s]
    end
  end

  def in?(location) = json["in"] == location
  def required? = !!@json["required"]

  def validate!(value)
    errors = schema.validate(value)

    raise ArgumentError, errors.to_a.to_s if errors.any?
  end

  memoize def schema = JSONSchemer.schema(json.merge("definitions" => definitions), insert_property_defaults: true)
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
zilla-0.1.5 lib/zilla/versions/v20/parameter.rb
zilla-0.1.4 lib/zilla/versions/v20/parameter.rb
zilla-0.1.3 lib/zilla/versions/v20/parameter.rb
zilla-0.1.2 lib/zilla/versions/v20/parameter.rb