temple 0.6.9 → 0.6.10

Sign up to get free protection for your applications and to get access to all the features.
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