rabl-rails 0.3.4 → 0.4.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.
Files changed (54) hide show
  1. data/.travis.yml +2 -2
  2. data/CHANGELOG.md +10 -0
  3. data/Gemfile +5 -9
  4. data/README.md +5 -3
  5. data/Rakefile +2 -2
  6. data/lib/rabl-rails.rb +21 -74
  7. data/lib/rabl-rails/compiler.rb +28 -38
  8. data/lib/rabl-rails/configuration.rb +48 -0
  9. data/lib/rabl-rails/handler.rb +3 -1
  10. data/lib/rabl-rails/helpers.rb +7 -0
  11. data/lib/rabl-rails/library.rb +43 -16
  12. data/lib/rabl-rails/nodes.rb +6 -0
  13. data/lib/rabl-rails/nodes/attribute.rb +17 -0
  14. data/lib/rabl-rails/nodes/child.rb +12 -0
  15. data/lib/rabl-rails/nodes/code.rb +19 -0
  16. data/lib/rabl-rails/nodes/condition.rb +14 -0
  17. data/lib/rabl-rails/nodes/glue.rb +25 -0
  18. data/lib/rabl-rails/nodes/node.rb +9 -0
  19. data/lib/rabl-rails/railtie.rb +0 -2
  20. data/lib/rabl-rails/renderer.rb +15 -13
  21. data/lib/rabl-rails/renderers/hash.rb +85 -0
  22. data/lib/rabl-rails/renderers/json.rb +9 -5
  23. data/lib/rabl-rails/renderers/plist.rb +6 -4
  24. data/lib/rabl-rails/renderers/xml.rb +6 -3
  25. data/lib/rabl-rails/responder.rb +1 -1
  26. data/lib/rabl-rails/template.rb +11 -5
  27. data/lib/rabl-rails/version.rb +1 -1
  28. data/lib/rabl-rails/visitors.rb +2 -0
  29. data/lib/rabl-rails/visitors/to_hash.rb +131 -0
  30. data/lib/rabl-rails/visitors/visitor.rb +17 -0
  31. data/rabl-rails.gemspec +3 -5
  32. data/test/helper.rb +75 -0
  33. data/test/renderers/test_hash_renderer.rb +90 -0
  34. data/test/renderers/test_json_renderer.rb +46 -0
  35. data/test/renderers/test_plist_renderer.rb +42 -0
  36. data/test/renderers/test_xml_renderer.rb +37 -0
  37. data/test/test_compiler.rb +283 -0
  38. data/test/test_configuration.rb +31 -0
  39. data/test/test_hash_visitor.rb +224 -0
  40. data/test/test_library.rb +85 -0
  41. data/test/{render_test.rb → test_render.rb} +18 -24
  42. metadata +99 -108
  43. data/lib/rabl-rails/condition.rb +0 -10
  44. data/lib/rabl-rails/renderers/base.rb +0 -171
  45. data/test/base_renderer_test.rb +0 -67
  46. data/test/cache_templates_test.rb +0 -35
  47. data/test/compiler_test.rb +0 -233
  48. data/test/deep_nesting_test.rb +0 -56
  49. data/test/keyword_test.rb +0 -47
  50. data/test/non_restful_response_test.rb +0 -35
  51. data/test/renderers/json_renderer_test.rb +0 -189
  52. data/test/renderers/plist_renderer_test.rb +0 -135
  53. data/test/renderers/xml_renderer_test.rb +0 -137
  54. data/test/test_helper.rb +0 -68
@@ -0,0 +1,31 @@
1
+ require 'helper'
2
+
3
+ class TestConfiguration < MINITEST_TEST_CLASS
4
+ describe 'Configuration' do
5
+ it 'has a zero score by default' do
6
+ config = RablRails::Configuration.new
7
+ assert_equal 0, config.result_flags
8
+ end
9
+
10
+ it 'sets a bit per option' do
11
+ config = RablRails::Configuration.new
12
+ config.replace_nil_values_with_empty_strings = true
13
+ assert_equal 1, config.result_flags
14
+
15
+ config = RablRails::Configuration.new
16
+ config.replace_empty_string_values_with_nil = true
17
+ assert_equal 2, config.result_flags
18
+
19
+ config = RablRails::Configuration.new
20
+ config.exclude_nil_values = true
21
+ assert_equal 4, config.result_flags
22
+ end
23
+
24
+ it 'allows mutiple bits to be set at the same time' do
25
+ config = RablRails::Configuration.new
26
+ config.replace_nil_values_with_empty_strings = true
27
+ config.replace_empty_string_values_with_nil = true
28
+ assert_equal 3, config.result_flags
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,224 @@
1
+ require 'helper'
2
+
3
+ class TestHashVisitor < MINITEST_TEST_CLASS
4
+ describe 'hash visitor' do
5
+ def visitor_result
6
+ visitor = Visitors::ToHash.new(@context)
7
+ visitor.reset_for @resource
8
+ visitor.visit @nodes
9
+ visitor.result
10
+ end
11
+
12
+ before do
13
+ @context = Context.new
14
+ @resource = User.new(1, 'Marty')
15
+ @nodes = []
16
+ end
17
+
18
+ it 'renders empty nodes list' do
19
+ assert_equal({}, visitor_result)
20
+ end
21
+
22
+ it 'renders attributes node' do
23
+ @nodes << RablRails::Nodes::Attribute.new(id: :id)
24
+ assert_equal({ id: 1 }, visitor_result)
25
+ end
26
+
27
+ it 'renders array of nodes' do
28
+ @nodes = [
29
+ RablRails::Nodes::Attribute.new(id: :id),
30
+ RablRails::Nodes::Attribute.new(name: :name)
31
+ ]
32
+ assert_equal({ id: 1, name: 'Marty' }, visitor_result)
33
+ end
34
+
35
+ describe 'with a child node' do
36
+ Address = Struct.new(:city)
37
+
38
+ before do
39
+ @template = RablRails::CompiledTemplate.new
40
+ @template.add_node(RablRails::Nodes::Attribute.new(city: :city))
41
+ @nodes << RablRails::Nodes::Child.new(:address, @template)
42
+ @address = Address.new('Paris')
43
+ end
44
+
45
+ it 'renders with resource association as data source' do
46
+ @template.data = :address
47
+ def @resource.address; end
48
+ @resource.stub :address, @address do
49
+ assert_equal({ address: { city: 'Paris' } }, visitor_result)
50
+ end
51
+ end
52
+
53
+ it 'renders with arbitrary data source' do
54
+ @template.data = :@address
55
+ @context.assigns['address'] = @address
56
+ assert_equal({ address: { city: 'Paris' } }, visitor_result)
57
+ end
58
+
59
+ it 'renders with local method as data source' do
60
+ @template.data = :address
61
+ def @context.address; end
62
+ @context.stub :address, @address do
63
+ assert_equal({ address: { city: 'Paris' } }, visitor_result)
64
+ end
65
+ end
66
+
67
+ it 'renders with a collection as data source' do
68
+ @template.data = :address
69
+ def @context.address; end
70
+ @context.stub :address, [@address, @address] do
71
+ assert_equal({ address: [
72
+ { city: 'Paris' },
73
+ { city: 'Paris' }
74
+ ]}, visitor_result)
75
+ end
76
+ end
77
+
78
+ it 'renders if the source is nil' do
79
+ @template.data = :address
80
+ def @resource.address; end
81
+ @resource.stub :address, nil do
82
+ assert_equal({ address: nil }, visitor_result)
83
+ end
84
+ end
85
+ end
86
+
87
+ it 'renders glue nodes' do
88
+ template = RablRails::CompiledTemplate.new
89
+ template.add_node(RablRails::Nodes::Attribute.new(name: :name))
90
+ template.data = :@user
91
+
92
+ @nodes << RablRails::Nodes::Glue.new(template)
93
+ @context.assigns['user'] = @resource
94
+ assert_equal({ name: 'Marty'}, visitor_result)
95
+ end
96
+
97
+ describe 'with a code node' do
98
+ before do
99
+ @proc = ->(object) { object.name }
100
+ end
101
+
102
+ it 'renders the evaluated proc' do
103
+ @nodes << RablRails::Nodes::Code.new(:name, @proc)
104
+ assert_equal({ name: 'Marty'}, visitor_result)
105
+ end
106
+
107
+ it 'renders with a true condition' do
108
+ @nodes << RablRails::Nodes::Code.new(:name, @proc, ->(o) { true })
109
+ assert_equal({ name: 'Marty'}, visitor_result)
110
+ end
111
+
112
+ it 'renders nothing with a false condition' do
113
+ @nodes << RablRails::Nodes::Code.new(:name, @proc, ->(o) { false })
114
+ assert_equal({}, visitor_result)
115
+ end
116
+
117
+ it 'renders method called from context' do
118
+ @proc = ->(object) { context_method }
119
+ def @context.context_method; end
120
+
121
+ @nodes = [RablRails::Nodes::Code.new(:name, @proc)]
122
+ @context.stub :context_method, 'Biff' do
123
+ assert_equal({ name: 'Biff'}, visitor_result)
124
+ end
125
+ end
126
+ end
127
+
128
+ describe 'with a condition node' do
129
+ before do
130
+ @ns = [RablRails::Nodes::Attribute.new(name: :name)]
131
+ end
132
+
133
+ it 'renders transparently if the condition is met' do
134
+ @nodes << RablRails::Nodes::Condition.new(->(o) { true }, @ns)
135
+ assert_equal({ name: 'Marty' }, visitor_result)
136
+ end
137
+
138
+ it 'renders nothing if the condition is not met' do
139
+ @nodes << RablRails::Nodes::Condition.new(->(o) { false }, @ns)
140
+ assert_equal({}, visitor_result)
141
+ end
142
+ end
143
+
144
+ it 'renders a merge node' do
145
+ proc = ->(c) { { custom: c.name } }
146
+ @nodes << RablRails::Nodes::Code.new(nil, proc)
147
+ assert_equal({ custom: 'Marty' }, visitor_result)
148
+ end
149
+
150
+ it 'raises an exception when trying to merge a non hash object' do
151
+ proc = ->(c) { c.name }
152
+ @nodes << RablRails::Nodes::Code.new(nil, proc)
153
+ assert_raises(RablRails::Renderer::PartialError) { visitor_result }
154
+ end
155
+
156
+ it 'renders partial defined in code node' do
157
+ template = RablRails::CompiledTemplate.new
158
+ template.add_node(RablRails::Nodes::Attribute.new(name: :name))
159
+ proc = ->(u) { partial('users/base', object: u) }
160
+
161
+ library = MiniTest::Mock.new
162
+ library.expect :compile_template_from_path, template, ['users/base', @context]
163
+
164
+ @nodes << RablRails::Nodes::Code.new(:user, proc)
165
+ RablRails::Library.stub :instance, library do
166
+ assert_equal({ user: { name: 'Marty' } }, visitor_result)
167
+ end
168
+
169
+ library.verify
170
+ end
171
+
172
+ it 'renders partial with empty target' do
173
+ proc = ->(u) { partial('users/base', object: []) }
174
+ @nodes << RablRails::Nodes::Code.new(:users, proc)
175
+ assert_equal({ users: [] }, visitor_result)
176
+ end
177
+
178
+ it 'raises an exception when calling a partial without a target' do
179
+ proc = ->(u) { partial('users/base') }
180
+ @nodes << RablRails::Nodes::Code.new(:user, proc)
181
+ assert_raises(RablRails::Renderer::PartialError) { visitor_result }
182
+ end
183
+
184
+ describe 'when hash options are set' do
185
+ before do
186
+ RablRails.reset_configuration
187
+ @nodes << RablRails::Nodes::Attribute.new(name: :name)
188
+ end
189
+
190
+ after { RablRails.reset_configuration }
191
+
192
+ it 'replaces nil values by strings' do
193
+ RablRails.configuration.replace_nil_values_with_empty_strings = true
194
+ @resource = User.new(1, nil)
195
+
196
+ assert_equal({ name: '' }, visitor_result)
197
+ end
198
+
199
+ it 'replaces empty string by nil' do
200
+ RablRails.configuration.replace_empty_string_values_with_nil = true
201
+ @resource = User.new(1, '')
202
+
203
+ assert_equal({ name: nil }, visitor_result)
204
+ end
205
+
206
+ it 'excludes nil values' do
207
+ RablRails.configuration.exclude_nil_values = true
208
+ @resource = User.new(1, nil)
209
+ @nodes << RablRails::Nodes::Attribute.new(id: :id)
210
+
211
+ assert_equal({ id: 1 }, visitor_result)
212
+ end
213
+
214
+ it 'excludes nil values and empty strings' do
215
+ RablRails.configuration.replace_empty_string_values_with_nil = true
216
+ RablRails.configuration.exclude_nil_values = true
217
+ @resource = User.new(nil, '')
218
+ @nodes << RablRails::Nodes::Attribute.new(id: :id)
219
+
220
+ assert_equal({}, visitor_result)
221
+ end
222
+ end
223
+ end
224
+ end
@@ -0,0 +1,85 @@
1
+ require 'helper'
2
+
3
+ class TestLibrary < MINITEST_TEST_CLASS
4
+ RablRails::Library.send(:attr_reader, :cached_templates)
5
+
6
+ describe 'library' do
7
+ before do
8
+ @library = RablRails::Library.instance
9
+ @library.reset_cache!
10
+ @context = Context.new
11
+ @template = RablRails::CompiledTemplate.new
12
+ end
13
+
14
+ describe '#get_rendered_template' do
15
+ it 'compiles and renders template' do
16
+ renderer = MiniTest::Mock.new
17
+ renderer.expect :render, '{}', [@template, @context, nil]
18
+
19
+ result = @library.stub :compile_template_from_source, @template do
20
+ RablRails::Renderers.stub :const_get, renderer do
21
+ @library.get_rendered_template '', @context
22
+ end
23
+ end
24
+
25
+ assert_equal '{}', result
26
+ assert renderer.verify
27
+ end
28
+
29
+ it 'accepts format as string' do
30
+ result = @library.stub :compile_template_from_source, @template do
31
+ @context.stub :params, { format: 'xml' } do
32
+ RablRails::Renderers::XML.stub :render, '<xml>' do
33
+ @library.get_rendered_template '', @context
34
+ end
35
+ end
36
+ end
37
+
38
+ assert_equal '<xml>', result
39
+ end
40
+
41
+ it 'accepts format as symbol' do
42
+ result = @library.stub :compile_template_from_source, @template do
43
+ @context.stub :params, { format: :plist } do
44
+ RablRails::Renderers::PLIST.stub :render, '<plist>' do
45
+ @library.get_rendered_template '', @context
46
+ end
47
+ end
48
+ end
49
+
50
+ assert_equal '<plist>', result
51
+ end
52
+ end
53
+
54
+ describe '#compile_template_from_source' do
55
+ it 'compiles a template' do
56
+ compiler = MiniTest::Mock.new
57
+ compiler.expect :compile_source, @template, ['attribute :id']
58
+
59
+ result = RablRails::Compiler.stub :new, compiler do
60
+ @library.compile_template_from_source('attribute :id', @context)
61
+ end
62
+
63
+ assert_equal @template, result
64
+ end
65
+
66
+ it 'caches compiled template if option is set' do
67
+ @context.virtual_path = 'users/base'
68
+ template = with_configuration :cache_templates, true do
69
+ @library.compile_template_from_source("attribute :id", @context)
70
+ end
71
+
72
+ assert_equal(template, @library.cached_templates['users/base'])
73
+ end
74
+
75
+ it 'compiles source without caching it if options is not set' do
76
+ @context.virtual_path = 'users/base'
77
+ template = with_configuration :cache_templates, false do
78
+ @library.compile_template_from_source("attribute :id", @context)
79
+ end
80
+
81
+ assert_empty @library.cached_templates
82
+ end
83
+ end
84
+ end
85
+ end
@@ -1,15 +1,16 @@
1
- require 'test_helper'
1
+ require 'helper'
2
2
  require 'pathname'
3
3
  require 'tmpdir'
4
4
 
5
- class RenderTest < ActiveSupport::TestCase
5
+ class TestRender < MINITEST_TEST_CLASS
6
+ @@tmp_path = Pathname.new(Dir.mktmpdir)
6
7
 
7
- setup do
8
+ def setup
8
9
  @user = User.new(1, 'Marty')
9
- @tmp_path = Pathname.new(Dir.mktmpdir)
10
+ @tmp_path = @@tmp_path
10
11
  end
11
12
 
12
- test "allow object to be passed as an option" do
13
+ def test_object_as_option
13
14
  File.open(@tmp_path + "nil.json.rabl", "w") do |f|
14
15
  f.puts %q{
15
16
  object :@user
@@ -19,7 +20,7 @@ class RenderTest < ActiveSupport::TestCase
19
20
  assert_equal %q({"user":{"name":"Marty"}}), RablRails.render(nil, 'nil', locals: { object: @user }, view_path: @tmp_path)
20
21
  end
21
22
 
22
- test "load source from file" do
23
+ def test_load_source_from_file
23
24
  File.open(@tmp_path + "show.json.rabl", "w") do |f|
24
25
  f.puts %q{
25
26
  object :@user
@@ -29,11 +30,11 @@ class RenderTest < ActiveSupport::TestCase
29
30
  assert_equal %q({"user":{"id":1,"name":"Marty"}}), RablRails.render(@user, 'show', view_path: @tmp_path)
30
31
  end
31
32
 
32
- test "raise error if template is not found" do
33
+ def test_template_not_found
33
34
  assert_raises(RablRails::Renderer::TemplateNotFound) { RablRails.render(@user, 'not_found') }
34
35
  end
35
36
 
36
- test "instance variables can be passed via options[:locals]" do
37
+ def test_with_locals_options
37
38
  File.open(@tmp_path + "instance.json.rabl", "w") do |f|
38
39
  f.puts %q{
39
40
  object false
@@ -43,7 +44,7 @@ class RenderTest < ActiveSupport::TestCase
43
44
  assert_equal %q({"username":"Marty"}), RablRails.render(nil, 'instance', view_path: @tmp_path, locals: { user: @user })
44
45
  end
45
46
 
46
- test "handle path for extends" do
47
+ def test_extend_with_view_path
47
48
  File.open(@tmp_path + "extend.json.rabl", "w") do |f|
48
49
  f.puts %q{
49
50
  object :@user
@@ -60,7 +61,7 @@ class RenderTest < ActiveSupport::TestCase
60
61
  assert_equal %q({"user":{"extended_name":"Marty"}}), RablRails.render(@user, 'extend', view_path: @tmp_path)
61
62
  end
62
63
 
63
- test "format can be passed as symbol or a string" do
64
+ def test_format_as_symbol_or_string
64
65
  File.open(@tmp_path + "show.json.rabl", "w") do |f|
65
66
  f.puts %q{
66
67
  object :@user
@@ -73,20 +74,13 @@ class RenderTest < ActiveSupport::TestCase
73
74
  assert_equal %q({"user":{"id":1,"name":"Marty"}}), RablRails.render(@user, 'show', view_path: @tmp_path, format: 'JSON')
74
75
  end
75
76
 
76
- test "format can be omitted if option is set" do
77
- begin
78
- RablRails.allow_empty_format_in_template = true
79
- File.open(@tmp_path + "show.rabl", "w") do |f|
80
- f.puts %q{
81
- object :@user
82
- attributes :id, :name
83
- }
84
- end
85
-
86
- assert_equal %q({"user":{"id":1,"name":"Marty"}}), RablRails.render(@user, 'show', view_path: @tmp_path)
87
- ensure
88
- RablRails.allow_empty_format_in_template = false
77
+ def test_format_omitted
78
+ File.open(@tmp_path + "show.rabl", "w") do |f|
79
+ f.puts %q{
80
+ object :@user
81
+ attributes :id, :name
82
+ }
89
83
  end
84
+ assert_equal %q({"user":{"id":1,"name":"Marty"}}), RablRails.render(@user, 'show', view_path: @tmp_path)
90
85
  end
91
-
92
86
  end
metadata CHANGED
@@ -1,83 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rabl-rails
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 4
9
- version: 0.3.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Christopher Cocchi-Perrier
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2014-04-02 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2014-10-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activesupport
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 3
29
- - 1
30
- version: "3.1"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3.1'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: railties
35
23
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 3
42
- - 1
43
- version: "3.1"
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: railties
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '3.1'
44
38
  type: :runtime
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: actionpack
48
39
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- segments:
54
- - 3
55
- - 1
56
- version: "3.1"
57
- type: :development
58
- version_requirements: *id003
59
- - !ruby/object:Gem::Dependency
60
- name: rspec-mocks
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '3.1'
46
+ - !ruby/object:Gem::Dependency
47
+ name: thread_safe
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.3.1
54
+ type: :runtime
61
55
  prerelease: false
62
- requirement: &id004 !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
- version: "0"
69
- type: :development
70
- version_requirements: *id004
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.1
71
62
  description: Fast Rails 3+ templating system with JSON, XML and PList support
72
- email:
63
+ email:
73
64
  - cocchi.c@gmail.com
74
65
  executables: []
75
-
76
66
  extensions: []
77
-
78
67
  extra_rdoc_files: []
79
-
80
- files:
68
+ files:
81
69
  - .gitignore
82
70
  - .travis.yml
83
71
  - CHANGELOG.md
@@ -87,70 +75,73 @@ files:
87
75
  - Rakefile
88
76
  - lib/rabl-rails.rb
89
77
  - lib/rabl-rails/compiler.rb
90
- - lib/rabl-rails/condition.rb
78
+ - lib/rabl-rails/configuration.rb
91
79
  - lib/rabl-rails/handler.rb
80
+ - lib/rabl-rails/helpers.rb
92
81
  - lib/rabl-rails/library.rb
82
+ - lib/rabl-rails/nodes.rb
83
+ - lib/rabl-rails/nodes/attribute.rb
84
+ - lib/rabl-rails/nodes/child.rb
85
+ - lib/rabl-rails/nodes/code.rb
86
+ - lib/rabl-rails/nodes/condition.rb
87
+ - lib/rabl-rails/nodes/glue.rb
88
+ - lib/rabl-rails/nodes/node.rb
93
89
  - lib/rabl-rails/railtie.rb
94
90
  - lib/rabl-rails/renderer.rb
95
- - lib/rabl-rails/renderers/base.rb
91
+ - lib/rabl-rails/renderers/hash.rb
96
92
  - lib/rabl-rails/renderers/json.rb
97
93
  - lib/rabl-rails/renderers/plist.rb
98
94
  - lib/rabl-rails/renderers/xml.rb
99
95
  - lib/rabl-rails/responder.rb
100
96
  - lib/rabl-rails/template.rb
101
97
  - lib/rabl-rails/version.rb
98
+ - lib/rabl-rails/visitors.rb
99
+ - lib/rabl-rails/visitors/to_hash.rb
100
+ - lib/rabl-rails/visitors/visitor.rb
102
101
  - lib/tasks/rabl-rails.rake
103
102
  - rabl-rails.gemspec
104
- - test/base_renderer_test.rb
105
- - test/cache_templates_test.rb
106
- - test/compiler_test.rb
107
- - test/deep_nesting_test.rb
108
- - test/keyword_test.rb
109
- - test/non_restful_response_test.rb
110
- - test/render_test.rb
111
- - test/renderers/json_renderer_test.rb
112
- - test/renderers/plist_renderer_test.rb
113
- - test/renderers/xml_renderer_test.rb
114
- - test/test_helper.rb
115
- has_rdoc: true
103
+ - test/helper.rb
104
+ - test/renderers/test_hash_renderer.rb
105
+ - test/renderers/test_json_renderer.rb
106
+ - test/renderers/test_plist_renderer.rb
107
+ - test/renderers/test_xml_renderer.rb
108
+ - test/test_compiler.rb
109
+ - test/test_configuration.rb
110
+ - test/test_hash_visitor.rb
111
+ - test/test_library.rb
112
+ - test/test_render.rb
116
113
  homepage: https://github.com/ccocchi/rabl-rails
117
114
  licenses: []
118
-
119
115
  post_install_message:
120
116
  rdoc_options: []
121
-
122
- require_paths:
117
+ require_paths:
123
118
  - lib
124
- required_ruby_version: !ruby/object:Gem::Requirement
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- segments:
129
- - 0
130
- version: "0"
131
- required_rubygems_version: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- segments:
136
- - 0
137
- version: "0"
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
138
131
  requirements: []
139
-
140
132
  rubyforge_project:
141
- rubygems_version: 1.3.6
133
+ rubygems_version: 1.8.23
142
134
  signing_key:
143
135
  specification_version: 3
144
136
  summary: Fast Rails 3+ templating system with JSON, XML and PList support
145
- test_files:
146
- - test/base_renderer_test.rb
147
- - test/cache_templates_test.rb
148
- - test/compiler_test.rb
149
- - test/deep_nesting_test.rb
150
- - test/keyword_test.rb
151
- - test/non_restful_response_test.rb
152
- - test/render_test.rb
153
- - test/renderers/json_renderer_test.rb
154
- - test/renderers/plist_renderer_test.rb
155
- - test/renderers/xml_renderer_test.rb
156
- - test/test_helper.rb
137
+ test_files:
138
+ - test/helper.rb
139
+ - test/renderers/test_hash_renderer.rb
140
+ - test/renderers/test_json_renderer.rb
141
+ - test/renderers/test_plist_renderer.rb
142
+ - test/renderers/test_xml_renderer.rb
143
+ - test/test_compiler.rb
144
+ - test/test_configuration.rb
145
+ - test/test_hash_visitor.rb
146
+ - test/test_library.rb
147
+ - test/test_render.rb