temple 0.9.1 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +2 -1
  3. data/CHANGES +16 -0
  4. data/Gemfile +0 -1
  5. data/lib/temple/engine.rb +1 -0
  6. data/lib/temple/erb/engine.rb +3 -0
  7. data/lib/temple/erb/parser.rb +1 -0
  8. data/lib/temple/erb/template.rb +1 -0
  9. data/lib/temple/erb/trimming.rb +1 -0
  10. data/lib/temple/exceptions.rb +1 -0
  11. data/lib/temple/filter.rb +1 -0
  12. data/lib/temple/filters/ambles.rb +1 -0
  13. data/lib/temple/filters/code_merger.rb +1 -0
  14. data/lib/temple/filters/control_flow.rb +1 -0
  15. data/lib/temple/filters/dynamic_inliner.rb +2 -1
  16. data/lib/temple/filters/encoding.rb +1 -0
  17. data/lib/temple/filters/eraser.rb +1 -0
  18. data/lib/temple/filters/escapable.rb +1 -0
  19. data/lib/temple/filters/multi_flattener.rb +1 -0
  20. data/lib/temple/filters/remove_bom.rb +1 -0
  21. data/lib/temple/filters/static_analyzer.rb +1 -0
  22. data/lib/temple/filters/static_merger.rb +1 -0
  23. data/lib/temple/filters/string_splitter.rb +2 -1
  24. data/lib/temple/filters/validator.rb +1 -0
  25. data/lib/temple/generator.rb +9 -12
  26. data/lib/temple/generators/array.rb +1 -0
  27. data/lib/temple/generators/array_buffer.rb +1 -0
  28. data/lib/temple/generators/erb.rb +1 -0
  29. data/lib/temple/generators/rails_output_buffer.rb +7 -3
  30. data/lib/temple/generators/string_buffer.rb +2 -1
  31. data/lib/temple/grammar.rb +1 -0
  32. data/lib/temple/html/attribute_merger.rb +1 -0
  33. data/lib/temple/html/attribute_remover.rb +1 -0
  34. data/lib/temple/html/attribute_sorter.rb +1 -0
  35. data/lib/temple/html/dispatcher.rb +1 -0
  36. data/lib/temple/html/fast.rb +1 -0
  37. data/lib/temple/html/filter.rb +1 -0
  38. data/lib/temple/html/pretty.rb +1 -0
  39. data/lib/temple/html/safe.rb +1 -0
  40. data/lib/temple/map.rb +1 -0
  41. data/lib/temple/mixins/dispatcher.rb +1 -0
  42. data/lib/temple/mixins/engine_dsl.rb +1 -0
  43. data/lib/temple/mixins/grammar_dsl.rb +2 -1
  44. data/lib/temple/mixins/options.rb +1 -0
  45. data/lib/temple/mixins/template.rb +1 -0
  46. data/lib/temple/parser.rb +1 -0
  47. data/lib/temple/static_analyzer.rb +1 -0
  48. data/lib/temple/templates/rails.rb +3 -2
  49. data/lib/temple/templates/tilt.rb +1 -0
  50. data/lib/temple/templates.rb +1 -0
  51. data/lib/temple/utils.rb +3 -1
  52. data/lib/temple/version.rb +2 -1
  53. data/lib/temple.rb +1 -0
  54. data/spec/filters/string_splitter_spec.rb +1 -1
  55. data/spec/generator_spec.rb +22 -10
  56. data/temple.gemspec +0 -1
  57. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec5bd4c914592e35029369b132ae55d5ae56771b73d5c8710d3b6cbaf8c1409d
4
- data.tar.gz: 379717f7a2b6580cfe6e3732dcb8da6ff76f6adf2ec725cfc32eacd988f8471a
3
+ metadata.gz: 3fdf456fd2d277a110681cc1d0dd228bba3b75306b3caa78fb12ad668a7665c6
4
+ data.tar.gz: 7dfdd5001be5c652254aab301e391d7652c0bc1e44a00ee9fe5002c1899e99c1
5
5
  SHA512:
6
- metadata.gz: 938451e922d130af494c37d73612b35c53e05a94143d1cabff3e725b4512fbc4a04e1bf7acc27be0e8b37ebc7b00a2d9859e4f073c0941aeada7a1ed396889db
7
- data.tar.gz: f2925b82e2fb217f63d0afa4890c71f7ff6e209ee7775e33b9fb4a3885dce9bd638e46b8280f58f3f5002b020fd3e07792c560c3e44ed4b182dbfcefa2c66978
6
+ metadata.gz: 4d5847567944020f1be6ddf6b96b056ff0154cb26b00e71d4c736337cddc3e1ceb402ef4eabc3fa8a150ec56fd560cb0ac22358c8f1673bc2dfabb8407a482b9
7
+ data.tar.gz: f8f766aeb193a7bf781297dff7628d2e9d09840a241130f4a04f60b72e16d237c965f327696788e29f58ddadc1ce843392a52619363fc19dc5da66966d42ed09
@@ -22,10 +22,11 @@ jobs:
22
22
  - '2.7'
23
23
  - '3.0'
24
24
  - '3.1'
25
+ - '3.2'
25
26
  - jruby
26
27
  - truffleruby-head
27
28
  steps:
28
- - uses: actions/checkout@v2
29
+ - uses: actions/checkout@v3
29
30
  - name: Set up Ruby
30
31
  uses: ruby/setup-ruby@v1
31
32
  with:
data/CHANGES CHANGED
@@ -1,6 +1,22 @@
1
+ 0.10.2
2
+
3
+ * Fix Sinatra capture_generator problem (#145)
4
+
5
+ 0.10.1
6
+
7
+ * Use specified :capture_generator for nested captures (#112, #144)
8
+ * Compatibility with frozen string literals
9
+
10
+ 0.10.0
11
+
12
+ * Regression: Revert changes to :capture_generator since 0.8.2 (#112, #113, #137)
13
+ * Regression: Ensure that output buffer is not reused for capturing in Rails (#135)
14
+ * Drop support for Rails 4.x
15
+
1
16
  0.9.1
2
17
 
3
18
  * Fix Slim's error in AttributeMerger due to 0.9.0's :capture_generator (#137)
19
+ * Use specified :capture_generator for nested captures (#112)
4
20
  * Fix Temple::ERB::Engine's <%= to not escape and <%== to escape expressions
5
21
 
6
22
  0.9.0
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
1
  source 'https://rubygems.org/'
2
2
  gemspec
3
- gem 'escape_utils' if ENV['ESCAPE_UTILS']
data/lib/temple/engine.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # An engine is simply a chain of compilers (that often includes a parser,
3
4
  # some filters and a generator).
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module ERB
3
4
  # Example ERB engine implementation
@@ -7,6 +8,8 @@ module Temple
7
8
  use Temple::ERB::Parser
8
9
  use Temple::ERB::Trimming
9
10
  filter :Escapable
11
+ filter :StringSplitter
12
+ filter :StaticAnalyzer
10
13
  filter :MultiFlattener
11
14
  filter :StaticMerger
12
15
  generator :ArrayBuffer
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module ERB
3
4
  # Example ERB parser
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # ERB example implementation
3
4
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module ERB
3
4
  # ERB trimming like in erubis
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Exception raised if invalid temple expression is found
3
4
  #
data/lib/temple/filter.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Temple base filter
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  class Ambles < Filter
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Control flow filter which processes [:if, condition, yes-exp, no-exp]
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Inlines several static/dynamic into a single dynamic.
@@ -36,7 +37,7 @@ module Temple
36
37
  # another one, we add both then.
37
38
  state = :single
38
39
  prev = [exp]
39
- curr = [:dynamic, '"']
40
+ curr = [:dynamic, '"'.dup]
40
41
  when :single
41
42
  # Yes! We found another one. Add the current dynamic to the result.
42
43
  state = :several
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Try to encode input string
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Erase expressions with a certain type
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Escape dynamic or static expressions.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Flattens nested multi expressions
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Remove BOM from input string
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Convert [:dynamic, code] to [:static, text] if code is static Ruby expression.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Merges several statics into a single static. Example:
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  begin
2
3
  require 'ripper'
3
4
  rescue LoadError
@@ -7,7 +8,7 @@ module Temple
7
8
  module Filters
8
9
  # Compile [:dynamic, "foo#{bar}"] to [:multi, [:static, 'foo'], [:dynamic, 'bar']]
9
10
  class StringSplitter < Filter
10
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
11
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
11
12
  class << self
12
13
  # `code` param must be valid string literal
13
14
  def compile(code)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Filters
3
4
  # Validates temple expression with given grammar
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Abstract generator base class
3
4
  # Generators should inherit this class and
@@ -10,9 +11,9 @@ module Temple
10
11
  include Mixins::Options
11
12
 
12
13
  define_options :save_buffer,
13
- capture_generator: :self,
14
+ capture_generator: 'StringBuffer',
14
15
  buffer: '_buf',
15
- freeze_static: RUBY_VERSION >= '2.1'
16
+ freeze_static: true
16
17
 
17
18
  def call(exp)
18
19
  [preamble, compile(exp), postamble].flatten.compact.join('; ')
@@ -54,7 +55,9 @@ module Temple
54
55
  end
55
56
 
56
57
  def on_capture(name, exp)
57
- capture_generator.new(**options, buffer: name).call(exp)
58
+ capture_generator.new(capture_generator: options[:capture_generator],
59
+ freeze_static: options[:freeze_static],
60
+ buffer: name).call(exp)
58
61
  end
59
62
 
60
63
  def on_static(text)
@@ -76,15 +79,9 @@ module Temple
76
79
  end
77
80
 
78
81
  def capture_generator
79
- @capture_generator ||=
80
- case options[:capture_generator]
81
- when :self
82
- self.class
83
- when Class
84
- options[:capture_generator]
85
- else
86
- Generators.const_get(options[:capture_generator])
87
- end
82
+ @capture_generator ||= Class === options[:capture_generator] ?
83
+ options[:capture_generator] :
84
+ Generators.const_get(options[:capture_generator])
88
85
  end
89
86
 
90
87
  def concat(str)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Generators
3
4
  # Implements an array buffer.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Generators
3
4
  # Just like Array, but calls #join on the array.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Generators
3
4
  # Implements an ERB generator.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Generators
3
4
  # Implements a rails output buffer.
@@ -9,10 +10,9 @@ module Temple
9
10
  #
10
11
  # @api public
11
12
  class RailsOutputBuffer < StringBuffer
12
- define_options :streaming,
13
+ define_options :streaming, # ignored
13
14
  buffer_class: 'ActionView::OutputBuffer',
14
15
  buffer: '@output_buffer',
15
- # output_buffer is needed for Rails 3.1 Streaming support
16
16
  capture_generator: RailsOutputBuffer
17
17
 
18
18
  def call(exp)
@@ -20,7 +20,11 @@ module Temple
20
20
  end
21
21
 
22
22
  def create_buffer
23
- "#{buffer} = output_buffer || #{options[:buffer_class]}.new"
23
+ if buffer == '@output_buffer'
24
+ "#{buffer} = output_buffer || #{options[:buffer_class]}.new"
25
+ else
26
+ "#{buffer} = #{options[:buffer_class]}.new"
27
+ end
24
28
  end
25
29
 
26
30
  def concat(str)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Generators
3
4
  # Implements a string buffer.
@@ -10,7 +11,7 @@ module Temple
10
11
  # @api public
11
12
  class StringBuffer < ArrayBuffer
12
13
  def create_buffer
13
- "#{buffer} = ''"
14
+ "#{buffer} = ''.dup"
14
15
  end
15
16
 
16
17
  def return_buffer
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Temple expression grammar which can be used to validate Temple expressions.
3
4
  #
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # This filter merges html attributes (e.g. used for id and class)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # This filter removes empty attributes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # This filter sorts html attributes.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # @api private
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module HTML
3
4
  class SafeString < String
data/lib/temple/map.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Immutable map class which supports map merging
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Mixins
3
4
  # @api private
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Mixins
3
4
  # @api private
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Mixins
3
4
  # @api private
@@ -67,7 +68,7 @@ module Temple
67
68
  unmatched.reverse_each do |u|
68
69
  entry = u if u.flatten.size < entry.flatten.size
69
70
  end
70
- raise(InvalidExpression, PP.pp(entry.last, "#{@grammar}::#{entry.first} did not match\n"))
71
+ raise(InvalidExpression, PP.pp(entry.last, "#{@grammar}::#{entry.first} did not match\n".dup))
71
72
  end
72
73
  end
73
74
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Mixins
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Mixins
3
4
  # @api private
data/lib/temple/parser.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # Temple base parser
3
4
  # @api public
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  begin
2
3
  require 'ripper'
3
4
  rescue LoadError
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  module Templates
3
4
  class Rails
@@ -18,8 +19,8 @@ module Temple
18
19
 
19
20
  def self.register_as(*names)
20
21
  raise 'Rails is not loaded - Temple::Templates::Rails cannot be used' unless defined?(::ActionView)
21
- if ::ActiveSupport::VERSION::MAJOR < 3 || ::ActiveSupport::VERSION::MAJOR == 3 && ::ActiveSupport::VERSION::MINOR < 1
22
- raise "Temple supports only Rails 3.1 and greater, your Rails version is #{::ActiveSupport::VERSION::STRING}"
22
+ if ::ActiveSupport::VERSION::MAJOR < 5
23
+ raise "Temple supports only Rails 5 and greater, your Rails version is #{::ActiveSupport::VERSION::STRING}"
23
24
  end
24
25
  names.each do |name|
25
26
  ::ActionView::Template.register_template_handler name.to_sym, new
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'tilt'
2
3
 
3
4
  module Temple
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
3
  # @api public
3
4
  module Templates
data/lib/temple/utils.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  begin
2
3
  require 'cgi/escape'
3
4
  rescue LoadError
@@ -14,7 +15,8 @@ module Temple
14
15
  # @param html [String] The string to escape
15
16
  # @return [String] The escaped string
16
17
  def escape_html_safe(html)
17
- html.html_safe? ? html : escape_html(html)
18
+ s = html.to_s
19
+ s.html_safe? || html.html_safe? ? s : escape_html(s)
18
20
  end
19
21
 
20
22
  if defined?(CGI.escapeHTML)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Temple
2
- VERSION = '0.9.1'
3
+ VERSION = '0.10.2'
3
4
  end
data/lib/temple.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'temple/version'
2
3
 
3
4
  module Temple
@@ -4,7 +4,7 @@ begin
4
4
  rescue LoadError
5
5
  end
6
6
 
7
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0"
7
+ if defined?(Ripper)
8
8
  describe Temple::Filters::StringSplitter do
9
9
  before do
10
10
  @filter = Temple::Filters::StringSplitter.new
@@ -22,6 +22,12 @@ class SimpleGenerator < Temple::Generator
22
22
  end
23
23
  end
24
24
 
25
+ class SimpleCaptureGenerator < SimpleGenerator
26
+ def preamble
27
+ "#{buffer} = CAPTURE_BUFFER"
28
+ end
29
+ end
30
+
25
31
  describe Temple::Generator do
26
32
  it 'should compile simple expressions' do
27
33
  gen = SimpleGenerator.new
@@ -62,13 +68,19 @@ describe Temple::Generator do
62
68
  'foo << (D:dynamic); C:code; foo; VAR << (S:after); VAR')
63
69
  end
64
70
 
65
- it 'should compile nested capture with the same capture_generator' do
66
- gen = SimpleGenerator.new(buffer: "VAR", capture_generator: SimpleGenerator)
67
- expect(gen.call([:capture, "foo", [:multi,
68
- [:capture, "bar", [:multi,
71
+ it 'should compile nested captures with the same capture_generator' do
72
+ gen = SimpleGenerator.new(buffer: "VAR", capture_generator: SimpleCaptureGenerator)
73
+ expect(gen.call(
74
+ [:capture, "foo", [:multi,
69
75
  [:static, "a"],
70
- [:static, "b"]]]]
71
- ])).to eq "VAR = BUFFER; foo = BUFFER; bar = BUFFER; bar << (S:a); bar << (S:b); bar; foo; VAR"
76
+ [:capture, "bar", [:multi,
77
+ [:static, "b"],
78
+ [:capture, "baz", [:multi,
79
+ [:static, "c"],
80
+ ]]
81
+ ]]
82
+ ]]
83
+ )).to eq "VAR = BUFFER; foo = CAPTURE_BUFFER; foo << (S:a); bar = CAPTURE_BUFFER; bar << (S:b); baz = CAPTURE_BUFFER; baz << (S:c); baz; bar; foo; VAR"
72
84
  end
73
85
 
74
86
  it 'should compile newlines' do
@@ -124,16 +136,16 @@ describe Temple::Generators::StringBuffer do
124
136
  gen = Temple::Generators::StringBuffer.new(freeze_static: false)
125
137
  expect(gen.call([:static, 'test'])).to eq('_buf = "test"')
126
138
  expect(gen.call([:dynamic, 'test'])).to eq('_buf = (test).to_s')
127
- expect(gen.call([:code, 'test'])).to eq('_buf = \'\'; test; _buf')
139
+ expect(gen.call([:code, 'test'])).to eq('_buf = \'\'.dup; test; _buf')
128
140
 
129
- expect(gen.call([:multi, [:static, 'a'], [:static, 'b']])).to eq('_buf = \'\'; _buf << ("a"); _buf << ("b"); _buf')
130
- expect(gen.call([:multi, [:static, 'a'], [:dynamic, 'b']])).to eq('_buf = \'\'; _buf << ("a"); _buf << ((b).to_s); _buf')
141
+ expect(gen.call([:multi, [:static, 'a'], [:static, 'b']])).to eq('_buf = \'\'.dup; _buf << ("a"); _buf << ("b"); _buf')
142
+ expect(gen.call([:multi, [:static, 'a'], [:dynamic, 'b']])).to eq('_buf = \'\'.dup; _buf << ("a"); _buf << ((b).to_s); _buf')
131
143
  end
132
144
 
133
145
  it 'should freeze static' do
134
146
  gen = Temple::Generators::StringBuffer.new(freeze_static: true)
135
147
  expect(gen.call([:static, 'test'])).to eq('_buf = "test"')
136
- expect(gen.call([:multi, [:dynamic, '1'], [:static, 'test']])).to eq('_buf = \'\'; _buf << ((1).to_s); _buf << ("test".freeze); _buf')
148
+ expect(gen.call([:multi, [:dynamic, '1'], [:static, 'test']])).to eq('_buf = \'\'.dup; _buf << ((1).to_s); _buf << ("test".freeze); _buf')
137
149
  end
138
150
  end
139
151
 
data/temple.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # -*- encoding: utf-8 -*-
2
1
  require File.dirname(__FILE__) + '/lib/temple/version'
3
2
  require 'date'
4
3
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: temple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus Holm
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-10-25 00:00:00.000000000 Z
12
+ date: 2023-05-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tilt
@@ -178,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
178
  - !ruby/object:Gem::Version
179
179
  version: '0'
180
180
  requirements: []
181
- rubygems_version: 3.3.7
181
+ rubygems_version: 3.2.5
182
182
  signing_key:
183
183
  specification_version: 4
184
184
  summary: Template compilation framework in Ruby