tilt 1.0 → 1.1

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.
data/README.md CHANGED
@@ -34,6 +34,9 @@ Support for these template engines is included with the package:
34
34
  RedCloth .textile redcloth
35
35
  RDoc .rdoc rdoc
36
36
  Radius .radius radius
37
+ Markaby .mab markaby
38
+ Nokogiri .nokogiri nokogiri
39
+ CoffeeScript .coffee coffee-script (+node coffee)
37
40
 
38
41
  See [TEMPLATES.md][t] for detailed information on template engine
39
42
  options and supported features.
data/TEMPLATES.md CHANGED
@@ -335,7 +335,7 @@ To wrap a Markdown formatted document with a layout:
335
335
  layout.render { data.render }
336
336
  # => "<!doctype html><title></title><h1>hello tilt</h1>\n"
337
337
 
338
- __NOTE:__ It's suggested that your program `require 'mustache'` at load time
338
+ __NOTE:__ It's suggested that your program `require 'rdiscount'` at load time
339
339
  when using this template engine in a threaded environment.
340
340
 
341
341
  ### Options
data/lib/tilt.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'digest/md5'
2
2
 
3
3
  module Tilt
4
- VERSION = '1.0'
4
+ VERSION = '1.1'
5
5
 
6
6
  @template_mappings = {}
7
7
 
@@ -59,7 +59,7 @@ module Tilt
59
59
  end
60
60
 
61
61
  # Base class for template implementations. Subclasses must implement
62
- # the #prepare method and one of the #evaluate or #template_source
62
+ # the #prepare method and one of the #evaluate or #precompiled_template
63
63
  # methods.
64
64
  class Template
65
65
  # Template source; loaded from a file or given directly.
@@ -282,13 +282,18 @@ module Tilt
282
282
 
283
283
  def compile_template_method(method_name, locals)
284
284
  source, offset = precompiled(locals)
285
- offset += 1
286
- CompileSite.module_eval <<-RUBY, eval_file, line - offset
285
+ offset += 5
286
+ CompileSite.class_eval <<-RUBY, eval_file, line - offset
287
287
  def #{method_name}(locals)
288
- #{source}
288
+ Thread.current[:tilt_vars] = [self, locals]
289
+ class << self
290
+ this, locals = Thread.current[:tilt_vars]
291
+ this.instance_eval do
292
+ #{source}
293
+ end
294
+ end
289
295
  end
290
296
  RUBY
291
-
292
297
  ObjectSpace.define_finalizer self,
293
298
  Template.compiled_template_method_remover(CompileSite, method_name)
294
299
  end
@@ -306,6 +311,27 @@ module Tilt
306
311
  end
307
312
  end
308
313
  end
314
+
315
+ # Special case Ruby 1.9.1's broken yield.
316
+ #
317
+ # http://github.com/rtomayko/tilt/commit/20c01a5
318
+ # http://redmine.ruby-lang.org/issues/show/3601
319
+ #
320
+ # Remove when 1.9.2 dominates 1.9.1 installs in the wild.
321
+ if RUBY_VERSION =~ /^1.9.1/
322
+ undef compile_template_method
323
+ def compile_template_method(method_name, locals)
324
+ source, offset = precompiled(locals)
325
+ offset += 1
326
+ CompileSite.module_eval <<-RUBY, eval_file, line - offset
327
+ def #{method_name}(locals)
328
+ #{source}
329
+ end
330
+ RUBY
331
+ ObjectSpace.define_finalizer self,
332
+ Template.compiled_template_method_remover(CompileSite, method_name)
333
+ end
334
+ end
309
335
  end
310
336
 
311
337
  # Extremely simple template cache implementation. Calling applications
@@ -528,11 +554,19 @@ module Tilt
528
554
 
529
555
  private
530
556
  def sass_options
531
- options.merge(:filename => eval_file, :line => line)
557
+ options.merge(:filename => eval_file, :line => line, :syntax => :sass)
532
558
  end
533
559
  end
534
560
  register 'sass', SassTemplate
535
561
 
562
+ # Sass's new .scss type template implementation.
563
+ class ScssTemplate < SassTemplate
564
+ private
565
+ def sass_options
566
+ options.merge(:filename => eval_file, :line => line, :syntax => :scss)
567
+ end
568
+ end
569
+ register 'scss', ScssTemplate
536
570
 
537
571
  # Lessscss template implementation. See:
538
572
  # http://lesscss.org/
@@ -555,6 +589,65 @@ module Tilt
555
589
  register 'less', LessTemplate
556
590
 
557
591
 
592
+ # CoffeeScript template implementation. See:
593
+ # http://coffeescript.org/
594
+ #
595
+ # CoffeeScript templates do not support object scopes, locals, or yield.
596
+ class CoffeeScriptTemplate < Template
597
+ @@default_no_wrap = false
598
+
599
+ def self.default_no_wrap
600
+ @@default_no_wrap
601
+ end
602
+
603
+ def self.default_no_wrap=(value)
604
+ @@default_no_wrap = value
605
+ end
606
+
607
+ def initialize_engine
608
+ return if defined? ::CoffeeScript
609
+ require_template_library 'coffee_script'
610
+ end
611
+
612
+ def prepare
613
+ @no_wrap = options.key?(:no_wrap) ? options[:no_wrap] :
614
+ self.class.default_no_wrap
615
+ end
616
+
617
+ def evaluate(scope, locals, &block)
618
+ @output ||= CoffeeScript.compile(data, :no_wrap => @no_wrap)
619
+ end
620
+ end
621
+ register 'coffee', CoffeeScriptTemplate
622
+
623
+
624
+ # Nokogiri template implementation. See:
625
+ # http://nokogiri.org/
626
+ class NokogiriTemplate < Template
627
+ def initialize_engine
628
+ return if defined?(::Nokogiri)
629
+ require_template_library 'nokogiri'
630
+ end
631
+
632
+ def prepare; end
633
+
634
+ def evaluate(scope, locals, &block)
635
+ xml = ::Nokogiri::XML::Builder.new
636
+ if data.respond_to?(:to_str)
637
+ locals[:xml] = xml
638
+ super(scope, locals, &block)
639
+ elsif data.kind_of?(Proc)
640
+ data.call(xml)
641
+ end
642
+ xml.to_xml
643
+ end
644
+
645
+ def precompiled_template(locals)
646
+ data.to_str
647
+ end
648
+ end
649
+ register 'nokogiri', NokogiriTemplate
650
+
558
651
  # Builder template implementation. See:
559
652
  # http://builder.rubyforge.org/
560
653
  class BuilderTemplate < Template
@@ -719,7 +812,7 @@ module Tilt
719
812
  end
720
813
  end
721
814
  (class << context; self; end).class_eval do
722
- define_method :tag_missing do |tag, attr, &block|
815
+ define_method :tag_missing do |tag, attr|
723
816
  scope.__send__(tag) # any way to support attr as args?
724
817
  end
725
818
  end
@@ -729,4 +822,47 @@ module Tilt
729
822
  end
730
823
  end
731
824
  register 'radius', RadiusTemplate
825
+
826
+
827
+ # Markaby
828
+ # http://github.com/markaby/markaby
829
+ class MarkabyTemplate < Template
830
+ def self.builder_class
831
+ @builder_class ||= Class.new(Markaby::Builder) do
832
+ def __capture_markaby_tilt__(&block)
833
+ __run_markaby_tilt__ do
834
+ text capture(&block)
835
+ end
836
+ end
837
+ end
838
+ end
839
+
840
+ def initialize_engine
841
+ return if defined? ::Markaby
842
+ require_template_library 'markaby'
843
+ end
844
+
845
+ def prepare
846
+ end
847
+
848
+ def evaluate(scope, locals, &block)
849
+ builder = self.class.builder_class.new({}, scope)
850
+ builder.locals = locals
851
+
852
+ if block
853
+ builder.instance_eval <<-CODE, __FILE__, __LINE__
854
+ def __run_markaby_tilt__
855
+ #{data}
856
+ end
857
+ CODE
858
+
859
+ builder.__capture_markaby_tilt__(&block)
860
+ else
861
+ builder.instance_eval(data, __FILE__, __LINE__)
862
+ end
863
+
864
+ builder.to_s
865
+ end
866
+ end
867
+ register 'mab', MarkabyTemplate
732
868
  end
@@ -0,0 +1 @@
1
+ li foo
@@ -0,0 +1 @@
1
+ text "hello from markaby!"
@@ -0,0 +1 @@
1
+ text "_why?"
@@ -0,0 +1 @@
1
+ text "foo"
@@ -0,0 +1 @@
1
+ li foo
@@ -0,0 +1,2 @@
1
+ text("Hey ")
2
+ yield
@@ -14,10 +14,9 @@ class TiltCacheTest < Test::Unit::TestCase
14
14
 
15
15
  test "caching with multiple complex arguments to #fetch" do
16
16
  template = nil
17
- args = ['hello', {:foo => 'bar', :baz => 'bizzle'}]
18
- result = @cache.fetch(*args) { template = Tilt::StringTemplate.new {''} }
17
+ result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { template = Tilt::StringTemplate.new {''} }
19
18
  assert_same template, result
20
- result = @cache.fetch(*args) { fail 'should be cached' }
19
+ result = @cache.fetch('hello', {:foo => 'bar', :baz => 'bizzle'}) { fail 'should be cached' }
21
20
  assert_same template, result
22
21
  end
23
22
 
@@ -0,0 +1,25 @@
1
+ require 'contest'
2
+ require 'tilt'
3
+
4
+ begin
5
+ require 'coffee_script'
6
+
7
+ class CoffeeScriptTemplateTest < Test::Unit::TestCase
8
+ test "is registered for '.coffee' files" do
9
+ assert_equal Tilt::CoffeeScriptTemplate, Tilt['test.coffee']
10
+ end
11
+
12
+ test "compiles and evaluates the template on #render" do
13
+ template = Tilt::CoffeeScriptTemplate.new { |t| "puts 'Hello, World!'\n" }
14
+ assert_equal "(function() {\n puts('Hello, World!');\n})();\n", template.render
15
+ end
16
+
17
+ test "disabling coffee-script wrapper" do
18
+ template = Tilt::CoffeeScriptTemplate.new(:no_wrap => true) { |t| "puts 'Hello, World!'\n" }
19
+ assert_equal "puts('Hello, World!');", template.render
20
+ end
21
+ end
22
+
23
+ rescue LoadError => boom
24
+ warn "Tilt::CoffeeScriptTemplate (disabled)\n"
25
+ end
@@ -0,0 +1,73 @@
1
+ require 'contest'
2
+ require 'tilt'
3
+
4
+ begin
5
+ require 'markaby'
6
+
7
+ class MarkabyTiltTest < Test::Unit::TestCase
8
+ def setup
9
+ @block = lambda do |t|
10
+ File.read(File.dirname(__FILE__) + "/#{t.file}")
11
+ end
12
+ end
13
+
14
+ test "should be able to render a markaby template with static html" do
15
+ tilt = Tilt::MarkabyTemplate.new("markaby/markaby.mab", &@block)
16
+ assert_equal "hello from markaby!", tilt.render
17
+ end
18
+
19
+ test "should use the contents of the template" do
20
+ tilt = ::Tilt::MarkabyTemplate.new("markaby/markaby_other_static.mab", &@block)
21
+ assert_equal "_why?", tilt.render
22
+ end
23
+
24
+ test "should render from a string (given as data)" do
25
+ tilt = ::Tilt::MarkabyTemplate.new { "html do; end" }
26
+ assert_equal "<html></html>", tilt.render
27
+ end
28
+
29
+ test "should evaluate a template file in the scope given" do
30
+ scope = Object.new
31
+ def scope.foo
32
+ "bar"
33
+ end
34
+
35
+ tilt = ::Tilt::MarkabyTemplate.new("markaby/scope.mab", &@block)
36
+ assert_equal "<li>bar</li>", tilt.render(scope)
37
+ end
38
+
39
+ test "should pass locals to the template" do
40
+ tilt = ::Tilt::MarkabyTemplate.new("markaby/locals.mab", &@block)
41
+ assert_equal "<li>bar</li>", tilt.render(Object.new, { :foo => "bar" })
42
+ end
43
+
44
+ test "should yield to the block given" do
45
+ tilt = ::Tilt::MarkabyTemplate.new("markaby/yielding.mab", &@block)
46
+ eval_scope = Markaby::Builder.new
47
+
48
+ output = tilt.render(Object.new, {}) do
49
+ text("Joe")
50
+ end
51
+
52
+ assert_equal "Hey Joe", output
53
+ end
54
+
55
+ test "should be able to render two templates in a row" do
56
+ tilt = ::Tilt::MarkabyTemplate.new("markaby/render_twice.mab", &@block)
57
+
58
+ assert_equal "foo", tilt.render
59
+ assert_equal "foo", tilt.render
60
+ end
61
+
62
+ test "should retrieve a Tilt::MarkabyTemplate when calling Tilt['hello.mab']" do
63
+ assert_equal Tilt::MarkabyTemplate, ::Tilt['./markaby/markaby.mab']
64
+ end
65
+
66
+ test "should return a new instance of the implementation class (when calling Tilt.new)" do
67
+ assert ::Tilt.new(File.dirname(__FILE__) + "/markaby/markaby.mab").kind_of?(Tilt::MarkabyTemplate)
68
+ end
69
+ end
70
+
71
+ rescue LoadError => boom
72
+ warn "Tilt::MarkabyTemplate (disabled)\n"
73
+ end
@@ -0,0 +1,54 @@
1
+ require 'contest'
2
+ require 'tilt'
3
+
4
+ begin
5
+ require 'nokogiri'
6
+ class NokogiriTemplateTest < Test::Unit::TestCase
7
+ test "registered for '.nokogiri' files" do
8
+ assert_equal Tilt::NokogiriTemplate, Tilt['test.nokogiri']
9
+ assert_equal Tilt::NokogiriTemplate, Tilt['test.xml.nokogiri']
10
+ end
11
+
12
+ test "preparing and evaluating the template on #render" do
13
+ template = Tilt::NokogiriTemplate.new { |t| "xml.em 'Hello World!'" }
14
+ doc = Nokogiri.XML template.render
15
+ assert_equal 'Hello World!', doc.root.text
16
+ assert_equal 'em', doc.root.name
17
+ end
18
+
19
+ test "passing locals" do
20
+ template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + name + '!')" }
21
+ doc = Nokogiri.XML template.render(Object.new, :name => 'Joe')
22
+ assert_equal 'Hey Joe!', doc.root.text
23
+ assert_equal 'em', doc.root.name
24
+ end
25
+
26
+ test "evaluating in an object scope" do
27
+ template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + @name + '!')" }
28
+ scope = Object.new
29
+ scope.instance_variable_set :@name, 'Joe'
30
+ doc = Nokogiri.XML template.render(scope)
31
+ assert_equal 'Hey Joe!', doc.root.text
32
+ assert_equal 'em', doc.root.name
33
+ end
34
+
35
+ test "passing a block for yield" do
36
+ template = Tilt::NokogiriTemplate.new { "xml.em('Hey ' + yield + '!')" }
37
+ doc = Nokogiri.XML template.render { 'Joe' }
38
+ assert_equal 'Hey Joe!', doc.root.text
39
+ assert_equal 'em', doc.root.name
40
+ end
41
+
42
+ test "block style templates" do
43
+ template =
44
+ Tilt::NokogiriTemplate.new do |t|
45
+ lambda { |xml| xml.em('Hey Joe!') }
46
+ end
47
+ doc = Nokogiri.XML template.render template.render
48
+ assert_equal 'Hey Joe!', doc.root.text
49
+ assert_equal 'em', doc.root.name
50
+ end
51
+ end
52
+ rescue LoadError
53
+ warn "Tilt::NokogiriTemplate (disabled)"
54
+ end
@@ -2,6 +2,10 @@ require 'contest'
2
2
  require 'tilt'
3
3
 
4
4
  begin
5
+ # Disable radius tests under Ruby versions >= 1.9.1 since it's still buggy.
6
+ # Remove when fixed upstream.
7
+ raise LoadError if RUBY_VERSION >= "1.9.1"
8
+
5
9
  require 'radius'
6
10
 
7
11
  class RadiusTemplateTest < Test::Unit::TestCase
@@ -16,6 +16,17 @@ begin
16
16
  end
17
17
  end
18
18
 
19
+ class ScssTemplateTest < Test::Unit::TestCase
20
+ test "is registered for '.scss' files" do
21
+ assert_equal Tilt::ScssTemplate, Tilt['test.scss']
22
+ end
23
+
24
+ test "compiles and evaluates the template on #render" do
25
+ template = Tilt::ScssTemplate.new { |t| "#main {\n background-color: #0000f1;\n}" }
26
+ assert_equal "#main {\n background-color: #0000f1; }\n", template.render
27
+ end
28
+ end
29
+
19
30
  rescue LoadError => boom
20
31
  warn "Tilt::SassTemplate (disabled)\n"
21
32
  end
@@ -150,10 +150,9 @@ class TiltTemplateTest < Test::Unit::TestCase
150
150
  include Tilt::CompileSite
151
151
  end
152
152
 
153
- # FAILING CONSTANT TEST. DISABLED FOR 1.0.
154
-
155
- # test "template which accesses a constant with Tilt::CompileSite" do
156
- # inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{CONSTANT}!' }
157
- # assert_equal "Hey Bob!", inst.render(FastPerson.new("Joe"))
158
- # end
153
+ test "template which accesses a constant with Tilt::CompileSite" do
154
+ flunk "known broken under 1.9.1" if RUBY_VERSION =~ /^1.9.1/
155
+ inst = SourceGeneratingMockTemplate.new { |t| 'Hey #{CONSTANT}!' }
156
+ assert_equal "Hey Bob!", inst.render(FastPerson.new("Joe"))
157
+ end
159
158
  end
data/tilt.gemspec CHANGED
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'tilt'
6
- s.version = '1.0'
7
- s.date = '2010-06-15'
6
+ s.version = '1.1'
7
+ s.date = '2010-09-10'
8
8
 
9
9
  s.description = "Generic interface to multiple Ruby template engines"
10
10
  s.summary = s.description
@@ -21,14 +21,23 @@ Gem::Specification.new do |s|
21
21
  bin/tilt
22
22
  lib/tilt.rb
23
23
  test/contest.rb
24
+ test/markaby/locals.mab
25
+ test/markaby/markaby.mab
26
+ test/markaby/markaby_other_static.mab
27
+ test/markaby/render_twice.mab
28
+ test/markaby/scope.mab
29
+ test/markaby/yielding.mab
24
30
  test/tilt_buildertemplate_test.rb
25
31
  test/tilt_cache_test.rb
32
+ test/tilt_coffeescripttemplate_test.rb
26
33
  test/tilt_compilesite_test.rb
27
34
  test/tilt_erbtemplate_test.rb
28
35
  test/tilt_erubistemplate_test.rb
29
36
  test/tilt_hamltemplate_test.rb
30
37
  test/tilt_lesstemplate_test.rb
31
38
  test/tilt_liquidtemplate_test.rb
39
+ test/tilt_markaby_test.rb
40
+ test/tilt_nokogiritemplate_test.rb
32
41
  test/tilt_radiustemplate_test.rb
33
42
  test/tilt_rdiscounttemplate_test.rb
34
43
  test/tilt_rdoctemplate_test.rb
@@ -49,12 +58,13 @@ Gem::Specification.new do |s|
49
58
  s.add_development_dependency 'builder'
50
59
  s.add_development_dependency 'erubis'
51
60
  s.add_development_dependency 'haml', '>= 2.2.11'
52
- s.add_development_dependency 'mustache'
53
61
  s.add_development_dependency 'rdiscount'
54
62
  s.add_development_dependency 'liquid'
55
63
  s.add_development_dependency 'less'
56
- s.add_development_dependency 'coffee-script'
57
64
  s.add_development_dependency 'radius'
65
+ s.add_development_dependency 'nokogiri'
66
+ s.add_development_dependency 'markaby'
67
+ s.add_development_dependency 'coffee-script'
58
68
 
59
69
  s.extra_rdoc_files = %w[COPYING]
60
70
 
metadata CHANGED
@@ -1,11 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 13
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
- - 0
8
- version: "1.0"
8
+ - 1
9
+ version: "1.1"
9
10
  platform: ruby
10
11
  authors:
11
12
  - Ryan Tomayko
@@ -13,16 +14,18 @@ autorequire:
13
14
  bindir: bin
14
15
  cert_chain: []
15
16
 
16
- date: 2010-06-15 00:00:00 -07:00
17
+ date: 2010-09-10 00:00:00 -07:00
17
18
  default_executable: tilt
18
19
  dependencies:
19
20
  - !ruby/object:Gem::Dependency
20
21
  name: contest
21
22
  prerelease: false
22
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
23
25
  requirements:
24
26
  - - ">="
25
27
  - !ruby/object:Gem::Version
28
+ hash: 3
26
29
  segments:
27
30
  - 0
28
31
  version: "0"
@@ -32,9 +35,11 @@ dependencies:
32
35
  name: builder
33
36
  prerelease: false
34
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
35
39
  requirements:
36
40
  - - ">="
37
41
  - !ruby/object:Gem::Version
42
+ hash: 3
38
43
  segments:
39
44
  - 0
40
45
  version: "0"
@@ -44,9 +49,11 @@ dependencies:
44
49
  name: erubis
45
50
  prerelease: false
46
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
47
53
  requirements:
48
54
  - - ">="
49
55
  - !ruby/object:Gem::Version
56
+ hash: 3
50
57
  segments:
51
58
  - 0
52
59
  version: "0"
@@ -56,9 +63,11 @@ dependencies:
56
63
  name: haml
57
64
  prerelease: false
58
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
68
  - - ">="
61
69
  - !ruby/object:Gem::Version
70
+ hash: 17
62
71
  segments:
63
72
  - 2
64
73
  - 2
@@ -67,77 +76,103 @@ dependencies:
67
76
  type: :development
68
77
  version_requirements: *id004
69
78
  - !ruby/object:Gem::Dependency
70
- name: mustache
79
+ name: rdiscount
71
80
  prerelease: false
72
81
  requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
84
  - - ">="
75
85
  - !ruby/object:Gem::Version
86
+ hash: 3
76
87
  segments:
77
88
  - 0
78
89
  version: "0"
79
90
  type: :development
80
91
  version_requirements: *id005
81
92
  - !ruby/object:Gem::Dependency
82
- name: rdiscount
93
+ name: liquid
83
94
  prerelease: false
84
95
  requirement: &id006 !ruby/object:Gem::Requirement
96
+ none: false
85
97
  requirements:
86
98
  - - ">="
87
99
  - !ruby/object:Gem::Version
100
+ hash: 3
88
101
  segments:
89
102
  - 0
90
103
  version: "0"
91
104
  type: :development
92
105
  version_requirements: *id006
93
106
  - !ruby/object:Gem::Dependency
94
- name: liquid
107
+ name: less
95
108
  prerelease: false
96
109
  requirement: &id007 !ruby/object:Gem::Requirement
110
+ none: false
97
111
  requirements:
98
112
  - - ">="
99
113
  - !ruby/object:Gem::Version
114
+ hash: 3
100
115
  segments:
101
116
  - 0
102
117
  version: "0"
103
118
  type: :development
104
119
  version_requirements: *id007
105
120
  - !ruby/object:Gem::Dependency
106
- name: less
121
+ name: radius
107
122
  prerelease: false
108
123
  requirement: &id008 !ruby/object:Gem::Requirement
124
+ none: false
109
125
  requirements:
110
126
  - - ">="
111
127
  - !ruby/object:Gem::Version
128
+ hash: 3
112
129
  segments:
113
130
  - 0
114
131
  version: "0"
115
132
  type: :development
116
133
  version_requirements: *id008
117
134
  - !ruby/object:Gem::Dependency
118
- name: coffee-script
135
+ name: nokogiri
119
136
  prerelease: false
120
137
  requirement: &id009 !ruby/object:Gem::Requirement
138
+ none: false
121
139
  requirements:
122
140
  - - ">="
123
141
  - !ruby/object:Gem::Version
142
+ hash: 3
124
143
  segments:
125
144
  - 0
126
145
  version: "0"
127
146
  type: :development
128
147
  version_requirements: *id009
129
148
  - !ruby/object:Gem::Dependency
130
- name: radius
149
+ name: markaby
131
150
  prerelease: false
132
151
  requirement: &id010 !ruby/object:Gem::Requirement
152
+ none: false
133
153
  requirements:
134
154
  - - ">="
135
155
  - !ruby/object:Gem::Version
156
+ hash: 3
136
157
  segments:
137
158
  - 0
138
159
  version: "0"
139
160
  type: :development
140
161
  version_requirements: *id010
162
+ - !ruby/object:Gem::Dependency
163
+ name: coffee-script
164
+ prerelease: false
165
+ requirement: &id011 !ruby/object:Gem::Requirement
166
+ none: false
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
173
+ version: "0"
174
+ type: :development
175
+ version_requirements: *id011
141
176
  description: Generic interface to multiple Ruby template engines
142
177
  email: r@tomayko.com
143
178
  executables:
@@ -154,14 +189,23 @@ files:
154
189
  - bin/tilt
155
190
  - lib/tilt.rb
156
191
  - test/contest.rb
192
+ - test/markaby/locals.mab
193
+ - test/markaby/markaby.mab
194
+ - test/markaby/markaby_other_static.mab
195
+ - test/markaby/render_twice.mab
196
+ - test/markaby/scope.mab
197
+ - test/markaby/yielding.mab
157
198
  - test/tilt_buildertemplate_test.rb
158
199
  - test/tilt_cache_test.rb
200
+ - test/tilt_coffeescripttemplate_test.rb
159
201
  - test/tilt_compilesite_test.rb
160
202
  - test/tilt_erbtemplate_test.rb
161
203
  - test/tilt_erubistemplate_test.rb
162
204
  - test/tilt_hamltemplate_test.rb
163
205
  - test/tilt_lesstemplate_test.rb
164
206
  - test/tilt_liquidtemplate_test.rb
207
+ - test/tilt_markaby_test.rb
208
+ - test/tilt_nokogiritemplate_test.rb
165
209
  - test/tilt_radiustemplate_test.rb
166
210
  - test/tilt_rdiscounttemplate_test.rb
167
211
  - test/tilt_rdoctemplate_test.rb
@@ -186,35 +230,42 @@ rdoc_options:
186
230
  require_paths:
187
231
  - lib
188
232
  required_ruby_version: !ruby/object:Gem::Requirement
233
+ none: false
189
234
  requirements:
190
235
  - - ">="
191
236
  - !ruby/object:Gem::Version
237
+ hash: 3
192
238
  segments:
193
239
  - 0
194
240
  version: "0"
195
241
  required_rubygems_version: !ruby/object:Gem::Requirement
242
+ none: false
196
243
  requirements:
197
244
  - - ">="
198
245
  - !ruby/object:Gem::Version
246
+ hash: 3
199
247
  segments:
200
248
  - 0
201
249
  version: "0"
202
250
  requirements: []
203
251
 
204
252
  rubyforge_project: wink
205
- rubygems_version: 1.3.6
253
+ rubygems_version: 1.3.7
206
254
  signing_key:
207
255
  specification_version: 2
208
256
  summary: Generic interface to multiple Ruby template engines
209
257
  test_files:
210
258
  - test/tilt_buildertemplate_test.rb
211
259
  - test/tilt_cache_test.rb
260
+ - test/tilt_coffeescripttemplate_test.rb
212
261
  - test/tilt_compilesite_test.rb
213
262
  - test/tilt_erbtemplate_test.rb
214
263
  - test/tilt_erubistemplate_test.rb
215
264
  - test/tilt_hamltemplate_test.rb
216
265
  - test/tilt_lesstemplate_test.rb
217
266
  - test/tilt_liquidtemplate_test.rb
267
+ - test/tilt_markaby_test.rb
268
+ - test/tilt_nokogiritemplate_test.rb
218
269
  - test/tilt_radiustemplate_test.rb
219
270
  - test/tilt_rdiscounttemplate_test.rb
220
271
  - test/tilt_rdoctemplate_test.rb