class Msgtrail::PageRenderer
Attributes
article[RW]
articles[RW]
config[RW]
layout[RW]
markdown[RW]
plaintext[RW]
template[RW]
theme_directory[RW]
Public Class Methods
new(layout_filepath, template_filepath, config)
click to toggle source
# File lib/msgtrail/renderers.rb, line 33 def initialize(layout_filepath, template_filepath, config) self.article = {} self.config = config self.markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, strikethrough: true) self.plaintext = Redcarpet::Markdown.new(Redcarpet::Render::StripDown) self.theme_directory = File.join(config.working_directory, config.settings.file_matter.theme_directory) begin self.layout = File.read(layout_filepath) rescue puts("Can't find '#{layout_filepath}' (#{$!})") exit(2) end begin self.template = File.read(template_filepath) rescue puts("Can't find '#{template_filepath}' (#{$!})") exit(2) end end
Public Instance Methods
_render(template)
click to toggle source
# File lib/msgtrail/renderers.rb, line 65 def _render(template) ERB.new(template).result(binding) end
method_missing(missing_method_name, *args, &block)
click to toggle source
Offer shortcut `cfg` to `settings.config` for use inside ERBs
Calls superclass method
# File lib/msgtrail/renderers.rb, line 79 def method_missing(missing_method_name, *args, &block) if 'cfg' == missing_method_name.to_s self.config.settings else super end end
render()
click to toggle source
# File lib/msgtrail/renderers.rb, line 53 def render erbs = [self.template, self.layout] # Note order! # Inject accepts value and block. Nil in inject(nil) sets initial value. # First iteration: prev = nil and erb = self.template. # Since self.template has no yield only a string is rendered. # Second iteration: prev = rendered string and erb = self.layout. # Since self.layout has yield, yield will be replaced by string in prev. erbs.inject(nil) do |prev, erb| _render(erb) { prev } end end
render_partial(partial_filename, variables)
click to toggle source
# File lib/msgtrail/renderers.rb, line 69 def render_partial(partial_filename, variables) partial_filepath = File.join(self.theme_directory, "_#{partial_filename}.html.erb") PartialRenderer.new(partial_filepath, variables, self.config).render end
track(event, sub_event = nil)
click to toggle source
# File lib/msgtrail/renderers.rb, line 74 def track(event, sub_event = nil) "<img src=\"#{self.config.settings.domain_matter.tracking_pixel_url}?e=#{event}&se=#{sub_event}\" width=\"1\" height=\"1\" alt=\".\"/>" if self.config.settings.domain_matter.tracking_pixel_url end