tilt 2.0.0.beta1 → 2.0.0

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: 61afe68e016ac0b7857c8dab1c753683f432cbc1
4
- data.tar.gz: f530866bbe789257559be15b56224a0f568acc03
3
+ metadata.gz: f43cb3f1357b1eeb55d129fed314692c5c053322
4
+ data.tar.gz: 63ba1cd6367f652f75c968a479530ae6830dc663
5
5
  SHA512:
6
- metadata.gz: aaa94daebb4a6407c68a1487ffdb51b575bf732d4971dcbcae5efdf38e6f906a86947af15059a6480ed9d06885248f30d3f5bcda061e48f8313b90e69c7a0df6
7
- data.tar.gz: ae9c268c9c14dc3187714374f8008a8f8b982f5075dcf709aede679fef26de0702e9d48f242d196aa9d194b3a2513f439f1719503a76c4761c78d7e1e0f24df1
6
+ metadata.gz: 2a30fa65c04fe76bb58af64df4d1940272507d765b942eea1433ad070f0f924566f0c5b3569700dd50f947fc9c6bafe634a46c77279c42e4ac22ee8133e7adcf
7
+ data.tar.gz: eca0811f6a72525467c766996191feb3c0bc59b533dbe91831379e7ba3142b4010f37452b232d52145431e66391c3c0a858c0457a8dbe98bd857e1cbc7e0a015
@@ -1,5 +1,14 @@
1
1
  ## master
2
2
 
3
+ * Add Handlebars as external template engine (#204, judofyr, jimothyGator)
4
+ * Add org-ruby as external template engine (#207, judofyr, minad)
5
+ * Documentation typo (#208, elgalu)
6
+
7
+ ## 2.0.0.beta1 (2013-07-16)
8
+
9
+ * Documentation typo (#202, chip)
10
+ * Use YARD for documentation (#189, judofyr)
11
+ * Add Slim as an external template engine (judofyr)
3
12
  * Add Tilt.templates_for (#121, judofyr)
4
13
  * Add Tilt.current_template (#151, judofyr)
5
14
  * Avoid loading all files in tilt.rb (#160, #187, judofyr)
data/Gemfile CHANGED
@@ -18,7 +18,7 @@ group :engines do
18
18
  gem 'liquid'
19
19
  gem 'markaby'
20
20
  gem 'maruku'
21
- gem 'nokogiri'
21
+ gem 'nokogiri' if RUBY_VERSION > '1.9.2'
22
22
  gem 'radius'
23
23
  gem 'sass'
24
24
  gem 'wikicloth'
@@ -26,14 +26,14 @@ group :engines do
26
26
 
27
27
  platform :ruby do
28
28
  gem 'yajl-ruby'
29
- gem 'redcarpet'
30
- gem 'rdiscount' if RUBY_VERSION != '1.9.2'
29
+ gem 'redcarpet' if RUBY_VERSION > '1.8.7'
30
+ gem 'rdiscount', '>= 2.1.6' if RUBY_VERSION != '1.9.2'
31
31
  gem 'RedCloth'
32
32
  end
33
33
 
34
34
  platform :mri do
35
35
  gem 'therubyracer'
36
- gem 'bluecloth'
36
+ gem 'bluecloth' if ENV['BLUECLOTH']
37
37
  end
38
38
  end
39
39
 
data/README.md CHANGED
@@ -5,7 +5,7 @@ Tilt [![Build Status](https://secure.travis-ci.org/rtomayko/tilt.png)](http://tr
5
5
  https://github.com/rtomayko/tilt/tree/tilt-1 for the current version.
6
6
 
7
7
  Tilt is a thin interface over a bunch of different Ruby template engines in
8
- an attempt to make their usage as generic possible. This is useful for web
8
+ an attempt to make their usage as generic as possible. This is useful for web
9
9
  frameworks, static site generators, and other systems that support multiple
10
10
  template engines but don't want to code for each of them individually.
11
11
 
@@ -61,6 +61,7 @@ These template engines ship with their own Tilt integration:
61
61
  Embedded CoffeeScript sprockets
62
62
  JST sprockets
63
63
  Org-mode .org org-ruby (>= 0.6.2)
64
+ Handlebars .hbs, .handlebars tilt-handlebars
64
65
 
65
66
  See [TEMPLATES.md][t] for detailed information on template engine
66
67
  options and supported features.
@@ -519,4 +519,5 @@ using this template engine within a threaded environment.
519
519
  [discount]: http://www.pell.portland.or.us/~orc/Code/discount/ "Discount"
520
520
  [rdiscount]: http://github.com/rtomayko/rdiscount/ "RDiscount"
521
521
  [smartypants]: http://daringfireball.net/projects/smartypants/ "Smarty Pants"
522
+ [markdown]: http://en.wikipedia.org/wiki/Markdown "Markdown"
522
523
 
@@ -4,7 +4,7 @@ require 'tilt/template'
4
4
  # Namespace for Tilt. This module is not intended to be included anywhere.
5
5
  module Tilt
6
6
  # Current version.
7
- VERSION = '2.0.0.beta1'
7
+ VERSION = '2.0.0'
8
8
 
9
9
  @default_mapping = Mapping.new
10
10
 
@@ -131,5 +131,7 @@ module Tilt
131
131
  register_lazy :YajlTemplate, 'tilt/yajl', 'yajl'
132
132
 
133
133
  # External template engines
134
- register_lazy 'Slim::Template', 'slim', 'slim'
134
+ register_lazy 'Slim::Template', 'slim', 'slim'
135
+ register_lazy 'Tilt::HandlebarsTemplate', 'tilt/handlebars', 'handlebars', 'hbs'
136
+ register_lazy 'Tilt::OrgTemplate', 'org-ruby', 'org'
135
137
  end
@@ -63,7 +63,7 @@ module Tilt
63
63
  # Registrers a lazy template implementation by file extension. You
64
64
  # can have multiple lazy template implementations defined on the
65
65
  # same file extension, in which case the template implementation
66
- # defined *last* will be attemted loaded *first*.
66
+ # defined *last* will be attempted loaded *first*.
67
67
  #
68
68
  # @param class_name [String] Class name of a template class.
69
69
  # @param file [String] Filename where the template class is defined.
@@ -100,8 +100,13 @@ module Tilt
100
100
  # mapping.register MyEngine::Template, 'mt'
101
101
  # mapping['index.mt'] # => MyEngine::Template
102
102
  def register(template_class, *extensions)
103
+ if template_class.respond_to?(:to_str)
104
+ # Support register(ext, template_class) too
105
+ extensions, template_class = [template_class], extensions[0]
106
+ end
107
+
103
108
  extensions.each do |ext|
104
- @template_map[ext] = template_class
109
+ @template_map[ext.to_s] = template_class
105
110
  end
106
111
  end
107
112
 
@@ -171,6 +176,19 @@ module Tilt
171
176
  templates
172
177
  end
173
178
 
179
+ # Finds the extensions the template class has been registered under.
180
+ # @param [template class] template_class
181
+ def extensions_for(template_class)
182
+ res = []
183
+ template_map.each do |ext, klass|
184
+ res << ext if template_class == klass
185
+ end
186
+ lazy_map.each do |ext, choices|
187
+ res << ext if choices.any? { |klass, file| template_class.to_s == klass }
188
+ end
189
+ res
190
+ end
191
+
174
192
  private
175
193
 
176
194
  def lazy?(ext)
@@ -58,7 +58,9 @@ module Tilt
58
58
  when arg.respond_to?(:to_int) ; @line = arg.to_int
59
59
  when arg.respond_to?(:to_hash) ; @options = arg.to_hash.dup
60
60
  when arg.respond_to?(:path) ; @file = arg.path
61
- else raise TypeError
61
+ when arg.respond_to?(:to_path) ; @file = arg.to_path
62
+ else raise TypeError, "Can't load the template file. Pass a string with a path " +
63
+ "or an object that responds to 'to_str', 'path' or 'to_path'"
62
64
  end
63
65
  end
64
66
 
@@ -1,3 +1,5 @@
1
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
2
+
1
3
  require 'bundler'
2
4
  Bundler.setup
3
5
 
@@ -44,6 +44,16 @@ module Tilt
44
44
  refute @mapping.registered?('baz')
45
45
  end
46
46
 
47
+ test "#extensions_for" do
48
+ @mapping.register(Stub, 'foo', 'bar')
49
+ assert_equal ['foo', 'bar'].sort, @mapping.extensions_for(Stub).sort
50
+ end
51
+
52
+ test "supports old-style #register" do
53
+ @mapping.register('foo', Stub)
54
+ assert_equal Stub, @mapping['foo']
55
+ end
56
+
47
57
  context "lazy with one template class" do
48
58
  setup do
49
59
  @mapping.register_lazy('MyTemplate', 'my_template', 'mt')
@@ -57,6 +67,10 @@ module Tilt
57
67
  assert @mapping.registered?('mt')
58
68
  end
59
69
 
70
+ test "#extensions_for" do
71
+ assert_equal ['mt'], @mapping.extensions_for('MyTemplate')
72
+ end
73
+
60
74
  test "basic lookup" do
61
75
  req = proc do |file|
62
76
  assert_equal 'my_template', file
@@ -67,11 +67,6 @@ module MarkdownTests
67
67
  html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => false
68
68
  assert_equal "<p>Hello ``World'' -- This is --- a test ...</p>", html
69
69
  end
70
-
71
- def test_smarty_pants_true
72
- html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
73
- assert_equal "<p>Hello “World” — This is —– a test …</p>", html
74
- end
75
70
  end
76
71
 
77
72
  begin
@@ -80,6 +75,11 @@ begin
80
75
  class MarkdownRDiscountTest < Minitest::Test
81
76
  include MarkdownTests
82
77
  template Tilt::RDiscountTemplate
78
+
79
+ def test_smarty_pants_true
80
+ html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
81
+ assert_equal "<p>Hello “World” – This is — a test …</p>", html
82
+ end
83
83
  end
84
84
  rescue LoadError => boom
85
85
  # It should already be warned in the main tests
@@ -121,6 +121,11 @@ begin
121
121
  class MarkdownBlueClothTest < Minitest::Test
122
122
  include MarkdownTests
123
123
  template Tilt::BlueClothTemplate
124
+
125
+ def test_smarty_pants_true
126
+ html = nrender "Hello ``World'' -- This is --- a test ...", :smartypants => true
127
+ assert_equal "<p>Hello “World” — This is —– a test …</p>", html
128
+ end
124
129
  end
125
130
  rescue LoadError => boom
126
131
  # It should already be warned in the main tests
@@ -137,7 +142,6 @@ begin
137
142
  # Smarty Pants is *always* on, but doesn't support it fully
138
143
  undef test_smarty_pants
139
144
  undef test_smarty_pants_false
140
- undef test_smarty_pants_true
141
145
  end
142
146
  rescue LoadError => boom
143
147
  # It should already be warned in the main tests
@@ -155,7 +159,6 @@ begin
155
159
  # Doesn't support Smarty Pants, and even fails on ``Foobar''
156
160
  undef test_smarty_pants
157
161
  undef test_smarty_pants_false
158
- undef test_smarty_pants_true
159
162
  # Smart Quotes is always on
160
163
  undef test_smart_quotes
161
164
  undef test_smart_quotes_false
@@ -17,18 +17,18 @@ begin
17
17
 
18
18
  test "preparing and evaluating templates on #render" do
19
19
  template = Tilt::MarukuTemplate.new { |t| "# Hello World!" }
20
- assert_equal "<h1 id='hello_world'>Hello World!</h1>", template.render
20
+ assert_equal "<h1 id=\"hello_world\">Hello World!</h1>", template.render.strip
21
21
  end
22
22
 
23
23
  test "can be rendered more than once" do
24
24
  template = Tilt::MarukuTemplate.new { |t| "# Hello World!" }
25
- 3.times { assert_equal "<h1 id='hello_world'>Hello World!</h1>", template.render }
25
+ 3.times { assert_equal "<h1 id=\"hello_world\">Hello World!</h1>", template.render.strip }
26
26
  end
27
27
 
28
28
  test "removes HTML when :filter_html is set" do
29
29
  template = Tilt::MarukuTemplate.new(:filter_html => true) { |t|
30
30
  "HELLO <blink>WORLD</blink>" }
31
- assert_equal "<p>HELLO </p>", template.render
31
+ assert_equal "<p>HELLO </p>", template.render.strip
32
32
  end
33
33
  end
34
34
  rescue LoadError => boom
@@ -28,7 +28,7 @@ begin
28
28
  test "smartypants when :smart is set" do
29
29
  template = Tilt::RDiscountTemplate.new(:smart => true) { |t|
30
30
  "OKAY -- 'Smarty Pants'" }
31
- assert_equal "<p>OKAY &mdash; &lsquo;Smarty Pants&rsquo;</p>\n",
31
+ assert_equal "<p>OKAY &ndash; &lsquo;Smarty Pants&rsquo;</p>\n",
32
32
  template.render
33
33
  end
34
34
 
@@ -32,6 +32,13 @@ class TiltTemplateTest < Minitest::Test
32
32
  assert_equal File.basename(tempfile.path), inst.basename
33
33
  end
34
34
 
35
+ test "initializing with a pathname" do
36
+ tempfile = Tempfile.new('tilt_template_test')
37
+ pathname = Pathname.new(tempfile.path)
38
+ inst = MockTemplate.new(pathname)
39
+ assert_equal File.basename(tempfile.path), inst.basename
40
+ end
41
+
35
42
  class SillyHash < Hash
36
43
  def path(arg)
37
44
  end
@@ -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 = '2.0.0.beta1'
7
- s.date = '2013-07-16'
6
+ s.version = '2.0.0'
7
+ s.date = '2013-11-30'
8
8
 
9
9
  s.description = "Generic interface to multiple Ruby template engines"
10
10
  s.summary = s.description
@@ -76,7 +76,7 @@ Gem::Specification.new do |s|
76
76
  test/tilt_lesstemplate_test.less
77
77
  test/tilt_lesstemplate_test.rb
78
78
  test/tilt_liquidtemplate_test.rb
79
- test/tilt_mapping.rb
79
+ test/tilt_mapping_test.rb
80
80
  test/tilt_markaby_test.rb
81
81
  test/tilt_markdown_test.rb
82
82
  test/tilt_marukutemplate_test.rb
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tomayko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-16 00:00:00.000000000 Z
11
+ date: 2013-11-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Generic interface to multiple Ruby template engines
14
14
  email: r@tomayko.com
@@ -78,7 +78,7 @@ files:
78
78
  - test/tilt_lesstemplate_test.less
79
79
  - test/tilt_lesstemplate_test.rb
80
80
  - test/tilt_liquidtemplate_test.rb
81
- - test/tilt_mapping.rb
81
+ - test/tilt_mapping_test.rb
82
82
  - test/tilt_markaby_test.rb
83
83
  - test/tilt_markdown_test.rb
84
84
  - test/tilt_marukutemplate_test.rb
@@ -117,12 +117,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
117
  version: '0'
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - '>'
120
+ - - '>='
121
121
  - !ruby/object:Gem::Version
122
- version: 1.3.1
122
+ version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.0.2
125
+ rubygems_version: 2.0.3
126
126
  signing_key:
127
127
  specification_version: 2
128
128
  summary: Generic interface to multiple Ruby template engines
@@ -142,6 +142,7 @@ test_files:
142
142
  - test/tilt_kramdown_test.rb
143
143
  - test/tilt_lesstemplate_test.rb
144
144
  - test/tilt_liquidtemplate_test.rb
145
+ - test/tilt_mapping_test.rb
145
146
  - test/tilt_markaby_test.rb
146
147
  - test/tilt_markdown_test.rb
147
148
  - test/tilt_marukutemplate_test.rb