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