Sha256: 46ad26d2c3060bcda2cf403eecf91fa55d14e3aaa8752a97cddbc75cb81dad3e

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

# An BasePresenter for Fdoc::Service
class Fdoc::ServicePresenter < Fdoc::BasePresenter
  attr_reader :service

  extend Forwardable

  def_delegators :service, :name, :service_dir, :meta_service


  def initialize(service, options = {})
    super(options)
    @service = service
  end

  def to_html
    render_erb('service.html.erb')
  end

  def to_markdown
    render_erb('service.md.erb')
  end

  def name_as_link(options = {})
    path = service.meta_service ? index_path(slug_name) : index_path
    '<a href="%s">%s %s</a>' % [ path, options[:prefix], service.name ]
  end

  def slug_name
    service.name.downcase.gsub(/[ \/]/, '_')
  end

  def url(extension = ".html")
    '%s-%s%s' % [ @endpoint.path, @endpoint.verb, extension ]
  end

  def endpoints
    if !@endpoints
      @endpoints = []
      prefix = nil

      service.endpoints.sort_by(&:endpoint_path).each do |endpoint|
        presenter = Fdoc::EndpointPresenter.new(endpoint, options)
        presenter.service_presenter = self
        presenter

        current_prefix = presenter.prefix

        @endpoints << [] if prefix != current_prefix
        @endpoints.last << presenter

        prefix = current_prefix
      end
    end

    @endpoints
  end

  def description(options = {:render => true})
    options[:render] ? render_markdown(service.description) : service.description
  end

  def discussion(options = {:render => true})
    options[:render] ? render_markdown(service.discussion) : service.discussion
  end

  def relative_meta_service_path(file_name = nil)
    service_path = service_dir.gsub(meta_service.meta_service_dir, "")
    service_path = service_path.count("/").times.map { "../" }.join
    if file_name
      service_path = File.join(service_path, file_name)
    end
    service_path
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fdoc-0.3.3 lib/fdoc/presenters/service_presenter.rb
fdoc-0.3.2 lib/fdoc/presenters/service_presenter.rb
fdoc-0.3.1 lib/fdoc/presenters/service_presenter.rb