hal-interpretation 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/lib/hal_interpretation/dsl.rb +9 -1
- data/lib/hal_interpretation/version.rb +1 -1
- data/spec/hal_interpretation_spec.rb +12 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee39c1fec5913e271d4fab7531f9ff40b6623dc9
|
4
|
+
data.tar.gz: 5c21413e4a4be9e30d16eb3cc8e6a00644154731
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cbe1d536193dd6f563c43823b7828ebe5975ba039201b5189960b033f12dfb72c04b767a95e8765c21736e661aee117b64fb95f769afc4f38fa7f626255ee01
|
7
|
+
data.tar.gz: eb3d579ce01aea81b727c59df2457c509765759ef0bc884492afe3adf57d746de99a43a639c2c44f0b95c6fcf5c998020189f8e0cb62552065c5ab4754ac5f8f
|
data/.travis.yml
CHANGED
@@ -106,8 +106,16 @@ module HalInterpretation
|
|
106
106
|
rel = opts.fetch(:rel) { attr_name }.to_s
|
107
107
|
path = "/_links/" + json_path_escape(rel)
|
108
108
|
|
109
|
+
stringify_href = ->(string_or_uri_tmpl) {
|
110
|
+
if string_or_uri_tmpl.respond_to? :pattern
|
111
|
+
string_or_uri_tmpl.pattern
|
112
|
+
else
|
113
|
+
string_or_uri_tmpl.to_str
|
114
|
+
end
|
115
|
+
}
|
116
|
+
|
109
117
|
extract attr_name, from: path,
|
110
|
-
with: ->(r){ r.
|
118
|
+
with: ->(r){ r.raw_related_hrefs(rel){[]}.map &stringify_href },
|
111
119
|
coercion: opts[:coercion]
|
112
120
|
end
|
113
121
|
|
@@ -11,11 +11,12 @@ describe HalInterpretation do
|
|
11
11
|
item_class test_item_class
|
12
12
|
extract :name
|
13
13
|
extract :latitude, from: "/geo/latitude"
|
14
|
+
extract :bday, coercion: ->(val){ Time.parse(val) }
|
15
|
+
extract :seq, with: ->(_) { next_seq_num }
|
14
16
|
extract_link :up
|
15
17
|
extract_links :friend_ids, rel: "http://xmlns.com/foaf/0.1/knows",
|
16
18
|
coercion: ->(urls) { urls.map{|u| u.split("/").last } }
|
17
|
-
|
18
|
-
extract :seq, with: ->(_) { next_seq_num }
|
19
|
+
extract_link :archives_url_tmpl, rel: "archives"
|
19
20
|
|
20
21
|
def initialize(*args)
|
21
22
|
@cur_seq_num = 0
|
@@ -43,7 +44,11 @@ describe HalInterpretation do
|
|
43
44
|
"http://xmlns.com/foaf/0.1/knows": [
|
44
45
|
{ "href": "http://example.com/bob" },
|
45
46
|
{ "href": "http://example.com/alice" }
|
46
|
-
]
|
47
|
+
],
|
48
|
+
"archives": {
|
49
|
+
"href": "http://example.com/old{?since,until}",
|
50
|
+
"templated": true
|
51
|
+
}
|
47
52
|
}
|
48
53
|
}
|
49
54
|
JSON
|
@@ -56,6 +61,8 @@ describe HalInterpretation do
|
|
56
61
|
specify { expect(interpreter.item.bday).to eq Time.utc(2013,12,11,10,9,8) }
|
57
62
|
specify { expect(interpreter.item.seq).to eq 1 }
|
58
63
|
specify { expect(interpreter.item.friend_ids).to eq ["bob", "alice"] }
|
64
|
+
specify { expect(interpreter.item.archives_url_tmpl)
|
65
|
+
.to eq "http://example.com/old{?since,until}" }
|
59
66
|
|
60
67
|
specify { expect(interpreter.problems).to be_empty }
|
61
68
|
|
@@ -271,7 +278,8 @@ describe HalInterpretation do
|
|
271
278
|
let(:test_item_class) { Class.new do
|
272
279
|
include ActiveModel::Validations
|
273
280
|
|
274
|
-
attr_accessor :name, :latitude, :up, :bday, :seq, :hair, :friend_ids
|
281
|
+
attr_accessor :name, :latitude, :up, :bday, :seq, :hair, :friend_ids,
|
282
|
+
:archives_url_tmpl
|
275
283
|
|
276
284
|
def initialize
|
277
285
|
yield self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hal-interpretation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hal-client
|