rabl 0.9.2 → 0.9.3.pre1
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 +8 -8
- data/CHANGELOG.md +7 -0
- data/lib/rabl/builder.rb +42 -33
- data/lib/rabl/engine.rb +5 -2
- data/lib/rabl/helpers.rb +1 -1
- data/lib/rabl/version.rb +1 -1
- data/test/engine_test.rb +19 -0
- data/test/helpers_test.rb +22 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDI2NGZlZGFhNDhmN2U5M2VhMDI1YjIyNzJiNDllMjIxNjk0YzA2Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzE0NTBkZjVhMTJiNDZjOGNiYzhhODFiY2NjNGZiYmYyOWZiYWI0Nw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTZiMDRhYTdjOWQ3YTYyZTc5YWEyYWM4MTBiZjAxYzMxMmY2ZjZhZmM4NWMw
|
10
|
+
MGU3YWIxZjA3YjgxN2EyMTk5M2M3M2Y4ZTM1Mjc0ZWNhYzI3OGZkNzIxZTk2
|
11
|
+
OTg0ODNiYWYzZDg2NTRiZTMyZjJlYzUxMjVlZjI4YzU2MmNjNGE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGQwMmY4NTJhMDQ5OTQ4Y2EyNmI4MzYyZmY2N2U3NGM1Y2MyNjg2NmZkMzcx
|
14
|
+
OGY5MGM0YTJjOThlMjMyNjk1ZWI3ZDhiZjc0NzE0NWM4NDlhZmY2MGM1ZGVj
|
15
|
+
MDlkZjA3ZjNhZDU3ZDUyOGJkNzFhYjYxMmIyNzc3ODU0Yzk1ZTQ=
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.9.3.pre1 (December 5th)
|
4
|
+
|
5
|
+
* FIX Send engine options through from render call (Thanks @bhicks)
|
6
|
+
* FIX Cleanup compile_hash method through refactoring complexity (Thanks @bhicks)
|
7
|
+
* FIX #503 handling render case with no lookup_context in Rails 4
|
8
|
+
* FIX #502 fix regression in render when object is nil with explicit root name
|
9
|
+
|
3
10
|
## 0.9.2 (November 21 2013)
|
4
11
|
|
5
12
|
* FIX #508 by avoiding new proc syntax breaking 1.8.7
|
data/lib/rabl/builder.rb
CHANGED
@@ -2,6 +2,13 @@ module Rabl
|
|
2
2
|
class Builder
|
3
3
|
include Rabl::Partials
|
4
4
|
|
5
|
+
SETTING_TYPES = {
|
6
|
+
:extends => :file,
|
7
|
+
:node => :name,
|
8
|
+
:child => :data,
|
9
|
+
:glue => :data
|
10
|
+
} unless const_defined? :SETTING_TYPES
|
11
|
+
|
5
12
|
# Constructs a new rabl hash based on given object and options
|
6
13
|
# options = { :format => "json", :root => true, :child_root => true,
|
7
14
|
# :attributes, :node, :child, :glue, :extends }
|
@@ -29,44 +36,46 @@ module Rabl
|
|
29
36
|
# compile_hash(:root_name => "user")
|
30
37
|
def compile_hash(options={})
|
31
38
|
@_result = {}
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
if
|
55
|
-
@_root_name =
|
39
|
+
update_settings(:extends)
|
40
|
+
update_attributes
|
41
|
+
update_settings(:node)
|
42
|
+
update_settings(:child)
|
43
|
+
update_settings(:glue)
|
44
|
+
|
45
|
+
wrap_result(options[:root_name])
|
46
|
+
|
47
|
+
replace_nil_values if Rabl.configuration.replace_nil_values_with_empty_strings
|
48
|
+
|
49
|
+
# Return Results
|
50
|
+
@_root_name ? { @_root_name => @_result } : @_result
|
51
|
+
end
|
52
|
+
|
53
|
+
def replace_nil_values
|
54
|
+
@_result = @_result.inject({}) do |hash, (k, v)|
|
55
|
+
hash[k] = v.nil? ? '' : v
|
56
|
+
hash
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def wrap_result(root_name)
|
61
|
+
if root_name.present?
|
62
|
+
@_root_name = root_name
|
56
63
|
else # no root
|
57
64
|
@_root_name = nil
|
58
65
|
end
|
66
|
+
end
|
59
67
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
end
|
68
|
+
def update_settings(type)
|
69
|
+
settings_type = SETTING_TYPES[type]
|
70
|
+
@options[type].each do |settings|
|
71
|
+
send(type, settings[settings_type], settings[:options], &settings[:block])
|
72
|
+
end if @options.has_key?(type)
|
73
|
+
end
|
67
74
|
|
68
|
-
|
69
|
-
@
|
75
|
+
def update_attributes
|
76
|
+
@options[:attributes].each_pair do |attribute, settings|
|
77
|
+
attribute(attribute, settings)
|
78
|
+
end if @options.has_key?(:attributes)
|
70
79
|
end
|
71
80
|
|
72
81
|
# Indicates an attribute or method should be included in the json output
|
data/lib/rabl/engine.rb
CHANGED
@@ -36,7 +36,7 @@ module Rabl
|
|
36
36
|
instance_eval(@_source) if @_source.present?
|
37
37
|
end
|
38
38
|
instance_exec(@_data_object, &block) if block_given?
|
39
|
-
cache_results { self.send("to_" + @_options[:format].to_s) }
|
39
|
+
cache_results { self.send("to_" + @_options[:format].to_s, @_options) }
|
40
40
|
end
|
41
41
|
|
42
42
|
# Returns a hash representation of the data object
|
@@ -293,7 +293,10 @@ module Rabl
|
|
293
293
|
@_options[:format],
|
294
294
|
Digestor.digest(template, :rabl, lookup_context)
|
295
295
|
]
|
296
|
-
|
296
|
+
rescue NameError => e # Handle case where lookup_context doesn't exist
|
297
|
+
raise e unless e.message =~ /lookup_context/
|
298
|
+
cache_key_simple(cache_key)
|
299
|
+
end # cache_key_with_digest
|
297
300
|
|
298
301
|
def cache_key_simple(key)
|
299
302
|
Array(key) + [@_options[:root_name], @_options[:format]]
|
data/lib/rabl/helpers.rb
CHANGED
@@ -49,7 +49,7 @@ module Rabl
|
|
49
49
|
def determine_object_root(data_token, data_name=nil, include_root=true)
|
50
50
|
return if object_root_name == false
|
51
51
|
root_name = data_name.to_s if include_root
|
52
|
-
if is_object?(data_token)
|
52
|
+
if is_object?(data_token) || data_token.nil?
|
53
53
|
root_name
|
54
54
|
elsif is_collection?(data_token)
|
55
55
|
object_root_name || (root_name.singularize if root_name)
|
data/lib/rabl/version.rb
CHANGED
data/test/engine_test.rb
CHANGED
@@ -99,6 +99,15 @@ context "Rabl::Engine" do
|
|
99
99
|
template.render(scope)
|
100
100
|
end.equals "{\"person\":{}}"
|
101
101
|
|
102
|
+
asserts "that it can set root node with a nil object and explicit name" do
|
103
|
+
template = rabl %q{
|
104
|
+
object @user => :person
|
105
|
+
}
|
106
|
+
scope = Object.new
|
107
|
+
scope.instance_variable_set :@user, nil
|
108
|
+
template.render(scope)
|
109
|
+
end.equals "{\"person\":{}}"
|
110
|
+
|
102
111
|
asserts "that it can use non-ORM objects" do
|
103
112
|
template = rabl %q{
|
104
113
|
object @other
|
@@ -433,6 +442,16 @@ context "Rabl::Engine" do
|
|
433
442
|
scope.instance_variable_set :@user, User.new
|
434
443
|
template.render(scope)
|
435
444
|
end.equals "{}"
|
445
|
+
|
446
|
+
asserts "that it can set root node with a nil object and explicit name" do
|
447
|
+
template = rabl %q{
|
448
|
+
object @user => :person
|
449
|
+
attributes :name
|
450
|
+
}
|
451
|
+
scope = Object.new
|
452
|
+
scope.instance_variable_set :@user, nil
|
453
|
+
template.render(scope)
|
454
|
+
end.equals "{}"
|
436
455
|
end
|
437
456
|
|
438
457
|
context "#collection" do
|
data/test/helpers_test.rb
CHANGED
@@ -12,6 +12,28 @@ context "Rabl::Helpers" do
|
|
12
12
|
@user = User.new
|
13
13
|
end
|
14
14
|
|
15
|
+
# determine_object_root(@user, :user, true) => "user"
|
16
|
+
# determine_object_root(@user, :person) => "person"
|
17
|
+
# determine_object_root([@user, @user]) => "user"
|
18
|
+
# def determine_object_root(data_token, data_name=nil, include_root=true)
|
19
|
+
context "for determine_object_root method" do
|
20
|
+
asserts "returns nil if include_root is false" do
|
21
|
+
@helper_class.determine_object_root(@user, :user, false)
|
22
|
+
end.equals(nil)
|
23
|
+
|
24
|
+
asserts "returns user root name if include_root is true" do
|
25
|
+
@helper_class.determine_object_root(@user, :user, true)
|
26
|
+
end.equals("user")
|
27
|
+
|
28
|
+
asserts "returns explicit alias if specified" do
|
29
|
+
@helper_class.determine_object_root(@user, :person)
|
30
|
+
end.equals("person")
|
31
|
+
|
32
|
+
asserts "returns explicit alias if object is nil" do
|
33
|
+
@helper_class.determine_object_root(nil, :person)
|
34
|
+
end.equals("person")
|
35
|
+
end
|
36
|
+
|
15
37
|
context "for data_name method" do
|
16
38
|
asserts "returns nil if no data" do
|
17
39
|
@helper_class.data_name(nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Esquenazi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -461,9 +461,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
461
461
|
version: '0'
|
462
462
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
463
463
|
requirements:
|
464
|
-
- - ! '
|
464
|
+
- - ! '>'
|
465
465
|
- !ruby/object:Gem::Version
|
466
|
-
version:
|
466
|
+
version: 1.3.1
|
467
467
|
requirements: []
|
468
468
|
rubyforge_project: rabl
|
469
469
|
rubygems_version: 2.0.7
|