rabl 0.6.12 → 0.6.13
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.
- data/CHANGELOG.md +5 -0
- data/README.md +7 -3
- data/lib/rabl/configuration.rb +2 -0
- data/lib/rabl/engine.rb +10 -5
- data/lib/rabl/helpers.rb +3 -3
- data/lib/rabl/version.rb +1 -1
- data/test/configuration_test.rb +1 -0
- data/test/engine_test.rb +27 -0
- metadata +2 -2
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -110,7 +110,8 @@ Rabl.configure do |config|
|
|
110
110
|
# config.include_msgpack_root = true
|
111
111
|
# config.include_bson_root = true
|
112
112
|
# config.include_plist_root = true
|
113
|
-
# config.include_xml_root = false
|
113
|
+
# config.include_xml_root = false
|
114
|
+
# config.include_child_root = true
|
114
115
|
# config.enable_json_callbacks = false
|
115
116
|
# config.xml_options = { :dasherize => true, :skip_types => false }
|
116
117
|
# config.view_paths = []
|
@@ -118,8 +119,11 @@ end
|
|
118
119
|
```
|
119
120
|
|
120
121
|
Each option specifies behavior related to RABL's output. If `include_json_root` is disabled that removes the
|
121
|
-
root node for each
|
122
|
-
output if the incoming request has a 'callback' parameter.
|
122
|
+
root node for each root object in the output, and `enable_json_callbacks` enables support for 'jsonp' style callback
|
123
|
+
output if the incoming request has a 'callback' parameter.
|
124
|
+
|
125
|
+
If `include_child_root` is set to false then child objects in the response will not include
|
126
|
+
a root node by default. This allows you to further fine-tune your desired response structure.
|
123
127
|
|
124
128
|
If `cache_sources` is set to `true`, template lookups will be cached for improved performance.
|
125
129
|
The cache can be reset manually by running `Rabl.reset_source_cache!` within your application.
|
data/lib/rabl/configuration.rb
CHANGED
@@ -23,6 +23,7 @@ module Rabl
|
|
23
23
|
# Rabl.host
|
24
24
|
class Configuration
|
25
25
|
attr_accessor :include_json_root
|
26
|
+
attr_accessor :include_child_root
|
26
27
|
attr_accessor :include_msgpack_root
|
27
28
|
attr_accessor :include_plist_root
|
28
29
|
attr_accessor :include_xml_root
|
@@ -43,6 +44,7 @@ module Rabl
|
|
43
44
|
|
44
45
|
def initialize
|
45
46
|
@include_json_root = true
|
47
|
+
@include_child_root = true
|
46
48
|
@include_msgpack_root = true
|
47
49
|
@include_plist_root = true
|
48
50
|
@include_xml_root = false
|
data/lib/rabl/engine.rb
CHANGED
@@ -54,7 +54,8 @@ module Rabl
|
|
54
54
|
# to_json(:root => true)
|
55
55
|
def to_json(options={})
|
56
56
|
include_root = Rabl.configuration.include_json_root
|
57
|
-
|
57
|
+
include_child_root = Rabl.configuration.include_child_root
|
58
|
+
options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
|
58
59
|
result = collection_root_name ? { collection_root_name => to_hash(options) } : to_hash(options)
|
59
60
|
format_json(result)
|
60
61
|
end
|
@@ -63,7 +64,8 @@ module Rabl
|
|
63
64
|
# to_msgpack(:root => true)
|
64
65
|
def to_msgpack(options={})
|
65
66
|
include_root = Rabl.configuration.include_msgpack_root
|
66
|
-
|
67
|
+
include_child_root = Rabl.configuration.include_child_root
|
68
|
+
options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
|
67
69
|
result = collection_root_name ? { collection_root_name => to_hash(options) } : to_hash(options)
|
68
70
|
Rabl.configuration.msgpack_engine.pack result
|
69
71
|
end
|
@@ -73,7 +75,8 @@ module Rabl
|
|
73
75
|
# to_plist(:root => true)
|
74
76
|
def to_plist(options={})
|
75
77
|
include_root = Rabl.configuration.include_plist_root
|
76
|
-
|
78
|
+
include_child_root = Rabl.configuration.include_child_root
|
79
|
+
options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
|
77
80
|
result = defined?(@_collection_name) ? { @_collection_name => to_hash(options) } : to_hash(options)
|
78
81
|
Rabl.configuration.plist_engine.dump(result)
|
79
82
|
end
|
@@ -82,7 +85,8 @@ module Rabl
|
|
82
85
|
# to_xml(:root => true)
|
83
86
|
def to_xml(options={})
|
84
87
|
include_root = Rabl.configuration.include_xml_root
|
85
|
-
|
88
|
+
include_child_root = include_root && Rabl.configuration.include_child_root
|
89
|
+
options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
|
86
90
|
xml_options = Rabl.configuration.default_xml_options.merge(:root => data_name(@_data))
|
87
91
|
to_hash(options).to_xml(xml_options)
|
88
92
|
end
|
@@ -91,7 +95,8 @@ module Rabl
|
|
91
95
|
# to_bson(:root => true)
|
92
96
|
def to_bson(options={})
|
93
97
|
include_root = Rabl.configuration.include_bson_root
|
94
|
-
|
98
|
+
include_child_root = Rabl.configuration.include_child_root
|
99
|
+
options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
|
95
100
|
result = if collection_root_name
|
96
101
|
{ collection_root_name => to_hash(options) }
|
97
102
|
elsif is_collection?(@_data) && @_data.is_a?(Array)
|
data/lib/rabl/helpers.rb
CHANGED
@@ -50,17 +50,17 @@ module Rabl
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
# Returns true if obj is not
|
53
|
+
# Returns true if obj is not a collection
|
54
54
|
# is_object?(@user) => true
|
55
55
|
# is_object?([]) => false
|
56
56
|
# is_object?({}) => false
|
57
57
|
def is_object?(obj)
|
58
|
-
obj && !data_object(obj).respond_to?(:map)
|
58
|
+
obj && (!data_object(obj).respond_to?(:map) || !data_object(obj).respond_to?(:each))
|
59
59
|
end
|
60
60
|
|
61
61
|
# Returns true if the obj is a collection of items
|
62
62
|
def is_collection?(obj)
|
63
|
-
obj && data_object(obj).respond_to?(:map)
|
63
|
+
obj && data_object(obj).respond_to?(:map) && data_object(obj).respond_to?(:each)
|
64
64
|
end
|
65
65
|
|
66
66
|
# Returns the scope wrapping this engine, used for retrieving data, invoking methods, etc
|
data/lib/rabl/version.rb
CHANGED
data/test/configuration_test.rb
CHANGED
@@ -8,6 +8,7 @@ context 'Rabl::Configuration' do
|
|
8
8
|
setup { Rabl.configuration }
|
9
9
|
|
10
10
|
asserts(:include_json_root).equals true
|
11
|
+
asserts(:include_child_root).equals true
|
11
12
|
asserts(:include_xml_root).equals false
|
12
13
|
asserts(:enable_json_callbacks).equals false
|
13
14
|
asserts(:view_paths).equals []
|
data/test/engine_test.rb
CHANGED
@@ -475,4 +475,31 @@ context "Rabl::Engine" do
|
|
475
475
|
Rabl.reset_configuration!
|
476
476
|
end
|
477
477
|
end
|
478
|
+
|
479
|
+
context "without child root" do
|
480
|
+
setup do
|
481
|
+
Rabl.configure do |config|
|
482
|
+
config.include_child_root = false
|
483
|
+
config.include_xml_root = false
|
484
|
+
config.enable_json_callbacks = false
|
485
|
+
end
|
486
|
+
end
|
487
|
+
|
488
|
+
context "#child" do
|
489
|
+
|
490
|
+
asserts "that it can create a child node without child root" do
|
491
|
+
template = rabl %{
|
492
|
+
child @users
|
493
|
+
}
|
494
|
+
scope = Object.new
|
495
|
+
scope.instance_variable_set :@users, [User.new, User.new]
|
496
|
+
template.render(scope)
|
497
|
+
end.equals "{\"users\":[{},{}]}"
|
498
|
+
|
499
|
+
end
|
500
|
+
|
501
|
+
teardown do
|
502
|
+
Rabl.reset_configuration!
|
503
|
+
end
|
504
|
+
end
|
478
505
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|