temple 0.6.9 → 0.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bcc7e8bd7f61ec9c8e2f023f0fb53688b0df1c2
4
- data.tar.gz: 6b409c3649bf823b1cf844c9604929ee51b42dab
3
+ metadata.gz: ae954824af20378733a4583f79f7e25fe6493bf5
4
+ data.tar.gz: 71463f0834e907f81591ad89e262ac56a0b7ecc6
5
5
  SHA512:
6
- metadata.gz: a3a07bb7ec8d123a48c659771f3c59d09e183519cefcb47b9fc7af5c869d77271da4773906652e97cf5d6c6b3b6b6d937641fcacd00a491a02fdfebbd33899c6
7
- data.tar.gz: 5061b599c57d49d77f48bde5b89c8aac6b20df3038de15386f12913e2c7122f107af38500073fd76ff76c77001b55312fbd9629c447a3399a81a90121f1b3758
6
+ metadata.gz: bd44ebc6d99334bea744709cc2297e6eb3f9fb9824439676cb04c093a2fe5e3ce5c5820951c86d7f5a7f4cf96c3951cfc1669106d127cd06d40b38dc357c53e3
7
+ data.tar.gz: a0f479de080332970d17b05fca137d60aa61e68ae3112fdfc8e0996c3a1dea9e0b8cc80ba5f61c9d786ca7950d805a88e1deaffb9afd94b41c770df00c658b34
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ 0.6.10
2
+
3
+ * Tilt template: Support :outvar and save/restore buffer to make the behaviour compatible with ERB
4
+
1
5
  0.6.9
2
6
 
3
7
  * HTML::Pretty: Fix wrong line numbers
data/lib/temple/engine.rb CHANGED
@@ -33,7 +33,7 @@ module Temple
33
33
  include Mixins::EngineDSL
34
34
  extend Mixins::EngineDSL
35
35
 
36
- define_options :file, :streaming, :buffer
36
+ define_options :file, :streaming, :buffer, :save_buffer
37
37
 
38
38
  attr_reader :chain
39
39
 
@@ -5,21 +5,39 @@ module Temple
5
5
  #
6
6
  # @api public
7
7
  class Generator
8
+ include Utils
8
9
  include Mixins::CompiledDispatcher
9
10
  include Mixins::Options
10
11
 
11
12
  define_options :capture_generator => 'StringBuffer',
12
- :buffer => '_buf'
13
+ :buffer => '_buf',
14
+ :save_buffer => false
15
+
16
+ def call(exp)
17
+ [preamble, compile(exp), postamble].flatten.compact.join('; ')
18
+ end
13
19
 
14
20
  def preamble
21
+ [save_buffer, create_buffer]
15
22
  end
16
23
 
17
24
  def postamble
18
- 'nil'
25
+ [return_buffer, restore_buffer]
19
26
  end
20
27
 
21
- def call(exp)
22
- [preamble, compile(exp), postamble].join('; ')
28
+ def save_buffer
29
+ "begin; #{@original_buffer = unique_name} = #{buffer} if defined?(#{buffer})" if options[:save_buffer]
30
+ end
31
+
32
+ def restore_buffer
33
+ "ensure; #{buffer} = #{@original_buffer}; end" if options[:save_buffer]
34
+ end
35
+
36
+ def create_buffer
37
+ end
38
+
39
+ def return_buffer
40
+ 'nil'
23
41
  end
24
42
 
25
43
  def on(*exp)
@@ -9,11 +9,11 @@ module Temple
9
9
  #
10
10
  # @api public
11
11
  class Array < Generator
12
- def preamble
12
+ def create_buffer
13
13
  "#{buffer} = []"
14
14
  end
15
15
 
16
- def postamble
16
+ def return_buffer
17
17
  buffer
18
18
  end
19
19
  end
@@ -12,15 +12,15 @@ module Temple
12
12
  def call(exp)
13
13
  case exp.first
14
14
  when :static
15
- "#{buffer} = #{exp.last.inspect}"
15
+ [save_buffer, "#{buffer} = #{exp.last.inspect}", restore_buffer].compact.join('; ')
16
16
  when :dynamic
17
- "#{buffer} = (#{exp.last}).to_s"
17
+ [save_buffer, "#{buffer} = (#{exp.last}).to_s", restore_buffer].compact.join('; ')
18
18
  else
19
19
  super
20
20
  end
21
21
  end
22
22
 
23
- def postamble
23
+ def return_buffer
24
24
  "#{buffer} = #{buffer}.join"
25
25
  end
26
26
  end
@@ -16,10 +16,10 @@ module Temple
16
16
  :capture_generator => RailsOutputBuffer
17
17
 
18
18
  def call(exp)
19
- [preamble, compile(exp), postamble].join('; ')
19
+ [preamble, compile(exp), postamble].flatten.compact.join('; ')
20
20
  end
21
21
 
22
- def preamble
22
+ def create_buffer
23
23
  if options[:streaming] && options[:buffer] == '@output_buffer'
24
24
  "#{buffer} = output_buffer || #{options[:buffer_class]}.new"
25
25
  else
@@ -9,11 +9,11 @@ module Temple
9
9
  #
10
10
  # @api public
11
11
  class StringBuffer < ArrayBuffer
12
- def preamble
12
+ def create_buffer
13
13
  "#{buffer} = ''"
14
14
  end
15
15
 
16
- def postamble
16
+ def return_buffer
17
17
  buffer
18
18
  end
19
19
 
@@ -23,7 +23,10 @@ module Temple
23
23
  def prepare
24
24
  opts = {}.update(self.class.default_options).update(options).update(:file => eval_file)
25
25
  opts.delete(:mime_type)
26
- opts[:buffer] ||= opts.delete(:outvar) if opts.include?(:outvar) # HACK Sinatra gives us outvar instead of buffer
26
+ if opts.include?(:outvar)
27
+ opts[:buffer] = opts.delete(:outvar)
28
+ opts[:save_buffer] = true
29
+ end
27
30
  @src = self.class.compile(data, opts)
28
31
  end
29
32
 
@@ -1,3 +1,3 @@
1
1
  module Temple
2
- VERSION = '0.6.9'
2
+ VERSION = '0.6.10'
3
3
  end
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.6.9
4
+ version: 0.6.10
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: 2014-10-15 00:00:00.000000000 Z
12
+ date: 2014-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tilt