flavour_saver 0.3.6 → 0.3.7

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: a79f853de54eb5d874990e16f9dfa613baecd6a6
4
- data.tar.gz: 9087954f3e3a7fe8d33fb174955702cf99572602
3
+ metadata.gz: c3efa30121a2e226ebb1274cf5597d35ab7f9c47
4
+ data.tar.gz: c89bc7f065e3dfbb07882c44465711981643d454
5
5
  SHA512:
6
- metadata.gz: 069c5cb0b6df25e7eaff653ab7f44b195dbe1447378eee9033f723205e500e9b57f8b9bfb0eaa6d2c6c36d693fef7057ab7f449a30596fece2f1c5f5c55a9efe
7
- data.tar.gz: faaf752ce94bb0ce1c29c3ae4f43703fffcb8ef9192d30bd5f335eddbd1f28e0f0330055c0c0746927830b7421901b9a89f0726d73ad15f3d2b74f14fae52ef7
6
+ metadata.gz: 1292541b248293451704808a7458b2132ab7109f9664845c77d01c375581396192af2ee2a19c6cfae4fa567294757cb5b563803e23ccfd8110961f204adbdd03
7
+ data.tar.gz: a74f63a36b4864fbc248fde7ff9e03c19ffc49412f37b472521cf2ed13bf7403e24243e423211c1599c924a92a8e9f9b1472ba15c07b12a12955de70f131da7c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flavour_saver (0.3.6)
4
+ flavour_saver (0.3.7)
5
5
  rltk (~> 2.2.0)
6
6
  tilt
7
7
 
@@ -77,3 +77,6 @@ DEPENDENCIES
77
77
  rspec-core
78
78
  rspec-expectations
79
79
  rspec-mocks
80
+
81
+ BUNDLED WITH
82
+ 1.10.6
data/README.md CHANGED
@@ -14,6 +14,13 @@ Rails and on other frameworks (such as Sinatra) via Tilt.
14
14
 
15
15
  Please use it, break it, and send issues/PR's for improvement.
16
16
 
17
+ ## Caveat
18
+
19
+ FlavourSaver is used in production by a lot of folks, none of whom are me. As
20
+ I don't use FlavourSaver in my daily life I will not be responding to issues
21
+ unless they have a corresponding PR. If you'd like to take over maintaining
22
+ this project then get in contact.
23
+
17
24
  ## License
18
25
 
19
26
  FlavourSaver is Copyright (c) 2013 Resistor Limited and licensed under the terms
@@ -66,6 +73,7 @@ Currently supported:
66
73
  - Block expressions with inverse blocks
67
74
  - Inverse blocks
68
75
  - Partials
76
+ - Raw content (`{{{{raw}}}} not parsed or validated {{{{/raw}}}}`)
69
77
 
70
78
  ## Helpers
71
79
 
@@ -3,6 +3,21 @@ require 'rltk'
3
3
  module FlavourSaver
4
4
  class Lexer < RLTK::Lexer
5
5
 
6
+ # seems to have problem with hash symbol in regex
7
+ rule /\{\{\{\{raw\}\}\}\}/, :default do
8
+ push_state :raw
9
+ :RAWSTART
10
+ end
11
+
12
+ rule /.*?(?=\{\{\{\{\/raw\}\}\}\})/m, :raw do |str|
13
+ [ :RAWSTRING, str ]
14
+ end
15
+
16
+ rule /\{\{\{\{\/raw\}\}\}\}/, :raw do
17
+ pop_state
18
+ :RAWEND
19
+ end
20
+
6
21
  rule /{{{/, :default do
7
22
  push_state :expression
8
23
  :TEXPRST
@@ -39,7 +39,8 @@ module FlavourSaver
39
39
  end
40
40
 
41
41
  production(:template_item) do
42
- clause('output') { |e| e }
42
+ clause('raw_bl') { |e| e }
43
+ clause('output') { |e| e }
43
44
  clause('expression') { |e| e }
44
45
  end
45
46
 
@@ -47,6 +48,10 @@ module FlavourSaver
47
48
  clause('OUT') { |o| OutputNode.new(o) }
48
49
  end
49
50
 
51
+ production(:raw_bl) do
52
+ clause('RAWSTART RAWSTRING RAWEND') { |_,e,_| OutputNode.new(e) }
53
+ end
54
+
50
55
  production(:expression) do
51
56
  clause('block_expression') { |e| e }
52
57
  clause('expr') { |e| ExpressionNode.new(e) }
@@ -121,7 +126,7 @@ module FlavourSaver
121
126
 
122
127
  production('arguments') do
123
128
  clause('argument_list') { |e| e }
124
- clause('argument_list hash') { |e0,e1| e0 + [e1] }
129
+ clause('argument_list WHITE hash') { |e0,_,e1| e0 + [e1] }
125
130
  clause('hash') { |e| [e] }
126
131
  end
127
132
 
@@ -1,3 +1,3 @@
1
1
  module FlavourSaver
2
- VERSION = "0.3.6"
2
+ VERSION = "0.3.7"
3
3
  end
@@ -0,0 +1,12 @@
1
+ require 'tilt'
2
+ require 'flavour_saver'
3
+
4
+ describe 'Fixture: raw.hbs' do
5
+ subject { Tilt.new(template).render(context).gsub(/[\s\r\n]+/, ' ').strip }
6
+ let(:template) { File.expand_path('../../fixtures/raw.hbs', __FILE__) }
7
+ let(:context) { double(:context) }
8
+
9
+ it 'renders correctly' do
10
+ subject.should == "{{=if brokensyntax}"
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ {{{{raw}}}}
2
+ {{=if brokensyntax}
3
+ {{{{/raw}}}}
@@ -41,7 +41,7 @@ describe FlavourSaver::Parser do
41
41
  items.first.method.first.name.should == 'foo'
42
42
  items.first.method.first.arguments.should be_empty
43
43
  end
44
- end
44
+ end
45
45
 
46
46
  describe '{{foo.bar}}' do
47
47
  subject { FlavourSaver::Parser.parse(FlavourSaver::Lexer.lex('{{foo.bar}}')) }
@@ -296,7 +296,6 @@ describe FlavourSaver::Parser do
296
296
  -> { subject }.should_not raise_error
297
297
  end
298
298
  end
299
-
300
299
  describe '' do
301
300
  subject { FlavourSaver::Parser.parse(FlavourSaver::Lexer.lex('')) }
302
301
 
@@ -304,5 +303,15 @@ describe FlavourSaver::Parser do
304
303
  items.should be_empty
305
304
  end
306
305
  end
307
-
306
+ describe '{{foo "bar" fred="wilma"}}' do
307
+ subject { FlavourSaver::Parser.parse(FlavourSaver::Lexer.lex('{{foo "bar" fred="wilma"}}')) }
308
+ it 'calls the method "foo" with the "bar" and {:fred => "wilma"} as arguments' do
309
+ items.first.method.first.should be_a(FlavourSaver::CallNode)
310
+ items.first.method.first.name.should == 'foo'
311
+ items.first.method.first.arguments.first.should be_a(FlavourSaver::StringNode)
312
+ items.first.method.first.arguments.first.value.should == 'bar'
313
+ items.first.method.first.arguments.last.should be_a(Hash)
314
+ items.first.method.first.arguments.last.should == { :fred => FlavourSaver::StringNode.new('wilma') }
315
+ end
316
+ end
308
317
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flavour_saver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Harton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-15 00:00:00.000000000 Z
11
+ date: 2015-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -172,6 +172,7 @@ files:
172
172
  - spec/acceptance/if_else_spec.rb
173
173
  - spec/acceptance/multi_level_with_spec.rb
174
174
  - spec/acceptance/one_character_identifier_spec.rb
175
+ - spec/acceptance/raw_block_spec.rb
175
176
  - spec/acceptance/runtime_run_spec.rb
176
177
  - spec/acceptance/sections_spec.rb
177
178
  - spec/acceptance/segment_literals_spec.rb
@@ -184,6 +185,7 @@ files:
184
185
  - spec/fixtures/multi_level_if.hbs
185
186
  - spec/fixtures/multi_level_with.hbs
186
187
  - spec/fixtures/one_character_identifier.hbs
188
+ - spec/fixtures/raw.hbs
187
189
  - spec/fixtures/sections.hbs
188
190
  - spec/fixtures/simple_expression.hbs
189
191
  - spec/lib/flavour_saver/lexer_spec.rb
@@ -209,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
211
  version: '0'
210
212
  requirements: []
211
213
  rubyforge_project:
212
- rubygems_version: 2.4.3
214
+ rubygems_version: 2.4.5.1
213
215
  signing_key:
214
216
  specification_version: 4
215
217
  summary: Handlebars.js without the .js
@@ -223,6 +225,7 @@ test_files:
223
225
  - spec/acceptance/if_else_spec.rb
224
226
  - spec/acceptance/multi_level_with_spec.rb
225
227
  - spec/acceptance/one_character_identifier_spec.rb
228
+ - spec/acceptance/raw_block_spec.rb
226
229
  - spec/acceptance/runtime_run_spec.rb
227
230
  - spec/acceptance/sections_spec.rb
228
231
  - spec/acceptance/segment_literals_spec.rb
@@ -235,6 +238,7 @@ test_files:
235
238
  - spec/fixtures/multi_level_if.hbs
236
239
  - spec/fixtures/multi_level_with.hbs
237
240
  - spec/fixtures/one_character_identifier.hbs
241
+ - spec/fixtures/raw.hbs
238
242
  - spec/fixtures/sections.hbs
239
243
  - spec/fixtures/simple_expression.hbs
240
244
  - spec/lib/flavour_saver/lexer_spec.rb