class Apogee::PageRenderer

Processes site pages for distribution

Constants

TOKEN_COMMENT_PATTERN

Attributes

page_content[R]

Public Instance Methods

automatic_tokens() click to toggle source
# File lib/apogee/page_renderer.rb, line 31
def automatic_tokens
  {
    'layout' => 'default',
    'css_bundle' => css_bundle,
    'js_bundle' => js_bundle,
    'page_content' => cleaned_page_content
  }
end
cleaned_page_content() click to toggle source
# File lib/apogee/page_renderer.rb, line 66
def cleaned_page_content
  page_content.gsub(TOKEN_COMMENT_PATTERN, '').strip
end
css_bundle() click to toggle source
# File lib/apogee/page_renderer.rb, line 54
def css_bundle
  return '' unless css?

  '<link rel="stylesheet" href="styles.css">'
end
js_bundle() click to toggle source
# File lib/apogee/page_renderer.rb, line 60
def js_bundle
  return '' unless js?

  '<script src="script.js"></script>'
end
layout_content() click to toggle source
# File lib/apogee/page_renderer.rb, line 23
def layout_content
  layout(tokens['layout'])
end
parsed_tokens() click to toggle source
# File lib/apogee/page_renderer.rb, line 40
def parsed_tokens
  doc = page_content
          .match(TOKEN_COMMENT_PATTERN)[0]
          .delete_prefix('<!--')
          .delete_suffix('-->')
          .each_line
          .map(&:strip)
          .join("\n")

  YAML.safe_load(doc)
rescue StandardError
  {}
end
render(page_content) click to toggle source
# File lib/apogee/page_renderer.rb, line 15
def render(page_content)
  @page_content = page_content

  tokens.inject(layout_content) do |rendered, (name, value)|
    rendered.gsub("{{#{name}}}", value)
  end
end
tokens() click to toggle source
# File lib/apogee/page_renderer.rb, line 27
def tokens
  automatic_tokens.merge(parsed_tokens)
end