class Limitedrun::Themekit::Renderer

Public Instance Methods

render(template, template_assigns = nil) click to toggle source
# File lib/limitedrun-themekit/renderer.rb, line 14
def render(template, template_assigns = nil)
  assigns = global_assigns

  if template_assigns
    template_assigns.each_key do |k|
      unless template_assigns[k].is_a?(Hashie::Mash)
        template_assigns[k] = Hashie::Mash.new(instance_eval &template_assigns[k])
      end
    end

    assigns.merge!(template_assigns.stringify_keys)
  end

  layout = parse_template File.join(Limitedrun::Themekit::Config.layouts_dir, 'default.html')
  template = parse_template File.join(Limitedrun::Themekit::Config.templates_dir, template)

  layout.render(assigns.merge('content' => template.render(assigns)))
end
render_string(string) click to toggle source
# File lib/limitedrun-themekit/renderer.rb, line 33
def render_string(string)
  Liquid::Template.parse(string).render('config' => theme_config)
end

Protected Instance Methods

global_assigns() click to toggle source

Assignments for all liquid templates

# File lib/limitedrun-themekit/renderer.rb, line 40
def global_assigns
  { 'config' => theme_config, 'store' => store }
end
parse_template(template) click to toggle source
# File lib/limitedrun-themekit/renderer.rb, line 76
def parse_template(template)
  Liquid::Template.parse(
    File.read(
      File.join(
        Limitedrun::Themekit::Config.theme_path,
        template
      )
    )
  )
end
store() click to toggle source

Store mock data model loaded from store.json

# File lib/limitedrun-themekit/renderer.rb, line 72
def store
  @store ||= Hashie::Mash.new(JSON.parse(File.read(File.join(Limitedrun::Themekit::Config.theme_path, 'store.json'))))
end
theme_config() click to toggle source

Theme configuration extracted from config/defaults.js and store.config overrides

# File lib/limitedrun-themekit/renderer.rb, line 45
def theme_config
  return @theme_config if @theme_config

  settings = JSON.parse(
    File.read(
      File.join(
        Limitedrun::Themekit::Config.theme_path,
        Limitedrun::Themekit::Config.configs_dir,
        'default.json'
      )
    )
  )['settings']

  config = {}

  settings.each do |k, v|
    config[k] = v['default'] if v['default']
  end

  if store && store.config
    store.config.each { |k, v| config[k] = v }
  end

  @config = config
end