curlybars 1.8.0 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/curlybars/error/lex.rb +1 -1
  3. data/lib/curlybars/error/parse.rb +1 -1
  4. data/lib/curlybars/node/path.rb +11 -13
  5. data/lib/curlybars/presenter.rb +2 -2
  6. data/lib/curlybars/rendering_support.rb +2 -1
  7. data/lib/curlybars/template_handler.rb +3 -15
  8. data/lib/curlybars/version.rb +1 -1
  9. metadata +32 -108
  10. data/spec/acceptance/application_layout_spec.rb +0 -60
  11. data/spec/acceptance/collection_blocks_spec.rb +0 -28
  12. data/spec/acceptance/global_helper_spec.rb +0 -25
  13. data/spec/curlybars/configuration_spec.rb +0 -57
  14. data/spec/curlybars/error/base_spec.rb +0 -41
  15. data/spec/curlybars/error/compile_spec.rb +0 -19
  16. data/spec/curlybars/error/lex_spec.rb +0 -25
  17. data/spec/curlybars/error/parse_spec.rb +0 -74
  18. data/spec/curlybars/error/render_spec.rb +0 -19
  19. data/spec/curlybars/error/validate_spec.rb +0 -19
  20. data/spec/curlybars/lexer_spec.rb +0 -490
  21. data/spec/curlybars/method_whitelist_spec.rb +0 -299
  22. data/spec/curlybars/processor/tilde_spec.rb +0 -60
  23. data/spec/curlybars/rendering_support_spec.rb +0 -421
  24. data/spec/curlybars/safe_buffer_spec.rb +0 -46
  25. data/spec/curlybars/template_handler_spec.rb +0 -225
  26. data/spec/integration/cache_spec.rb +0 -126
  27. data/spec/integration/comment_spec.rb +0 -60
  28. data/spec/integration/exception_spec.rb +0 -31
  29. data/spec/integration/node/block_helper_else_spec.rb +0 -420
  30. data/spec/integration/node/each_else_spec.rb +0 -408
  31. data/spec/integration/node/each_spec.rb +0 -289
  32. data/spec/integration/node/escape_spec.rb +0 -27
  33. data/spec/integration/node/helper_spec.rb +0 -186
  34. data/spec/integration/node/if_else_spec.rb +0 -170
  35. data/spec/integration/node/if_spec.rb +0 -153
  36. data/spec/integration/node/output_spec.rb +0 -66
  37. data/spec/integration/node/partial_spec.rb +0 -64
  38. data/spec/integration/node/path_spec.rb +0 -296
  39. data/spec/integration/node/root_spec.rb +0 -13
  40. data/spec/integration/node/sub_expression_spec.rb +0 -426
  41. data/spec/integration/node/template_spec.rb +0 -84
  42. data/spec/integration/node/unless_else_spec.rb +0 -139
  43. data/spec/integration/node/unless_spec.rb +0 -128
  44. data/spec/integration/node/with_spec.rb +0 -178
  45. data/spec/integration/processor/tilde_spec.rb +0 -38
  46. data/spec/integration/processors_spec.rb +0 -29
  47. data/spec/integration/visitor_spec.rb +0 -154
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acf93500c679c1ecff9dfc08b9f5ec8a5ee026465a0d2e39c4f47b9127670715
4
- data.tar.gz: 9308ce377a66177b91338e0f16c20ce4096fad3cf4b6591e5ad99baa294113f4
3
+ metadata.gz: a21d1b2f9bc23315fd45fc0f3e1f1dba730d7d7555b221968956635e00f2f989
4
+ data.tar.gz: d834d004783806af09cec7fa411bd5184529a30b1d60995cebcba564d54cd5e5
5
5
  SHA512:
6
- metadata.gz: 8b0e37a737948d1e60acb3bd3e0f37876463433fbe05003d3ed8179d622ed04c78494fec37c2405a0ddcb9554277215570d3fcf3a377d275a9e0a171c2e30c29
7
- data.tar.gz: f3bc6fde32e9f8f7d4d6df7da6b77a6ab750932b61baf17d8ad35f9f134df36b7107724fcc6a27911da405a5d7f440cff573a9cce89de6e673478a77dd03b7d3
6
+ metadata.gz: '066406790ee118acfcd150c5d604e41298dfca0436be419482e05a71253396827c2314313036dfe03d853a01e2b615fec66ab26fa43058fbd94fa27160dad970'
7
+ data.tar.gz: 21580e1338a0200d0210e298752030320c38fbf7a9f1021912ee638d5b4a3492bfdae79e64eb754f919fb34d17f88c74f624e5aaab577bf566dcaf31ef173188
@@ -9,7 +9,7 @@ module Curlybars
9
9
 
10
10
  error_line = source.split("\n")[line_number - 1]
11
11
  before_error = error_line.first(line_offset).last(10)
12
- after_error = error_line[line_offset + 1..-1].first(10)
12
+ after_error = error_line[line_offset + 1..].first(10)
13
13
  error = error_line[line_offset]
14
14
 
15
15
  details = [before_error, error, after_error]
@@ -16,7 +16,7 @@ module Curlybars
16
16
 
17
17
  error_line = source.split("\n")[line_number - 1]
18
18
  before_error = error_line.first(line_offset).last(10)
19
- after_error = error_line[line_offset + length..-1].first(10)
19
+ after_error = error_line[line_offset + length..].first(10)
20
20
  error = error_line.slice(line_offset, length)
21
21
 
22
22
  details = [before_error, error, after_error]
@@ -109,20 +109,18 @@ module Curlybars
109
109
 
110
110
  offset_adjustment = 0
111
111
  dotted_path_side.split(/\./).map(&:to_sym).inject(base_tree) do |sub_tree, step|
112
- begin
113
- if step == :this
114
- next sub_tree
115
- elsif step == :length && (sub_tree.is_a?(Array) && sub_tree.first.is_a?(Hash))
116
- next nil # :length is synthesised leaf
117
- elsif !(sub_tree.is_a?(Hash) && sub_tree.key?(step))
118
- message = step.to_s == path ? "'#{path}' does not exist" : "not possible to access `#{step}` in `#{path}`"
119
- raise Curlybars::Error::Validate.new('unallowed_path', message, position, offset_adjustment, path: path, step: step)
120
- end
121
-
122
- sub_tree[step]
123
- ensure
124
- offset_adjustment += step.length + 1 # '1' is the length of the dot
112
+ if step == :this
113
+ next sub_tree
114
+ elsif step == :length && (sub_tree.is_a?(Array) && sub_tree.first.is_a?(Hash))
115
+ next nil # :length is synthesised leaf
116
+ elsif !(sub_tree.is_a?(Hash) && sub_tree.key?(step))
117
+ message = step.to_s == path ? "'#{path}' does not exist" : "not possible to access `#{step}` in `#{path}`"
118
+ raise Curlybars::Error::Validate.new('unallowed_path', message, position, offset_adjustment, path: path, step: step)
125
119
  end
120
+
121
+ sub_tree[step]
122
+ ensure
123
+ offset_adjustment += step.length + 1 # '1' is the length of the dot
126
124
  end
127
125
  end
128
126
  end
@@ -276,8 +276,8 @@ module Curlybars
276
276
  # Delegates private method calls to the current view context.
277
277
  #
278
278
  # The view context, an instance of ActionView::Base, is set by Rails.
279
- def method_missing(method, *args, &block)
280
- @_context.public_send(method, *args, &block)
279
+ def method_missing(method, *args, **kwargs, &block)
280
+ @_context.public_send(method, *args, **kwargs, &block)
281
281
  end
282
282
 
283
283
  # Tells ruby (and developers) what methods we can accept.
@@ -61,7 +61,8 @@ module Curlybars
61
61
  scope = variables.first(variables_position).reverse.find do |vars|
62
62
  vars.key? variable
63
63
  end
64
- return scope[variable] if scope
64
+
65
+ scope[variable] if scope
65
66
  end
66
67
 
67
68
  def path(path, position)
@@ -13,17 +13,9 @@ module Curlybars
13
13
  # template - The ActionView::Template template that should be compiled.
14
14
  #
15
15
  # Returns a String containing the Ruby code representing the template.
16
- if ActionView::VERSION::MAJOR < 6
17
- def call(template)
18
- instrument(template) do
19
- compile_for_actionview5(template)
20
- end
21
- end
22
- else
23
- def call(template, source)
24
- instrument(template) do
25
- compile(template, source)
26
- end
16
+ def call(template, source)
17
+ instrument(template) do
18
+ compile(template, source)
27
19
  end
28
20
  end
29
21
 
@@ -51,10 +43,6 @@ module Curlybars
51
43
 
52
44
  private
53
45
 
54
- def compile_for_actionview5(template)
55
- compile(template, template.source)
56
- end
57
-
58
46
  def compile(template, source)
59
47
  # Template is empty, so there's no need to initialize a presenter.
60
48
  return %("") if source.empty?
@@ -1,3 +1,3 @@
1
1
  module Curlybars
2
- VERSION = '1.8.0'.freeze
2
+ VERSION = '1.10.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curlybars
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Libo Cannici
@@ -12,10 +12,10 @@ authors:
12
12
  - Andreas Garnæs
13
13
  - Augusto Silva
14
14
  - Attila Večerek
15
- autorequire:
15
+ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2022-11-09 00:00:00.000000000 Z
18
+ date: 2024-01-16 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: actionpack
@@ -23,40 +23,40 @@ dependencies:
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.2'
26
+ version: '6.0'
27
27
  - - "<"
28
28
  - !ruby/object:Gem::Version
29
- version: '7.1'
29
+ version: '7.2'
30
30
  type: :runtime
31
31
  prerelease: false
32
32
  version_requirements: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: '4.2'
36
+ version: '6.0'
37
37
  - - "<"
38
38
  - !ruby/object:Gem::Version
39
- version: '7.1'
39
+ version: '7.2'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: activesupport
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '4.2'
46
+ version: '6.0'
47
47
  - - "<"
48
48
  - !ruby/object:Gem::Version
49
- version: '7.1'
49
+ version: '7.2'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: '4.2'
56
+ version: '6.0'
57
57
  - - "<"
58
58
  - !ruby/object:Gem::Version
59
- version: '7.1'
59
+ version: '7.2'
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: ffi
62
62
  requirement: !ruby/object:Gem::Requirement
@@ -119,20 +119,20 @@ dependencies:
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: '4.2'
122
+ version: '6.0'
123
123
  - - "<"
124
124
  - !ruby/object:Gem::Version
125
- version: '7.1'
125
+ version: '7.2'
126
126
  type: :development
127
127
  prerelease: false
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: '4.2'
132
+ version: '6.0'
133
133
  - - "<"
134
134
  - !ruby/object:Gem::Version
135
- version: '7.1'
135
+ version: '7.2'
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: rake
138
138
  requirement: !ruby/object:Gem::Requirement
@@ -151,72 +151,72 @@ dependencies:
151
151
  name: rspec-rails
152
152
  requirement: !ruby/object:Gem::Requirement
153
153
  requirements:
154
- - - "~>"
154
+ - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: '3.8'
156
+ version: '0'
157
157
  type: :development
158
158
  prerelease: false
159
159
  version_requirements: !ruby/object:Gem::Requirement
160
160
  requirements:
161
- - - "~>"
161
+ - - ">="
162
162
  - !ruby/object:Gem::Version
163
- version: '3.8'
163
+ version: '0'
164
164
  - !ruby/object:Gem::Dependency
165
165
  name: rubocop
166
166
  requirement: !ruby/object:Gem::Requirement
167
167
  requirements:
168
168
  - - "~>"
169
169
  - !ruby/object:Gem::Version
170
- version: 1.6.0
170
+ version: '1.57'
171
171
  type: :development
172
172
  prerelease: false
173
173
  version_requirements: !ruby/object:Gem::Requirement
174
174
  requirements:
175
175
  - - "~>"
176
176
  - !ruby/object:Gem::Version
177
- version: 1.6.0
177
+ version: '1.57'
178
178
  - !ruby/object:Gem::Dependency
179
179
  name: rubocop-performance
180
180
  requirement: !ruby/object:Gem::Requirement
181
181
  requirements:
182
182
  - - "~>"
183
183
  - !ruby/object:Gem::Version
184
- version: 1.9.0
184
+ version: '1.19'
185
185
  type: :development
186
186
  prerelease: false
187
187
  version_requirements: !ruby/object:Gem::Requirement
188
188
  requirements:
189
189
  - - "~>"
190
190
  - !ruby/object:Gem::Version
191
- version: 1.9.0
191
+ version: '1.19'
192
192
  - !ruby/object:Gem::Dependency
193
193
  name: rubocop-rake
194
194
  requirement: !ruby/object:Gem::Requirement
195
195
  requirements:
196
196
  - - "~>"
197
197
  - !ruby/object:Gem::Version
198
- version: 0.5.0
198
+ version: '0.6'
199
199
  type: :development
200
200
  prerelease: false
201
201
  version_requirements: !ruby/object:Gem::Requirement
202
202
  requirements:
203
203
  - - "~>"
204
204
  - !ruby/object:Gem::Version
205
- version: 0.5.0
205
+ version: '0.6'
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: rubocop-rspec
208
208
  requirement: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - "~>"
211
211
  - !ruby/object:Gem::Version
212
- version: 2.1.0
212
+ version: '2.25'
213
213
  type: :development
214
214
  prerelease: false
215
215
  version_requirements: !ruby/object:Gem::Requirement
216
216
  requirements:
217
217
  - - "~>"
218
218
  - !ruby/object:Gem::Version
219
- version: 2.1.0
219
+ version: '2.25'
220
220
  description: |-
221
221
  A view layer for your Rails apps that separates structure and logic, using Handlebars templates.
222
222
  Strongly inspired by Curly Template gem by Daniel Schierbeck.
@@ -267,49 +267,11 @@ files:
267
267
  - lib/curlybars/template_handler.rb
268
268
  - lib/curlybars/version.rb
269
269
  - lib/curlybars/visitor.rb
270
- - spec/acceptance/application_layout_spec.rb
271
- - spec/acceptance/collection_blocks_spec.rb
272
- - spec/acceptance/global_helper_spec.rb
273
- - spec/curlybars/configuration_spec.rb
274
- - spec/curlybars/error/base_spec.rb
275
- - spec/curlybars/error/compile_spec.rb
276
- - spec/curlybars/error/lex_spec.rb
277
- - spec/curlybars/error/parse_spec.rb
278
- - spec/curlybars/error/render_spec.rb
279
- - spec/curlybars/error/validate_spec.rb
280
- - spec/curlybars/lexer_spec.rb
281
- - spec/curlybars/method_whitelist_spec.rb
282
- - spec/curlybars/processor/tilde_spec.rb
283
- - spec/curlybars/rendering_support_spec.rb
284
- - spec/curlybars/safe_buffer_spec.rb
285
- - spec/curlybars/template_handler_spec.rb
286
- - spec/integration/cache_spec.rb
287
- - spec/integration/comment_spec.rb
288
- - spec/integration/exception_spec.rb
289
- - spec/integration/node/block_helper_else_spec.rb
290
- - spec/integration/node/each_else_spec.rb
291
- - spec/integration/node/each_spec.rb
292
- - spec/integration/node/escape_spec.rb
293
- - spec/integration/node/helper_spec.rb
294
- - spec/integration/node/if_else_spec.rb
295
- - spec/integration/node/if_spec.rb
296
- - spec/integration/node/output_spec.rb
297
- - spec/integration/node/partial_spec.rb
298
- - spec/integration/node/path_spec.rb
299
- - spec/integration/node/root_spec.rb
300
- - spec/integration/node/sub_expression_spec.rb
301
- - spec/integration/node/template_spec.rb
302
- - spec/integration/node/unless_else_spec.rb
303
- - spec/integration/node/unless_spec.rb
304
- - spec/integration/node/with_spec.rb
305
- - spec/integration/processor/tilde_spec.rb
306
- - spec/integration/processors_spec.rb
307
- - spec/integration/visitor_spec.rb
308
270
  homepage: https://github.com/zendesk/curlybars
309
271
  licenses:
310
272
  - Apache-2.0
311
273
  metadata: {}
312
- post_install_message:
274
+ post_install_message:
313
275
  rdoc_options:
314
276
  - "--charset=UTF-8"
315
277
  require_paths:
@@ -318,53 +280,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
318
280
  requirements:
319
281
  - - ">="
320
282
  - !ruby/object:Gem::Version
321
- version: '2.4'
283
+ version: '3.0'
322
284
  required_rubygems_version: !ruby/object:Gem::Requirement
323
285
  requirements:
324
286
  - - ">="
325
287
  - !ruby/object:Gem::Version
326
288
  version: '0'
327
289
  requirements: []
328
- rubygems_version: 3.1.6
329
- signing_key:
290
+ rubygems_version: 3.5.3
291
+ signing_key:
330
292
  specification_version: 4
331
293
  summary: Create your views using Handlebars templates!
332
- test_files:
333
- - spec/curlybars/rendering_support_spec.rb
334
- - spec/curlybars/method_whitelist_spec.rb
335
- - spec/curlybars/configuration_spec.rb
336
- - spec/curlybars/processor/tilde_spec.rb
337
- - spec/curlybars/template_handler_spec.rb
338
- - spec/curlybars/error/compile_spec.rb
339
- - spec/curlybars/error/render_spec.rb
340
- - spec/curlybars/error/parse_spec.rb
341
- - spec/curlybars/error/validate_spec.rb
342
- - spec/curlybars/error/lex_spec.rb
343
- - spec/curlybars/error/base_spec.rb
344
- - spec/curlybars/safe_buffer_spec.rb
345
- - spec/curlybars/lexer_spec.rb
346
- - spec/integration/processor/tilde_spec.rb
347
- - spec/integration/exception_spec.rb
348
- - spec/integration/processors_spec.rb
349
- - spec/integration/visitor_spec.rb
350
- - spec/integration/node/escape_spec.rb
351
- - spec/integration/node/unless_else_spec.rb
352
- - spec/integration/node/output_spec.rb
353
- - spec/integration/node/if_spec.rb
354
- - spec/integration/node/sub_expression_spec.rb
355
- - spec/integration/node/unless_spec.rb
356
- - spec/integration/node/with_spec.rb
357
- - spec/integration/node/partial_spec.rb
358
- - spec/integration/node/block_helper_else_spec.rb
359
- - spec/integration/node/root_spec.rb
360
- - spec/integration/node/template_spec.rb
361
- - spec/integration/node/each_spec.rb
362
- - spec/integration/node/each_else_spec.rb
363
- - spec/integration/node/helper_spec.rb
364
- - spec/integration/node/path_spec.rb
365
- - spec/integration/node/if_else_spec.rb
366
- - spec/integration/comment_spec.rb
367
- - spec/integration/cache_spec.rb
368
- - spec/acceptance/collection_blocks_spec.rb
369
- - spec/acceptance/global_helper_spec.rb
370
- - spec/acceptance/application_layout_spec.rb
294
+ test_files: []
@@ -1,60 +0,0 @@
1
- describe "Using Curlybars for the application layout", type: :request do
2
- example "A simple layout view in Curlybars" do
3
- get '/'
4
-
5
- expect(body).to eq(<<~HTML)
6
- <html>
7
- <head>
8
- <title>Dummy app</title>
9
- </head>
10
- <body>
11
- <h1>Dashboard</h1>
12
- <p>Hello, World!</p>
13
- <p>Welcome!</p>
14
-
15
- </body>
16
- </html>
17
- HTML
18
- end
19
-
20
- describe "Curlybars" do
21
- before do
22
- Curlybars.configure do |config|
23
- config.presenters_namespace = 'curlybars_presenters'
24
- end
25
- end
26
-
27
- after do
28
- Curlybars.reset
29
- end
30
-
31
- example "A simple layout view in Curlybars with html safe logic" do
32
- get '/articles/1'
33
-
34
- expect(body).to eq(<<~HTML)
35
- <html>
36
- <head>
37
- <title>Dummy app</title>
38
- </head>
39
- <body>
40
- <p>Hi Admin</p>
41
-
42
- <h1>Article: The Prince</h1>
43
-
44
- <p>This is <strong>important</strong>!</p>
45
-
46
- <p>&lt;script&gt;alert(&#39;bad&#39;)&lt;/script&gt;</p>
47
-
48
-
49
- <p>
50
- author Nicolò
51
- <img src="http://example.com/foo.png" />
52
- </p>
53
-
54
-
55
- </body>
56
- </html>
57
- HTML
58
- end
59
- end
60
- end
@@ -1,28 +0,0 @@
1
- describe "Collection blocks", type: :request do
2
- before do
3
- Curlybars.configure do |config|
4
- config.presenters_namespace = 'curlybars_presenters'
5
- end
6
- end
7
-
8
- example "Rendering collections" do
9
- get '/categories'
10
-
11
- expect(body).to eq(<<~HTML)
12
- <html>
13
- <head>
14
- <title>Dummy app</title>
15
- </head>
16
- <body>
17
-
18
- <h1>This are the categories</h1>
19
-
20
- <p>One</p>
21
- <p>Two</p>
22
-
23
-
24
- </body>
25
- </html>
26
- HTML
27
- end
28
- end
@@ -1,25 +0,0 @@
1
- describe "Collection blocks", type: :request do
2
- before do
3
- Curlybars.configure do |config|
4
- config.presenters_namespace = 'curlybars_presenters'
5
- config.global_helpers_provider_classes = [GlobalHelpers]
6
- end
7
- end
8
-
9
- example "Render a global helper" do
10
- get '/welcome'
11
-
12
- expect(body).to eq(<<~HTML)
13
- <html>
14
- <head>
15
- <title>Dummy app</title>
16
- </head>
17
- <body>
18
- Login as: Admin
19
- Account: Testing
20
-
21
- </body>
22
- </html>
23
- HTML
24
- end
25
- end
@@ -1,57 +0,0 @@
1
- describe Curlybars::Configuration do
2
- after do
3
- Curlybars.reset
4
- end
5
-
6
- describe "#presenters_namespace" do
7
- it "defaults to an empty string" do
8
- presenters_namespace = Curlybars::Configuration.new.presenters_namespace
9
-
10
- expect(presenters_namespace).to eq('')
11
- end
12
- end
13
-
14
- describe "#presenters_namespace=" do
15
- it "can set value" do
16
- config = Curlybars::Configuration.new
17
- config.presenters_namespace = 'foo'
18
- expect(config.presenters_namespace).to eq('foo')
19
- end
20
- end
21
-
22
- describe "#custom_processors" do
23
- it "can set value" do
24
- config = Curlybars::Configuration.new
25
- config.custom_processors = ['test']
26
- expect(config.custom_processors).to eq(['test'])
27
- end
28
- end
29
-
30
- describe ".configure" do
31
- before do
32
- Curlybars.configure do |config|
33
- config.presenters_namespace = 'bar'
34
- end
35
- end
36
-
37
- it "returns correct value for presenters_namespace" do
38
- presenters_namespace = Curlybars.configuration.presenters_namespace
39
-
40
- expect(presenters_namespace).to eq('bar')
41
- end
42
- end
43
-
44
- describe ".reset" do
45
- it "resets the configuration to default value" do
46
- Curlybars.configure do |config|
47
- config.presenters_namespace = 'foobarbaz'
48
- end
49
-
50
- Curlybars.reset
51
-
52
- presenters_namespace = Curlybars.configuration.presenters_namespace
53
-
54
- expect(presenters_namespace).to eq('')
55
- end
56
- end
57
- end
@@ -1,41 +0,0 @@
1
- describe Curlybars::Error::Base do
2
- let(:position) do
3
- OpenStruct.new(line_number: 1, line_offset: 0)
4
- end
5
-
6
- it "creates an exception with the given message" do
7
- message = "message"
8
-
9
- exception = Curlybars::Error::Base.new('id', message, position)
10
-
11
- expect(exception.message).to be message
12
- end
13
-
14
- it "doesn't change the backtrace for nil position.file_name" do
15
- exception = Curlybars::Error::Base.new('id', 'message', position)
16
-
17
- expect(exception.backtrace).to be nil
18
- end
19
-
20
- it "sets the right backtrace for non-nil position.file_name" do
21
- position.file_name = 'template.hbs'
22
-
23
- exception = Curlybars::Error::Base.new('id', 'message', position)
24
-
25
- expect(exception.backtrace).not_to be nil
26
- end
27
-
28
- it "sets the position as an instance varaible" do
29
- exception = Curlybars::Error::Base.new('id', 'message', position)
30
-
31
- expect(exception.position).to be position
32
- end
33
-
34
- it "sets the id as an instance varaible" do
35
- id = 'id'
36
-
37
- exception = Curlybars::Error::Base.new(id, 'message', position)
38
-
39
- expect(exception.id).to be id
40
- end
41
- end
@@ -1,19 +0,0 @@
1
- describe Curlybars::Error::Compile do
2
- let(:position) do
3
- OpenStruct.new(
4
- line_number: 2,
5
- line_offset: 3,
6
- stream_offset: 14,
7
- length: 3,
8
- file_name: 'template.hbs'
9
- )
10
- end
11
-
12
- it "prefixes the id with `compile.`" do
13
- id = 'id'
14
-
15
- exception = Curlybars::Error::Compile.new(id, 'message', position)
16
-
17
- expect(exception.id).to eq 'compile.%s' % id
18
- end
19
- end
@@ -1,25 +0,0 @@
1
- describe Curlybars::Error::Lex do
2
- let(:file_name) { 'template.hbs' }
3
-
4
- let(:source) { "first_line\n0123456789\nthird_line" }
5
-
6
- let(:exception) do
7
- OpenStruct.new(line_number: 2, line_offset: 2)
8
- end
9
-
10
- it "creates an exception with a meaningful message" do
11
- message = ".. 01 `2` 3456789 .. is not permitted symbol in this context"
12
-
13
- lex_exception = Curlybars::Error::Lex.new(source, file_name, exception)
14
-
15
- expect(lex_exception.message).to eq message
16
- end
17
-
18
- it "figures out a position from the exception" do
19
- backtrace = "%s:%d:%d" % [file_name, exception.line_number, exception.line_offset]
20
-
21
- lex_exception = Curlybars::Error::Lex.new(source, file_name, exception)
22
-
23
- expect(lex_exception.backtrace).to eq [backtrace]
24
- end
25
- end