Sha256: 8767a41e4010cde06bdaead87153372cec22add714dcaca22227256bd647a253

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

require 'mustache'
require 'forwardable'

require 'useless/doc/ui'

module Useless
  module Doc
    module UI
      class Godel < ::Mustache
        include UI

        def initialize(resource)
          @resource = Godel::Resource.new(resource)
        end

        class Resource
          extend Forwardable

          def_delegators :@resource, :path, :description

          def initialize(resource)
            @resource = resource
          end

          def requests
            @resource.requests.map{ |request| Godel::Request.new(request) }
          end
        end

        class Request
          extend Forwardable

          def_delegators :@request, :method, :description, :parameters, :headers, :body

          def initialize(request)
            @request = request
          end

          def authentication_requirement
            @request.authentication_required ?
              'Authentication Required' :
              'Authenication Not Required'
          end

          def parameters?
            parameters.any?
          end

          def headers?
            headers.any?
          end

          def responses
            @request.responses.map { |response| Godel::Response.new(response) }
          end
        end

        class Response
          extend Forwardable

          def_delegators :@response, :code, :description, :headers, :body

          def initialize(response)
            @response = response
          end

          def headers?
            headers.any?
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
useless-doc-0.2.2 lib/useless/doc/ui/godel.rb
useless-doc-0.2.1 lib/useless/doc/ui/godel.rb
useless-doc-0.2.0 lib/useless/doc/ui/godel.rb