Sha256: fe5a865eb619373fb8c04cb98549eac091a07cc23de378080058832c8cb9b45a

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

require 'erb'
require 'kramdown'

OPRO_MD_ROOT = File.join(File.dirname(__FILE__), '../../../views/opro/oauth/docs/markdown/')

class Opro::Oauth::DocsController < OproController
  before_filter :set_protocol!
  helper_method :render_doc

  def index
  end

  def show
    @doc  = params[:id]
    render :file => default_404, :status => 404 and return unless md_exists?(@doc)
  end

  def render_doc(name)
    str = read_file(name.to_s)
    str = parse_erb(str)
    str = parse_markdown(str)
    str.html_safe
  end

  private

  def default_404
    Rails.root.join("public", "404")
  end

  def set_protocol!
    @protocol = Rails.env.production? ? "https" : "http"
  end

  def parse_erb(str)
    ERB.new(str).result(binding)
  end

  def parse_markdown(str)
    Kramdown::Document.new(str).to_html
  end

  def doc_md_filename(name)
    OPRO_MD_ROOT + name + '.md.erb'
  end

  def md_exists?(name)
    File.exists?(doc_md_filename(name.to_s))
  end

  def read_file(name)
    File.open(doc_md_filename(name)).read.to_s
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
opro-0.5.0 app/controllers/opro/oauth/docs_controller.rb
opro-0.4.3 app/controllers/opro/oauth/docs_controller.rb
opro-0.4.2 app/controllers/opro/oauth/docs_controller.rb
opro-0.4.1 app/controllers/opro/oauth/docs_controller.rb