Sha256: d7e7206697855a975f428f68a9e009817fe4c27a7ac97fc317b73d3982e2cfd3

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

module GrapeMarkdown
  class SampleGenerator
    attr_reader :resource, :root

    delegate :unique_params, to: :resource

    def initialize(resource)
      @resource = resource
      @root     = resource.key.singularize
    end

    def sample(id = false)
      array = resource.unique_params.map do |param|
        next if param.name == root

        [param.name, param.example]
      end

      hash = Hash[array.compact]

      hash = hash.reverse_merge('id' => Configuration.generate_id) if id
      hash = { root => hash } if Configuration.include_root

      hash
    end

    def request(opts = {})
      hash = sample

      return unless hash.present?

      json(hash, opts[:pretty])
    end

    def response(opts = {})
      hash = sample(true)

      return unless hash.present?

      hash = [hash] if opts[:list]

      json(hash, opts[:pretty])
    end

    private

    def json(hash, pretty = true)
      if pretty
        JSON.pretty_generate(hash)
      else
        JSON.generate(hash)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
grape-markdown-0.0.7 lib/grape-markdown/sample_generator.rb
grape-markdown-0.0.6 lib/grape-markdown/sample_generator.rb
grape-markdown-0.0.5 lib/grape-markdown/sample_generator.rb
grape-markdown-0.0.4 lib/grape-markdown/sample_generator.rb