halva 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -4
- data/lib/halva/resource.rb +13 -7
- data/lib/halva/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80195ba0344ba27a745702df037112a4a99dd5dcf8b5a6efead8239695e45d65
|
4
|
+
data.tar.gz: a9ecef55da2bc12c3c3c87f81e866b598bfcc3c721c39951f44a9a13e753245b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a23c6fb22884252b2184fd5b2caef1e9f59fbdbae3066230586b72782b018868a5d19c8de049b4a1751fed301f6350871f0765b6cbbae9b3e236b087a452daa
|
7
|
+
data.tar.gz: 8662e1c3887fe0c23061fb33a21a8e059e7e39764be9282ec219bc53064db34a565394cdd04d461a11fe3e4eba8f0442924989a788ced5ebdca07278884459a6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -33,10 +33,10 @@ require 'halva'
|
|
33
33
|
|
34
34
|
order = Order.find(1)
|
35
35
|
Halva::Resource.from_model(order)
|
36
|
-
.embed(Halva::Resource.from_model(order.customer)
|
36
|
+
.embed(Halva::Resource.from_model(order.customer), :customer)
|
37
37
|
.link(Halva::Link.new('/orders/1', :self))
|
38
38
|
.link(Halva::Link.new('/orders/1/customer', :customer))
|
39
|
-
.
|
39
|
+
.to_h
|
40
40
|
|
41
41
|
```
|
42
42
|
|
@@ -47,11 +47,14 @@ require 'halva'
|
|
47
47
|
|
48
48
|
orders = Order.find
|
49
49
|
Halva::Resource.from_empty_model
|
50
|
-
.embed(orders.map
|
50
|
+
.embed(orders.map do |order|
|
51
|
+
Halva::Resource.from_model(order)
|
52
|
+
.link(Halva::Link.new("/orders/#{order.id}", :self))
|
53
|
+
end)
|
51
54
|
.link(Halva::Link.new('/orders?page=3', :next))
|
52
55
|
.link(Halva::Link.new('/orders?page=2', :self))
|
53
56
|
.link(Halva::Link.new('/orders?page=1', :prev))
|
54
|
-
.
|
57
|
+
.to_h
|
55
58
|
|
56
59
|
```
|
57
60
|
|
data/lib/halva/resource.rb
CHANGED
@@ -16,7 +16,7 @@ module Halva
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def initialize(model)
|
19
|
-
@model = model
|
19
|
+
@model = model.freeze
|
20
20
|
@embedded = []
|
21
21
|
@links = []
|
22
22
|
end
|
@@ -31,22 +31,28 @@ module Halva
|
|
31
31
|
self
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def to_h
|
35
|
+
document = @model.dup
|
35
36
|
unless @embedded.empty?
|
36
|
-
|
37
|
+
document[EMBEDDED_KEY] = {} unless document.key?(EMBEDDED_KEY)
|
37
38
|
@embedded.each do |emb|
|
38
|
-
|
39
|
+
is_collection = emb[:resource].is_a?(Enumerable)
|
40
|
+
document[EMBEDDED_KEY][emb[:relation]] = if is_collection
|
41
|
+
emb[:resource].map(&:to_h)
|
42
|
+
else
|
43
|
+
emb[:resource].to_h
|
44
|
+
end
|
39
45
|
end
|
40
46
|
end
|
41
47
|
|
42
48
|
unless @links.empty?
|
43
|
-
|
49
|
+
document[LINKS_KEY] = {} unless document.key?(LINKS_KEY)
|
44
50
|
@links.each do |link|
|
45
|
-
|
51
|
+
document[LINKS_KEY][link.relation] = link.to_h
|
46
52
|
end
|
47
53
|
end
|
48
54
|
|
49
|
-
|
55
|
+
document
|
50
56
|
end
|
51
57
|
end
|
52
58
|
end
|
data/lib/halva/version.rb
CHANGED