Sha256: 62c2fca3d9ad6f3ab6838acf11844a97e7e598cb81bcff5bab5ca1fb7242c973

Contents?: true

Size: 913 Bytes

Versions: 3

Compression:

Stored size: 913 Bytes

Contents

require 'apipie_bindings/utilities'

module ApipieBindings

  class Param

    attr_reader :name, :params, :expected_type, :description, :validator

    def initialize(param)
      param = ApipieBindings::IndifferentHash.new(param)
      @name = param[:name]
      params = param[:params] || []
      @params = params.map { |p| ApipieBindings::Param.new(p) }
      @expected_type = param[:expected_type].to_sym
      @description = param[:description].gsub(/<\/?[^>]+?>/, "")
      @required = param[:required] || @params.inject(false) { |req, par| req ||= par.required? }
      @validator = param[:validator]
    end

    def tree(&block)
      ApipieBindings::Utilities.params_hash_tree(@params, &block)
    end

    def required?
      @required
    end

    def to_s
      "<Param #{ required? ? '*' : '' }#{@name} (#{@expected_type.to_s.capitalize})>"
    end

    def inspect
      to_s
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
apipie-bindings-0.0.12 lib/apipie_bindings/param.rb
apipie-bindings-0.0.11 lib/apipie_bindings/param.rb
apipie-bindings-0.0.10 lib/apipie_bindings/param.rb