class Markedly::Document

Constants

DEFAULT_PORT

Attributes

css[R]
destination[R]
path[R]
port[R]
source[R]
uri[R]

Public Class Methods

new(source, options = {}) click to toggle source
# File lib/markedly/document.rb, line 18
def initialize(source, options = {})
  @source = File.expand_path(source)
  @path = File.basename(source)
  @port = options[:port] || DEFAULT_PORT
  @markdown = Markdown.new(options[:parse], options[:render])
  initialize_template
  initialize_assets(options)
  initialize_destination
end

Public Instance Methods

convert() click to toggle source
# File lib/markedly/document.rb, line 28
def convert
  @dest_file.rewind
  @dest_file.write render(body_html, @css, @port)
  @dest_file.truncate(@dest_file.pos)
  @dest_file.flush
end

Private Instance Methods

body_html() click to toggle source
# File lib/markedly/document.rb, line 62
def body_html
  content = File.read(@source)
  @markdown.render(content)
end
initialize_assets(options = {}) click to toggle source
# File lib/markedly/document.rb, line 37
def initialize_assets(options = {})
  css = options[:css]
  if css.nil?
    @css = nil
  elsif File.file?(css)
    @css = CssAsset.new(File.expand_path(css))
  elsif css =~ /^https?:\/\//
    @css = CssAsset.new(css)
  else
    @css = CssAsset.asset(css)
  end
end
initialize_destination() click to toggle source
# File lib/markedly/document.rb, line 55
def initialize_destination
  basename = [ File.basename(self.source), '.html' ]
  @dest_file = Tempfile.open(basename)
  @destination = @dest_file.path
  @uri = Addressable::URI.convert_path(@destination).to_s
end
initialize_template(options = {}) click to toggle source
# File lib/markedly/document.rb, line 50
def initialize_template(options = {})
  asset_dir = File.expand_path('../../../assets', __FILE__)
  @template = File.join(asset_dir, 'document.html.erb')
end
render(body, css, port) click to toggle source
# File lib/markedly/document.rb, line 67
def render(body, css, port)
  erb = ERB.new(File.read(@template), nil, '-')
  erb.result(binding)
end