Sha256: 96db783d4ff8f3c3563b6aea5c9dfba99aa2139a8703a8fabdc66fc2800867e8
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true require 'erubi' require 'tilt' module Radical class CaptureEngine < ::Erubi::Engine private BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/.freeze def add_expression(indicator, code) if BLOCK_EXPR.match?(code) && %w[== =].include?(indicator) src << ' ' << code else super end end end class View class << self attr_accessor :_views_path, :_layout def view_path(dir, name) filename = File.join(@_views_path || '.', 'views', dir, "#{name}.erb") raise "Could not find view file: #{filename}. You need to create it." unless File.exist?(filename) filename end def template(dir, name) Tilt.new(view_path(dir, name), engine_class: CaptureEngine, escape_html: true) end def path(path = nil, test = Env.test?) @_views_path = path || ((test ? 'test' : '') + __dir__) end def layout(name) @_layout = name end def render(dir, name, scope, options = {}) t = template(dir, name) if @_layout && options[:layout] != false layout = template('', @_layout) layout.render(scope, {}) do t.render scope end else t.render scope end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
radical-1.1.0 | lib/radical/view.rb |