Sha256: 6502b813dac2ede5c88ec9c5cbd9b6046f5e0903fe8038b1d5e372c4387b6280
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
# frozen_string_literal: true module Handlebarsjs # Wraps MiniRacer snapshot and provides clean API class SnapshotBuilder attr_reader :scripts def initialize @scripts = [] end def add_handlebars_js add_script('handlebars', 'library', path: Handlebarsjs::JAVASCRIPT_PATH) end def add_library(name, script: nil, path: nil) add_script(name, 'library', script: script, path: path) end def register_helper(name) add_script(name, 'helper', script: "Handlebars.registerHelper('#{name}', ruby_#{name})") end def script scripts.map { |script| "# #{script[:type]} - #{script[:name]}\n#{script[:script]}" }.join("\n\n") end def build MiniRacer::Snapshot.new(script) end private def add_script(name, type, script: nil, path: nil) raise Handlebarsjs::Error, 'script or path is required' if script.nil? && path.nil? raise Handlebarsjs::Error, 'script and path are mutually exclusive' if script && path script ||= File.read(path) add_script_item(name, type, script, path) end def add_script_item(name, type, script, path = nil) scripts << { name: name, type: type, script: script, path: path } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
handlebarsjs-0.1.2 | lib/handlebarsjs/snapshot_builder.rb |