Sha256: 12e13ffd53eae846aee9ada4bd11cbcf8e8705b3e9b66d96cd05579abb6a3bcf

Contents?: true

Size: 958 Bytes

Versions: 10

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

# Tag for injecting template rendering. Example tag:
#   {{cms:template template/path}}
# This expands into something like this:
#   <%= render template: "template/path" %>
# Whitelist is can be used to control what templates are available.
#
class Occams::Content::Tag::Template < Occams::Content::Tag
  attr_reader :path

  def initialize(context:, params: [], source: nil)
    super
    @path = params[0]

    return if @path.present?

    raise Error, 'Missing template path for template tag'
  end

  # we output erb into rest of the content
  def allow_erb?
    true
  end

  def content
    format('<%%= render template: %<path>p %%>', path: path)
  end

  def render
    whitelist = Occams.config.allowed_templates
    if whitelist.is_a?(Array)
      whitelist.member?(@path) ? content : ''
    else
      content
    end
  end
end

Occams::Content::Renderer.register_tag(
  :template, Occams::Content::Tag::Template
)

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
occams-1.0.7.3 lib/occams/content/tags/template.rb
occams-1.0.7.2 lib/occams/content/tags/template.rb
occams-1.0.7.1 lib/occams/content/tags/template.rb
occams-1.0.7 lib/occams/content/tags/template.rb
occams-1.0.6.1 lib/occams/content/tags/template.rb
occams-1.0.6 lib/occams/content/tags/template.rb
occams-1.0.5 lib/occams/content/tags/template.rb
occams-1.0.4 lib/occams/content/tags/template.rb
occams-1.0.3 lib/occams/content/tags/template.rb
occams-1.0.2 lib/occams/content/tags/template.rb