wlang 3.0.0 → 3.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c13dc41782e57a6c997a991bfd683be1e9ede7887694126d724a7436203bf4f6
4
- data.tar.gz: 9043c388c6a3326e0b2fdd28fe2b2eef7ac88933b18c6d6434d5c38c5fee2ccc
3
+ metadata.gz: e82a5d9c33a44f4d44068433fc341ac105eb6b0abb5859315264fc9c9039af3b
4
+ data.tar.gz: a3ed2db115e809a220e1e0046e8b60178e7c093e03c3ba0eb558ef3e24c6c356
5
5
  SHA512:
6
- metadata.gz: 283d2695c3c096d80806894e376bbc18c6e170a057092ef149a625857c910ae00c9f8f3e00e8f31c655788a6ea148b3c98718bc3bad32a8caeff283609e47ced
7
- data.tar.gz: 9e0427a186128ef78959ca01906baffe296b0730f7cb6f052883f0d3a12b0c5faf7ebc49cc917c8ec399adee03e30030d2e012fbcfa1f09db561f51cd6bff45b
6
+ metadata.gz: ccc8a54926e97ef4a4b4f8b49669f2ea3b1e2e4421900ebf4f4a05d1094b5121145f607b98d4e56ced1224e1c53f728df0028631058301bad315baab080ebce1
7
+ data.tar.gz: 95b57dc614446eddc46eb3eafec0a3b9470a3b440afdfd8ebf2c7c555aea3ae35ab34cdf6d4081e58b889a5c6057efc4d8767f694fd978a3b57fdd300559ceb0
@@ -1,3 +1,7 @@
1
+ # 3.0.1 / 2020-01-07
2
+
3
+ * Resurect Tilt/Sinatra support
4
+
1
5
  # 3.0.0 / 2020-12-29
2
6
 
3
7
  * Clean project to use a standard ruby-2.7 stack
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wlang (3.0.0)
4
+ wlang (3.0.1)
5
5
  citrus (~> 3.0)
6
6
  path (~> 2.0)
7
7
  quickl (~> 0.4.3)
@@ -12,8 +12,13 @@ GEM
12
12
  specs:
13
13
  citrus (3.0.2)
14
14
  diff-lcs (1.4.4)
15
+ mustermann (1.1.1)
16
+ ruby2_keywords (~> 0.0.1)
15
17
  path (2.0.1)
16
18
  quickl (0.4.3)
19
+ rack (2.2.3)
20
+ rack-protection (2.1.0)
21
+ rack
17
22
  rake (13.0.3)
18
23
  rspec (3.10.0)
19
24
  rspec-core (~> 3.10.0)
@@ -28,15 +33,24 @@ GEM
28
33
  diff-lcs (>= 1.2.0, < 2.0)
29
34
  rspec-support (~> 3.10.0)
30
35
  rspec-support (3.10.1)
36
+ ruby2_keywords (0.0.2)
37
+ sinatra (2.1.0)
38
+ mustermann (~> 1.0)
39
+ rack (~> 2.2)
40
+ rack-protection (= 2.1.0)
41
+ tilt (~> 2.0)
31
42
  temple (0.8.2)
43
+ tilt (2.0.10)
32
44
 
33
45
  PLATFORMS
34
- x86_64-darwin-18
46
+ x86_64-darwin-15
35
47
 
36
48
  DEPENDENCIES
37
49
  rake (~> 13.0)
38
50
  rspec (~> 3.0)
51
+ sinatra (~> 2.1)
52
+ tilt (~> 2.0, >= 2.0.10)
39
53
  wlang!
40
54
 
41
55
  BUNDLED WITH
42
- 2.2.2
56
+ 2.2.1
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # WLang
2
2
 
3
+ ![](https://travis-ci.org/blambeau/wlang.svg?branch=master)
4
+
3
5
  WLang is a powerful code generation and templating engine, implemented on top o
4
6
  [temple](https://github.com/judofyr/temple) and much inspired by the excellent
5
7
  [mustache](http://mustache.github.com/).
@@ -64,3 +66,57 @@ WLang already provides a few useful dialects, such as WLang::Html
64
66
  match your needs, it is up to you to define you own dialect for making your
65
67
  generation task easy. Have a look at the implementation of WLang's ones, it's
66
68
  pretty simple to get started!
69
+
70
+ # Tilt integration
71
+
72
+ WLang has built-in support for [Tilt](https://github.com/rtomayko/tilt) facade to templating engines. In order to use that API:
73
+
74
+ ```ruby
75
+ require 'tilt' # needed in your bundle, not a wlang dependency
76
+ require 'wlang' # loads Tilt support provided Tilt has already been required
77
+
78
+ template = Tilt.new("path/to/a/template.wlang") # suppose 'Hello ${who}!'
79
+ template.render(:who => "world")
80
+ # => Hello world!
81
+
82
+ template = Tilt.new("path/to/a/template.wlang", :dialect => Highlighter)
83
+ template.render(:who => "world")
84
+ # => Hello WORLD!
85
+ ```
86
+
87
+ Please note that you should require tilt first, then wlang. Otherwise, you'll have to require `wlang/tilt` explicitely.
88
+
89
+ # Sinatra integration
90
+
91
+ WLang comes bundled with built-in support for [Sinatra](https://github.com/sinatra/sinatra) >= 1.4 (release still in progress). As usual in Sinatra, you can simply invoke wlang as follows:
92
+
93
+ ```ruby
94
+ get '/' do
95
+ wlang :index, :locals => { ... }
96
+ end
97
+ ```
98
+
99
+ As wlang encourages logic-less templates, you should always use locals. However, there is specific support for layouts and partials, as the following example demonstrates:
100
+
101
+ ```ruby
102
+ get '/' do
103
+ wlang :index, :locals => {:who => "world"}
104
+ end
105
+
106
+ __END__
107
+
108
+ @@layout
109
+ <html>
110
+ >{yield}
111
+ </html>
112
+
113
+ @@index
114
+ Hello from a partial: >{partial}
115
+
116
+ @@partial
117
+ yeah, a partial saying hello to '${who}'!
118
+
119
+ Returned body will be (ignoring carriage returns):
120
+
121
+ <html>Hello from a partial: yeah, a partial saying hello to 'world'!</html>
122
+ ```
@@ -27,6 +27,14 @@ module WLang
27
27
  end
28
28
  module_function :dialect
29
29
 
30
+ SinatraApp = proc{|arg|
31
+ defined?(Sinatra::Base) && Sinatra::Base===arg
32
+ }
33
+
34
+ TiltTemplate = proc{|arg|
35
+ defined?(Tilt::Template) && Tilt::Template===arg
36
+ }
37
+
30
38
  end # module WLang
31
39
  require 'wlang/compiler'
32
40
  require 'wlang/source'
@@ -34,3 +42,4 @@ require 'wlang/template'
34
42
  require 'wlang/dialect'
35
43
  require 'wlang/scope'
36
44
  require 'wlang/html'
45
+ require 'wlang/tilt' if defined?(::Tilt)
@@ -17,6 +17,7 @@ module WLang
17
17
  case arg
18
18
  when Hash then ObjectScope.new(arg)
19
19
  when Scope then arg
20
+ when SinatraApp then SinatraScope.new(arg)
20
21
  when Binding then BindingScope.new(arg)
21
22
  when Proc then ProcScope.new(arg)
22
23
  else
@@ -102,3 +103,4 @@ require 'wlang/scope/null_scope'
102
103
  require 'wlang/scope/object_scope'
103
104
  require 'wlang/scope/binding_scope'
104
105
  require 'wlang/scope/proc_scope'
106
+ require 'wlang/scope/sinatra_scope'
@@ -0,0 +1,49 @@
1
+ module WLang
2
+ class Scope
3
+ class SinatraScope < ObjectScope
4
+
5
+ def fetch(key, dialect = nil, unfound = nil)
6
+ find_partial(key, subject) || super
7
+ end
8
+
9
+ def inspect
10
+ "SinatraScope"
11
+ end
12
+ alias :to_s :inspect
13
+
14
+ private
15
+
16
+ def find_partial(key, app)
17
+ find_internal_partial(key, app) || find_external_partial(key, app)
18
+ end
19
+
20
+ def find_internal_partial(key, app)
21
+ return unless app.settings.templates[key]
22
+ app.send(:compile_template, :wlang, key, {}, app.settings.views)
23
+ end
24
+
25
+ def find_external_partial(key, app)
26
+ views = app.settings.views
27
+ find_files(views, key) do |file|
28
+ if engine = Tilt[file]
29
+ tpl = app.template_cache.fetch(file) do
30
+ options = if app.settings.respond_to?(:wlang)
31
+ app.settings.wlang
32
+ else
33
+ {}
34
+ end
35
+ engine.new(file.to_s, 1, options)
36
+ end
37
+ return tpl
38
+ end
39
+ end
40
+ nil
41
+ end
42
+
43
+ def find_files(folder, name, &bl)
44
+ Path(folder).glob("#{name}.*").each(&bl)
45
+ end
46
+
47
+ end # class SinatraScope
48
+ end # class Scope
49
+ end # module WLang
@@ -0,0 +1,3 @@
1
+ require 'wlang' unless defined?(WLang)
2
+ require 'tilt' unless defined?(Tilt)
3
+ require 'wlang/tilt/wlang_template'
@@ -0,0 +1,44 @@
1
+ module Tilt
2
+ class WLangTemplate < ::Tilt::Template
3
+
4
+ class << self
5
+
6
+ def engine_initialized?
7
+ defined? ::WLang
8
+ end
9
+
10
+ def with_options(options)
11
+ Class.new(WLangTemplate).tap{|c| c.default_options = options }
12
+ end
13
+
14
+ def default_options=(options)
15
+ @default_options = options
16
+ end
17
+
18
+ def default_options
19
+ @default_options ||= {}
20
+ (superclass.default_options rescue {}).merge(@default_options)
21
+ end
22
+
23
+ end
24
+
25
+ def initialize_engine
26
+ require_template_library('wlang')
27
+ end
28
+
29
+ protected
30
+
31
+ def prepare
32
+ opts = self.class.default_options.merge(self.options)
33
+ opts.merge!(:path => file) if file
34
+ @engine = WLang::Template.new(data, opts)
35
+ end
36
+
37
+ def evaluate(scope, locals, &block)
38
+ locals[:yield] = block if block
39
+ @engine.render(scope, locals.empty? ? nil : locals)
40
+ end
41
+
42
+ end
43
+ register WLangTemplate, 'wlang'
44
+ end
@@ -3,7 +3,7 @@ module WLang
3
3
 
4
4
  MAJOR = 3
5
5
  MINOR = 0
6
- TINY = 0
6
+ TINY = 1
7
7
 
8
8
  def self.to_s
9
9
  [ MAJOR, MINOR, TINY ].join('.')
@@ -0,0 +1,13 @@
1
+ require 'tilt'
2
+ require 'wlang/tilt'
3
+ describe 'WLang integration with tilt' do
4
+
5
+ it 'allows invoking tilt directly' do
6
+ Tilt.new(hello_path.to_s).render(:who => "world").should eq("Hello world!")
7
+ end
8
+
9
+ it 'allows specifying the dialect' do
10
+ Tilt.new(hello_path.to_s, :dialect => Upcasing).render.should eq("Hello WHO!")
11
+ end
12
+
13
+ end
@@ -1,6 +1,9 @@
1
1
  require 'path'
2
2
  $root_folder ||= Path.backfind('.[Rakefile]')
3
3
 
4
+ require 'tilt'
5
+ require 'sinatra/base'
6
+
4
7
  # Require wlang
5
8
  $LOAD_PATH.unshift(($root_folder/:lib).to_s)
6
9
  require 'wlang'
@@ -53,6 +56,10 @@ module Helpers
53
56
  end
54
57
  end
55
58
 
59
+ def sinatra_app(&block)
60
+ Sinatra.new(Sinatra::Base, &block).new!
61
+ end
62
+
56
63
  end
57
64
  include Helpers
58
65
 
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ module WLang
3
+ class Scope
4
+ describe SinatraScope, 'fetch' do
5
+
6
+ let(:app){
7
+ sinatra_app do
8
+ set :accessible, "world"
9
+ set :views, fixtures_folder/'templates'
10
+ helpers do
11
+ def accessible; settings.accessible; end
12
+ end
13
+ end
14
+ }
15
+
16
+ let(:scope){ Scope::SinatraScope.new(app) }
17
+
18
+ it 'delegates to helpers correctly' do
19
+ scope.fetch(:accessible).should eq("world")
20
+ end
21
+
22
+ it 'returns Tilt templates on existing views' do
23
+ scope.fetch('hello', app).should be_a(Tilt::Template)
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -10,6 +10,10 @@ module WLang
10
10
  Scope.coerce(lambda{}).should be_a(Scope::ProcScope)
11
11
  end
12
12
 
13
+ it 'recognizes Sinatra applications' do
14
+ Scope.coerce(sinatra_app).should be_a(Scope::SinatraScope)
15
+ end
16
+
13
17
  it 'falls back to ObjectScope on Hash' do
14
18
  Scope.coerce({}).should be_a(Scope::ObjectScope)
15
19
  end
@@ -0,0 +1,61 @@
1
+ require 'tilt'
2
+ require 'wlang/tilt'
3
+ describe Tilt::WLangTemplate do
4
+
5
+ it 'supports basic rendering with no scope no locals' do
6
+ template = Tilt::WLangTemplate.new{ "Hello" }
7
+ template.render.should eq("Hello")
8
+ end
9
+
10
+ it 'supports a binding scope' do
11
+ template = Tilt::WLangTemplate.new{ "Hello ${who}" }
12
+ who = "world"
13
+ template.render(binding).should eq("Hello world")
14
+ end
15
+
16
+ it 'supports a Hash scope' do
17
+ template = Tilt::WLangTemplate.new{ "Hello ${who}" }
18
+ scope = {:who => "world"}
19
+ template.render(scope).should eq("Hello world")
20
+ end
21
+
22
+ it 'supports both a scope and locals' do
23
+ template = Tilt::WLangTemplate.new{ "Hello ${who} and ${who_else}" }
24
+ who = "world"
25
+ template.render(binding, :who_else => 'wlang').should eq("Hello world and wlang")
26
+ end
27
+
28
+ it 'supports being rendered multiple times' do
29
+ template = Tilt::WLangTemplate.new{ "Hello ${i}" }
30
+ 3.times{|i| template.render(binding).should eq("Hello #{i}") }
31
+ end
32
+
33
+ it 'supports passing a block for yielding' do
34
+ template = Tilt::WLangTemplate.new{ "Hello ${yield}" }
35
+ template.render{ "world" }.should eq('Hello world')
36
+ end
37
+
38
+ it 'supports expressions on yield' do
39
+ template = Tilt::WLangTemplate.new{ "Hello ${yield.upcase}" }
40
+ template.render{ "world" }.should eq('Hello WORLD')
41
+ end
42
+
43
+ it 'passes :path option to the underlying template' do
44
+ tpl = Tilt::WLangTemplate.new(hello_path.to_s)
45
+ tpl = tpl.send(:prepare)
46
+ tpl.should be_a(WLang::Template)
47
+ tpl.path.should eq(hello_path.to_s)
48
+ end
49
+
50
+ it 'supports passing a dialect as options' do
51
+ template = Tilt::WLangTemplate.new(:dialect => Upcasing){ "Hello ${who}" }
52
+ template.render.should eq("Hello WHO")
53
+ end
54
+
55
+ it 'supports options through inheritance' do
56
+ tpl_class = Tilt::WLangTemplate.with_options(:dialect => Upcasing)
57
+ template = tpl_class.new{ "Hello ${who}" }
58
+ template.render.should eq("Hello WHO")
59
+ end
60
+
61
+ end
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_development_dependency("rake", "~> 13.0")
23
23
  s.add_development_dependency("rspec", "~> 3.0")
24
+ s.add_development_dependency("sinatra", "~> 2.1")
25
+ s.add_development_dependency("tilt", "~> 2.0", ">= 2.0.10")
24
26
 
25
27
  s.add_dependency("citrus", "~> 3.0")
26
28
  s.add_dependency("quickl", "~> 0.4.3")
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wlang
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernard Lambeau
8
8
  - Louis Lambeau
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-12-29 00:00:00.000000000 Z
12
+ date: 2021-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -39,6 +39,40 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: sinatra
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.1'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.1'
56
+ - !ruby/object:Gem::Dependency
57
+ name: tilt
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 2.0.10
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '2.0'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.0.10
42
76
  - !ruby/object:Gem::Dependency
43
77
  name: citrus
44
78
  requirement: !ruby/object:Gem::Requirement
@@ -143,9 +177,12 @@ files:
143
177
  - lib/wlang/scope/null_scope.rb
144
178
  - lib/wlang/scope/object_scope.rb
145
179
  - lib/wlang/scope/proc_scope.rb
180
+ - lib/wlang/scope/sinatra_scope.rb
146
181
  - lib/wlang/source.rb
147
182
  - lib/wlang/source/front_matter.rb
148
183
  - lib/wlang/template.rb
184
+ - lib/wlang/tilt.rb
185
+ - lib/wlang/tilt/wlang_template.rb
149
186
  - lib/wlang/version.rb
150
187
  - spec/assumptions/test_core.rb
151
188
  - spec/fixtures/dialect/foobar.rb
@@ -176,6 +213,7 @@ files:
176
213
  - spec/integration/test_examples.rb
177
214
  - spec/integration/test_readme.rb
178
215
  - spec/integration/test_upcasing.rb
216
+ - spec/integration/tilt/test_wlang_template.rb
179
217
  - spec/spec_helper.rb
180
218
  - spec/test_wlang.rb
181
219
  - spec/unit/command/test_install.rb
@@ -198,6 +236,7 @@ files:
198
236
  - spec/unit/dialect/test_tag.rb
199
237
  - spec/unit/dialect/test_tag_dispatching_name.rb
200
238
  - spec/unit/dialect/test_with_scope.rb
239
+ - spec/unit/scope/sinatra_scope/test_fetch.rb
201
240
  - spec/unit/scope/test_binding_scope.rb
202
241
  - spec/unit/scope/test_chain.rb
203
242
  - spec/unit/scope/test_coerce.rb
@@ -222,13 +261,14 @@ files:
222
261
  - spec/unit/template/test_yaml_front_matter.rb
223
262
  - spec/unit/test_assumptions.rb
224
263
  - spec/unit/test_scope.rb
264
+ - spec/unit/tilt/test_wlang_template.rb
225
265
  - tasks/gem.rake
226
266
  - tasks/test.rake
227
267
  - wlang.gemspec
228
268
  homepage: http://github.com/blambeau/wlang
229
269
  licenses: []
230
270
  metadata: {}
231
- post_install_message:
271
+ post_install_message:
232
272
  rdoc_options: []
233
273
  require_paths:
234
274
  - lib
@@ -243,83 +283,86 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
283
  - !ruby/object:Gem::Version
244
284
  version: '0'
245
285
  requirements: []
246
- rubygems_version: 3.1.4
247
- signing_key:
286
+ rubygems_version: 3.2.1
287
+ signing_key:
248
288
  specification_version: 4
249
289
  summary: WLang is a powerful code generation and templating engine
250
290
  test_files:
291
+ - spec/assumptions/test_core.rb
292
+ - spec/fixtures/dialect/foobar.rb
293
+ - spec/fixtures/dialect/upcasing.rb
294
+ - spec/fixtures/templates/front_matter.wlang
295
+ - spec/fixtures/templates/hello.wlang
296
+ - spec/fixtures/templates/hello_from_sinatra.wlang
297
+ - spec/fixtures/templates/hello_with_data.wlang
298
+ - spec/fixtures/templates/hello_with_explicit_locals.wlang
299
+ - spec/fixtures/templates/hello_with_partials.wlang
300
+ - spec/integration/examples/1-html-intro/1-basics.md
301
+ - spec/integration/examples/1-html-intro/2-imperative.md
302
+ - spec/integration/examples/1-html-intro/3-partials.md
303
+ - spec/integration/examples/1-html-intro/4-recursion.md
304
+ - spec/integration/examples/1-html-intro/5-polymorphism.md
305
+ - spec/integration/html/test_ampersand.rb
306
+ - spec/integration/html/test_bang.rb
307
+ - spec/integration/html/test_caret.rb
308
+ - spec/integration/html/test_dollar.rb
309
+ - spec/integration/html/test_greater.rb
310
+ - spec/integration/html/test_modulo.rb
311
+ - spec/integration/html/test_plus.rb
312
+ - spec/integration/html/test_question.rb
313
+ - spec/integration/html/test_sharp.rb
314
+ - spec/integration/html/test_slash.rb
315
+ - spec/integration/html/test_star.rb
316
+ - spec/integration/test_dummy.rb
317
+ - spec/integration/test_examples.rb
318
+ - spec/integration/test_readme.rb
319
+ - spec/integration/test_upcasing.rb
320
+ - spec/integration/tilt/test_wlang_template.rb
251
321
  - spec/spec_helper.rb
252
- - spec/unit/source/front_matter/test_template_content.rb
322
+ - spec/test_wlang.rb
323
+ - spec/unit/command/test_install.rb
324
+ - spec/unit/compiler/autospacing/test_right_strip.rb
325
+ - spec/unit/compiler/autospacing/test_unindent.rb
326
+ - spec/unit/compiler/test_dialect_enforcer.rb
327
+ - spec/unit/compiler/test_grammar.rb
328
+ - spec/unit/compiler/test_parser.rb
329
+ - spec/unit/compiler/test_proc_call_removal.rb
330
+ - spec/unit/compiler/test_static_merger.rb
331
+ - spec/unit/compiler/test_strconcat_flattener.rb
332
+ - spec/unit/compiler/test_to_ruby_abstraction.rb
333
+ - spec/unit/compiler/test_to_ruby_code.rb
334
+ - spec/unit/compiler/test_to_ruby_proc.rb
335
+ - spec/unit/dialect/test_compile.rb
336
+ - spec/unit/dialect/test_context.rb
337
+ - spec/unit/dialect/test_evaluate.rb
338
+ - spec/unit/dialect/test_new.rb
339
+ - spec/unit/dialect/test_render.rb
340
+ - spec/unit/dialect/test_tag.rb
341
+ - spec/unit/dialect/test_tag_dispatching_name.rb
342
+ - spec/unit/dialect/test_with_scope.rb
343
+ - spec/unit/scope/sinatra_scope/test_fetch.rb
344
+ - spec/unit/scope/test_binding_scope.rb
345
+ - spec/unit/scope/test_chain.rb
346
+ - spec/unit/scope/test_coerce.rb
347
+ - spec/unit/scope/test_null_scope.rb
348
+ - spec/unit/scope/test_object_scope.rb
349
+ - spec/unit/scope/test_proc_scope.rb
350
+ - spec/unit/scope/test_push.rb
253
351
  - spec/unit/source/front_matter/test_locals.rb
254
- - spec/unit/source/test_template_content.rb
352
+ - spec/unit/source/front_matter/test_template_content.rb
353
+ - spec/unit/source/test_locals.rb
255
354
  - spec/unit/source/test_path.rb
355
+ - spec/unit/source/test_template_content.rb
256
356
  - spec/unit/source/test_with_front_matter.rb
257
- - spec/unit/source/test_locals.rb
258
- - spec/unit/test_assumptions.rb
259
357
  - spec/unit/template/test_call.rb
260
- - spec/unit/template/test_to_ast.rb
261
- - spec/unit/template/test_to_ruby_code.rb
358
+ - spec/unit/template/test_call_args_conventions.rb
262
359
  - spec/unit/template/test_new.rb
263
360
  - spec/unit/template/test_path.rb
264
- - spec/unit/template/test_to_ruby_proc.rb
265
361
  - spec/unit/template/test_render.rb
362
+ - spec/unit/template/test_to_ast.rb
363
+ - spec/unit/template/test_to_ruby_code.rb
364
+ - spec/unit/template/test_to_ruby_proc.rb
266
365
  - spec/unit/template/test_yaml_front_matter.rb
267
- - spec/unit/template/test_call_args_conventions.rb
268
- - spec/unit/scope/test_chain.rb
269
- - spec/unit/scope/test_push.rb
270
- - spec/unit/scope/test_object_scope.rb
271
- - spec/unit/scope/test_binding_scope.rb
272
- - spec/unit/scope/test_proc_scope.rb
273
- - spec/unit/scope/test_null_scope.rb
274
- - spec/unit/scope/test_coerce.rb
366
+ - spec/unit/test_assumptions.rb
275
367
  - spec/unit/test_scope.rb
276
- - spec/unit/command/test_install.rb
277
- - spec/unit/dialect/test_new.rb
278
- - spec/unit/dialect/test_render.rb
279
- - spec/unit/dialect/test_context.rb
280
- - spec/unit/dialect/test_tag.rb
281
- - spec/unit/dialect/test_evaluate.rb
282
- - spec/unit/dialect/test_compile.rb
283
- - spec/unit/dialect/test_with_scope.rb
284
- - spec/unit/dialect/test_tag_dispatching_name.rb
285
- - spec/unit/compiler/test_to_ruby_code.rb
286
- - spec/unit/compiler/test_proc_call_removal.rb
287
- - spec/unit/compiler/test_to_ruby_proc.rb
288
- - spec/unit/compiler/test_strconcat_flattener.rb
289
- - spec/unit/compiler/test_dialect_enforcer.rb
290
- - spec/unit/compiler/test_to_ruby_abstraction.rb
291
- - spec/unit/compiler/test_grammar.rb
292
- - spec/unit/compiler/test_parser.rb
293
- - spec/unit/compiler/autospacing/test_right_strip.rb
294
- - spec/unit/compiler/autospacing/test_unindent.rb
295
- - spec/unit/compiler/test_static_merger.rb
296
- - spec/integration/test_examples.rb
297
- - spec/integration/test_readme.rb
298
- - spec/integration/html/test_greater.rb
299
- - spec/integration/html/test_ampersand.rb
300
- - spec/integration/html/test_bang.rb
301
- - spec/integration/html/test_slash.rb
302
- - spec/integration/html/test_sharp.rb
303
- - spec/integration/html/test_star.rb
304
- - spec/integration/html/test_caret.rb
305
- - spec/integration/html/test_question.rb
306
- - spec/integration/html/test_modulo.rb
307
- - spec/integration/html/test_dollar.rb
308
- - spec/integration/html/test_plus.rb
309
- - spec/integration/test_dummy.rb
310
- - spec/integration/test_upcasing.rb
311
- - spec/integration/examples/1-html-intro/5-polymorphism.md
312
- - spec/integration/examples/1-html-intro/2-imperative.md
313
- - spec/integration/examples/1-html-intro/1-basics.md
314
- - spec/integration/examples/1-html-intro/3-partials.md
315
- - spec/integration/examples/1-html-intro/4-recursion.md
316
- - spec/assumptions/test_core.rb
317
- - spec/test_wlang.rb
318
- - spec/fixtures/templates/hello_with_explicit_locals.wlang
319
- - spec/fixtures/templates/hello_from_sinatra.wlang
320
- - spec/fixtures/templates/front_matter.wlang
321
- - spec/fixtures/templates/hello.wlang
322
- - spec/fixtures/templates/hello_with_partials.wlang
323
- - spec/fixtures/templates/hello_with_data.wlang
324
- - spec/fixtures/dialect/foobar.rb
325
- - spec/fixtures/dialect/upcasing.rb
368
+ - spec/unit/tilt/test_wlang_template.rb