Sha256: c0b6c8d167b92b8708813e68e963c9df885001c33a90184fb20ca88ad2bffb72

Contents?: true

Size: 1.8 KB

Versions: 4

Compression:

Stored size: 1.8 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 actions
            @resource.actions.map{ |action| Godel::Action.new(action) }
          end
        end

        class Action
          extend Forwardable

          def_delegators :@action, :description, :method

          def initialize(action)
            @action = action
          end

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

          def request
            Godel::Request.new(@action.request)
          end

          def response
            Godel::Response.new(@action.response)
          end
        end

        class Request
          extend Forwardable

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

          def initialize(request)
            @request = request
          end

          def parameters?
            parameters.any?
          end

          def headers?
            headers.any?
          end
        end

        class Response
          extend Forwardable

          def_delegators :@response, :statuses, :headers, :body

          def initialize(response)
            @response = response
          end

          def statuses?
            statuses.any?
          end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
useless-doc-0.1.3 lib/useless/doc/ui/godel.rb
useless-doc-0.1.2 lib/useless/doc/ui/godel.rb
useless-doc-0.1.1 lib/useless/doc/ui/godel.rb
useless-doc-0.1.0 lib/useless/doc/ui/godel.rb