tilt 2.1.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +1 -0
  3. data/bin/tilt +2 -120
  4. data/lib/tilt/_emacs_org.rb +2 -0
  5. data/lib/tilt/_handlebars.rb +2 -0
  6. data/lib/tilt/_jbuilder.rb +2 -0
  7. data/lib/tilt/_org.rb +2 -0
  8. data/lib/tilt/asciidoc.rb +11 -23
  9. data/lib/tilt/babel.rb +5 -13
  10. data/lib/tilt/builder.rb +18 -13
  11. data/lib/tilt/cli.rb +134 -0
  12. data/lib/tilt/coffee.rb +12 -31
  13. data/lib/tilt/commonmarker.rb +47 -81
  14. data/lib/tilt/creole.rb +9 -20
  15. data/lib/tilt/csv.rb +5 -4
  16. data/lib/tilt/erb.rb +9 -17
  17. data/lib/tilt/erubi.rb +7 -6
  18. data/lib/tilt/erubis.rb +9 -6
  19. data/lib/tilt/etanni.rb +3 -2
  20. data/lib/tilt/haml.rb +12 -9
  21. data/lib/tilt/kramdown.rb +8 -20
  22. data/lib/tilt/liquid.rb +10 -14
  23. data/lib/tilt/livescript.rb +8 -20
  24. data/lib/tilt/mapping.rb +180 -104
  25. data/lib/tilt/markaby.rb +5 -7
  26. data/lib/tilt/maruku.rb +5 -19
  27. data/lib/tilt/nokogiri.rb +11 -10
  28. data/lib/tilt/pandoc.rb +33 -51
  29. data/lib/tilt/pipeline.rb +1 -0
  30. data/lib/tilt/plain.rb +4 -15
  31. data/lib/tilt/prawn.rb +10 -25
  32. data/lib/tilt/radius.rb +15 -22
  33. data/lib/tilt/rdiscount.rb +17 -33
  34. data/lib/tilt/rdoc.rb +14 -35
  35. data/lib/tilt/redcarpet.rb +20 -75
  36. data/lib/tilt/redcloth.rb +9 -19
  37. data/lib/tilt/rst-pandoc.rb +6 -19
  38. data/lib/tilt/sass.rb +34 -43
  39. data/lib/tilt/slim.rb +5 -0
  40. data/lib/tilt/string.rb +9 -3
  41. data/lib/tilt/template.rb +151 -61
  42. data/lib/tilt/typescript.rb +11 -18
  43. data/lib/tilt/wikicloth.rb +7 -19
  44. data/lib/tilt/yajl.rb +5 -11
  45. data/lib/tilt.rb +56 -40
  46. metadata +10 -7
  47. data/lib/tilt/bluecloth.rb +0 -26
  48. data/lib/tilt/less.rb +0 -32
  49. data/lib/tilt/sigil.rb +0 -36
data/lib/tilt.rb CHANGED
@@ -1,78 +1,93 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'tilt/mapping'
2
3
  require_relative 'tilt/template'
3
4
 
4
5
  # Namespace for Tilt. This module is not intended to be included anywhere.
5
6
  module Tilt
6
7
  # Current version.
7
- VERSION = '2.1.0'
8
+ VERSION = '2.3.0'
9
+
10
+ EMPTY_HASH = {}.freeze
11
+ private_constant :EMPTY_HASH
8
12
 
9
13
  @default_mapping = Mapping.new
10
14
 
11
- class << self
12
- # @return [Tilt::Mapping] the main mapping object
13
- attr_reader :default_mapping
15
+ # Replace the default mapping with a finalized version of the default
16
+ # mapping. This can be done to improve performance after the template
17
+ # libraries you desire to use have already been loaded. Once this is
18
+ # is called, all attempts to modify the default mapping will fail.
19
+ # This also freezes Tilt itself.
20
+ def self.finalize!
21
+ return self if @default_mapping.is_a?(FinalizedMapping)
22
+
23
+ class << self
24
+ prepend(Module.new do
25
+ def lazy_map(*)
26
+ raise "Tilt.#{__callee__} not supported after Tilt.finalize! has been called"
27
+ end
28
+ alias register lazy_map
29
+ alias register_lazy lazy_map
30
+ alias register_pipeline lazy_map
31
+ alias prefer lazy_map
32
+ end)
33
+ end
34
+
35
+ @default_mapping = @default_mapping.finalized
36
+
37
+ freeze
14
38
  end
15
39
 
16
40
  # @private
17
41
  def self.lazy_map
18
- default_mapping.lazy_map
42
+ @default_mapping.lazy_map
19
43
  end
20
44
 
21
45
  # @see Tilt::Mapping#register
22
46
  def self.register(template_class, *extensions)
23
- default_mapping.register(template_class, *extensions)
47
+ @default_mapping.register(template_class, *extensions)
24
48
  end
25
49
 
26
50
  # @see Tilt::Mapping#register_lazy
27
51
  def self.register_lazy(class_name, file, *extensions)
28
- default_mapping.register_lazy(class_name, file, *extensions)
52
+ @default_mapping.register_lazy(class_name, file, *extensions)
29
53
  end
30
54
 
31
55
  # @see Tilt::Mapping#register_pipeline
32
- def self.register_pipeline(ext, options={})
33
- default_mapping.register_pipeline(ext, options)
34
- end
35
-
36
- # @deprecated Use {register} instead.
37
- def self.prefer(template_class, *extensions)
38
- register(template_class, *extensions)
56
+ def self.register_pipeline(ext, options=EMPTY_HASH)
57
+ @default_mapping.register_pipeline(ext, options)
39
58
  end
40
59
 
41
60
  # @see Tilt::Mapping#registered?
42
61
  def self.registered?(ext)
43
- default_mapping.registered?(ext)
62
+ @default_mapping.registered?(ext)
44
63
  end
45
64
 
46
65
  # @see Tilt::Mapping#new
47
- def self.new(file, line=nil, options={}, &block)
48
- default_mapping.new(file, line, options, &block)
66
+ def self.new(file, line=nil, options=nil, &block)
67
+ @default_mapping.new(file, line, options, &block)
49
68
  end
50
69
 
51
70
  # @see Tilt::Mapping#[]
52
71
  def self.[](file)
53
- default_mapping[file]
72
+ @default_mapping[file]
54
73
  end
55
74
 
56
75
  # @see Tilt::Mapping#template_for
57
76
  def self.template_for(file)
58
- default_mapping.template_for(file)
77
+ @default_mapping.template_for(file)
59
78
  end
60
79
 
61
80
  # @see Tilt::Mapping#templates_for
62
81
  def self.templates_for(file)
63
- default_mapping.templates_for(file)
82
+ @default_mapping.templates_for(file)
64
83
  end
65
84
 
66
- # @return the template object that is currently rendering.
67
- #
68
- # @example
69
- # tmpl = Tilt['index.erb'].new { '<%= Tilt.current_template %>' }
70
- # tmpl.render == tmpl.to_s
71
- #
72
- # @note This is currently an experimental feature and might return nil
73
- # in the future.
74
- def self.current_template
75
- Thread.current[:tilt_current_template]
85
+ class << self
86
+ # @return [Tilt::Mapping] the main mapping object
87
+ attr_reader :default_mapping
88
+
89
+ # Alias register as prefer for Tilt 1.x compatibility.
90
+ alias prefer register
76
91
  end
77
92
 
78
93
  # Extremely simple template cache implementation. Calling applications
@@ -115,7 +130,10 @@ module Tilt
115
130
  @cache = {}
116
131
  end
117
132
  end
118
-
133
+ # :nocov:
134
+ # TILT3: Remove Tilt::Cache
135
+ deprecate_constant :Cache if respond_to?(:deprecate_constant, true)
136
+ # :nocov:
119
137
 
120
138
  # Template Implementations ================================================
121
139
 
@@ -125,7 +143,6 @@ module Tilt
125
143
  register_lazy :ErubiTemplate, 'tilt/erubi', 'erb', 'rhtml', 'erubi'
126
144
 
127
145
  # Markdown
128
- register_lazy :BlueClothTemplate, 'tilt/bluecloth', 'markdown', 'mkd', 'md'
129
146
  register_lazy :MarukuTemplate, 'tilt/maruku', 'markdown', 'mkd', 'md'
130
147
  register_lazy :KramdownTemplate, 'tilt/kramdown', 'markdown', 'mkd', 'md'
131
148
  register_lazy :RDiscountTemplate, 'tilt/rdiscount', 'markdown', 'mkd', 'md'
@@ -143,7 +160,6 @@ module Tilt
143
160
  register_lazy :CreoleTemplate, 'tilt/creole', 'wiki', 'creole'
144
161
  register_lazy :EtanniTemplate, 'tilt/etanni', 'etn', 'etanni'
145
162
  register_lazy :HamlTemplate, 'tilt/haml', 'haml'
146
- register_lazy :LessTemplate, 'tilt/less', 'less'
147
163
  register_lazy :LiquidTemplate, 'tilt/liquid', 'liquid'
148
164
  register_lazy :LiveScriptTemplate, 'tilt/livescript','ls', 'livescript'
149
165
  register_lazy :MarkabyTemplate, 'tilt/markaby', 'mab'
@@ -156,16 +172,16 @@ module Tilt
156
172
  register_lazy :RstPandocTemplate, 'tilt/rst-pandoc', 'rst'
157
173
  register_lazy :SassTemplate, 'tilt/sass', 'sass'
158
174
  register_lazy :ScssTemplate, 'tilt/sass', 'scss'
159
- register_lazy :SigilTemplate, 'tilt/sigil', 'sigil'
175
+ register_lazy :SlimTemplate, 'tilt/slim', 'slim'
160
176
  register_lazy :StringTemplate, 'tilt/string', 'str'
161
177
  register_lazy :TypeScriptTemplate, 'tilt/typescript', 'ts', 'tsx'
162
178
  register_lazy :WikiClothTemplate, 'tilt/wikicloth', 'wiki', 'mediawiki', 'mw'
163
179
  register_lazy :YajlTemplate, 'tilt/yajl', 'yajl'
164
180
 
165
- # External template engines
166
- register_lazy 'Slim::Template', 'slim', 'slim'
167
- register_lazy 'Tilt::HandlebarsTemplate', 'tilt/handlebars', 'handlebars', 'hbs'
168
- register_lazy 'Tilt::OrgTemplate', 'org-ruby', 'org'
169
- register_lazy 'Tilt::EmacsOrgTemplate', 'tilt/emacs_org', 'org'
170
- register_lazy 'Tilt::JbuilderTemplate', 'tilt/jbuilder', 'jbuilder'
181
+ # TILT3: Remove
182
+ # Deprecated lazy loading of external template engines
183
+ register_lazy 'Tilt::HandlebarsTemplate', 'tilt/_handlebars', 'handlebars', 'hbs'
184
+ register_lazy 'Tilt::OrgTemplate', 'tilt/_org', 'org'
185
+ register_lazy 'Tilt::OrgTemplate', 'tilt/_emacs_org', 'org'
186
+ register_lazy 'Tilt::JbuilderTemplate', 'tilt/_jbuilder', 'jbuilder'
171
187
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tomayko
@@ -10,10 +10,10 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-02-17 00:00:00.000000000 Z
13
+ date: 2023-09-14 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Generic interface to multiple Ruby template engines
16
- email: r@tomayko.com
16
+ email: code@jeremyevans.net
17
17
  executables:
18
18
  - tilt
19
19
  extensions: []
@@ -22,10 +22,14 @@ files:
22
22
  - COPYING
23
23
  - bin/tilt
24
24
  - lib/tilt.rb
25
+ - lib/tilt/_emacs_org.rb
26
+ - lib/tilt/_handlebars.rb
27
+ - lib/tilt/_jbuilder.rb
28
+ - lib/tilt/_org.rb
25
29
  - lib/tilt/asciidoc.rb
26
30
  - lib/tilt/babel.rb
27
- - lib/tilt/bluecloth.rb
28
31
  - lib/tilt/builder.rb
32
+ - lib/tilt/cli.rb
29
33
  - lib/tilt/coffee.rb
30
34
  - lib/tilt/commonmarker.rb
31
35
  - lib/tilt/creole.rb
@@ -36,7 +40,6 @@ files:
36
40
  - lib/tilt/etanni.rb
37
41
  - lib/tilt/haml.rb
38
42
  - lib/tilt/kramdown.rb
39
- - lib/tilt/less.rb
40
43
  - lib/tilt/liquid.rb
41
44
  - lib/tilt/livescript.rb
42
45
  - lib/tilt/mapping.rb
@@ -54,7 +57,7 @@ files:
54
57
  - lib/tilt/redcloth.rb
55
58
  - lib/tilt/rst-pandoc.rb
56
59
  - lib/tilt/sass.rb
57
- - lib/tilt/sigil.rb
60
+ - lib/tilt/slim.rb
58
61
  - lib/tilt/string.rb
59
62
  - lib/tilt/template.rb
60
63
  - lib/tilt/typescript.rb
@@ -89,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
92
  - !ruby/object:Gem::Version
90
93
  version: '0'
91
94
  requirements: []
92
- rubygems_version: 3.4.6
95
+ rubygems_version: 3.4.10
93
96
  signing_key:
94
97
  specification_version: 4
95
98
  summary: Generic interface to multiple Ruby template engines
@@ -1,26 +0,0 @@
1
- require 'tilt/template'
2
- require 'bluecloth'
3
-
4
- warn "Tilt::BlueClothTemplate is deprecated, please switch to a different markdown implementation"
5
-
6
- module Tilt
7
- # BlueCloth Markdown implementation. See:
8
- # http://deveiate.org/projects/BlueCloth/
9
- class BlueClothTemplate < Template
10
- self.default_mime_type = 'text/html'
11
-
12
- def prepare
13
- @engine = BlueCloth.new(data, options)
14
- @output = nil
15
- end
16
-
17
- def evaluate(scope, locals, &block)
18
- @output ||= @engine.to_html
19
- end
20
-
21
- def allows_script?
22
- false
23
- end
24
- end
25
- end
26
-
data/lib/tilt/less.rb DELETED
@@ -1,32 +0,0 @@
1
- require 'tilt/template'
2
- require 'less'
3
-
4
- warn "Tilt::LessTemplate is deprecated, consider switching from LESS to SCSS"
5
-
6
- module Tilt
7
- # Lessscss template implementation. See:
8
- # http://lesscss.org/
9
- #
10
- # Less templates do not support object scopes, locals, or yield.
11
- class LessTemplate < Template
12
- self.default_mime_type = 'text/css'
13
-
14
- def prepare
15
- if ::Less.const_defined? :Engine
16
- @engine = ::Less::Engine.new(data)
17
- else
18
- parser = ::Less::Parser.new(options.merge :filename => eval_file, :line => line)
19
- @engine = parser.parse(data)
20
- end
21
- end
22
-
23
- def evaluate(scope, locals, &block)
24
- @output ||= @engine.to_css(options)
25
- end
26
-
27
- def allows_script?
28
- false
29
- end
30
- end
31
- end
32
-
data/lib/tilt/sigil.rb DELETED
@@ -1,36 +0,0 @@
1
- require 'open3'
2
- require 'shellwords'
3
-
4
- warn "Tilt::SigilTemplate is deprecated"
5
-
6
- module Tilt
7
- # Standalone string interpolator and template processor implementation in Go.
8
- # see: https://github.com/gliderlabs/sigil
9
- class SigilTemplate < Template
10
- def prepare
11
- end
12
-
13
- def evaluate(scope, locals, &block)
14
- variables = locals.map {|k, v| "#{k}=#{v}" }
15
-
16
- cmd = ['sigil']
17
-
18
- unless variables.empty?
19
- cmd << '-p'
20
- cmd.concat(variables)
21
- end
22
-
23
- out, err, status = Open3.capture3(*cmd, :stdin_data => data)
24
-
25
- if status.success?
26
- out.chomp
27
- else
28
- raise err.chomp.gsub('<stdin>', file)
29
- end
30
- end
31
-
32
- def allows_script?
33
- false
34
- end
35
- end
36
- end