Sha256: 188c53f4105cca4dc3aa548bcaf4f1e6d07dc65305bcbd786d81d9be3edbbb89

Contents?: true

Size: 1.14 KB

Versions: 30

Compression:

Stored size: 1.14 KB

Contents

module Betterdocs
  class JsonParamsRepresenterCollector
    def initialize
      @params = {}
    end

    attr_reader :params

    def param(param_name)
      param_name = param_name.to_sym
      @params[param_name]
    end

    def add_element(representer, type, name, **options, &block)
      element = build_element(representer, type, name, options, &block)
      element.add_to_collector(self)
    end

    def representer
      @params.values.find { |v|
        v.representer and break v.representer
      }
    end

    def to_s
      result = "*** #{representer} ***\n"
      if params = @params.values.full?
        result << "\nProperties:"
        params.each_with_object(result) do |param, r|
          r << "\n#{param.full_name}: (#{param.types * '|'}): #{param.description}\n"
        end
      end
      result
    end

    private

    def build_element(representer, type, *args, &block)
      begin
        element = Dsl::JsonParams.const_get(type.to_s.camelcase)
      rescue NameError => e
        raise ArgumentError, "unknown documentation element type #{type.inspect}"
      end
      element.new(representer, *args, &block)
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
betterdocs-0.14.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.13.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.5 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.4 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.3 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.2 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.1 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.12.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.11.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.10.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.9.2 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.9.1 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.9.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.8.1 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.8.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.7.1 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.7.0 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.6.8 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.6.7 lib/betterdocs/json_params_representer_collector.rb
betterdocs-0.6.6 lib/betterdocs/json_params_representer_collector.rb