File: test_helper.rb

package info (click to toggle)
ruby-handlebars-assets 2%3A0.23.9%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 300 kB
  • sloc: ruby: 744; sh: 46; javascript: 15; makefile: 10
file content (87 lines) | stat: -rw-r--r-- 2,167 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
require 'handlebars_assets'
require 'handlebars_assets/config'
require 'handlebars_assets/handlebars_template'
require 'handlebars_assets/handlebars'

require 'minitest/autorun'
require 'haml'
require 'slim'

module SprocketsScope
  # Try to act like sprockets.
  def make_scope(root, file)
    Class.new do
      define_method(:logical_path) { pathname.to_s.gsub(root + '/', '').gsub(/\..*/, '') }

      define_method(:pathname) { Pathname.new(root) + file }

      define_method(:root_path) { root }
    end.new
  end
end

module CompilerSupport
  include HandlebarsAssets::Unindent

  def compile_hbs(source)
    compiler_src = Pathname(HandlebarsAssets::Config.compiler_path).join(HandlebarsAssets::Config.compiler).read
    ExecJS.compile("var window = {}; " + compiler_src).call('Handlebars.precompile', source, HandlebarsAssets::Config.options)
  end

  def hbs_compiled(template_name, source)
    compiled_hbs = compile_hbs(source).strip
    template_namespace = HandlebarsAssets::Config.template_namespace

    <<-END_EXPECTED
(function() {
  this.#{template_namespace} || (this.#{template_namespace} = {});
  this.#{template_namespace}[#{template_name.dump}] = Handlebars.template(#{compiled_hbs});
  return this.#{template_namespace}[#{template_name.dump}];
}).call(this);
    END_EXPECTED
  end

  def hbs_compiled_partial(partial_name, source)
    compiled_hbs = compile_hbs(source)

    <<-END_EXPECTED
(function() {
  Handlebars.registerPartial(#{partial_name.dump}, Handlebars.template(#{compiled_hbs}));
}).call(this);
    END_EXPECTED
  end
end

module HandlebarsAssets
  module Config
    extend self

    def reset!
      @chomp_underscore_for_partials = nil
      @compiler = nil
      @compiler_path = 'vendor/assets/javascripts'
      @haml_options = nil
      @known_helpers = nil
      @known_helpers_only = nil
      @options = nil
      @patch_files = nil
      @patch_path = nil
      @path_prefix = nil
      @template_namespace = nil
      @ember = nil
    end

  end

  class Handlebars

    def self.reset!
      @context = nil
      @source = nil
      @patch_path = nil
      @path = nil
      @assets_path = nil
    end

  end
end