Sha256: 59b72188684fc12109d1a3ca9eeaa5dafadd586ec388a262a186732d2db129f4
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
module Restapi # method parameter description # # name - method name (show) # desc - description # required - boolean if required # validator - Validator::BaseValidator subclass class ParamDescription attr_reader :name, :desc, :required, :validator attr_accessor :parent def initialize(name, *args, &block) if args.size > 1 || !args.first.is_a?(Hash) validator_type = args.shift || nil else validator_type = nil end options = args.pop || {} @name = name @desc = Restapi.markup_to_html(options[:desc] || '') @required = options[:required] || false @validator = nil unless validator_type.nil? @validator = Validator::BaseValidator.find(self, validator_type, options, block) raise "Validator not found." unless validator end end def validate(value) unless @validator.valid?(value) raise ArgumentError.new(@validator.error) end end def full_name name_parts = parents_and_self.map(&:name) return ([name_parts.first] + name_parts[1..-1].map { |n| "[#{n}]" }).join("") end # returns an array of all the parents: starting with the root parent # ending with itself def parents_and_self ret = [] if self.parent ret.concat(self.parent.parents_and_self) end ret << self ret end def to_json if validator.is_a? Restapi::Validator::HashValidator validator.hash_params_ordered.map(&:to_json) else { :name => full_name, :description => desc, :required => required, :validator => validator.to_s } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
restapi-0.0.3 | lib/restapi/param_description.rb |