prismic.io 1.3.5 → 1.4.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/lib/prismic/api.rb +32 -0
- data/lib/prismic/predicates.rb +21 -1
- data/lib/prismic/version.rb +1 -1
- data/spec/doc_spec.rb +2 -9
- data/spec/fragments_spec.rb +3 -3
- data/spec/json_parsers_spec.rb +1 -1
- data/spec/lesbonneschoses_spec.rb +3 -6
- data/spec/predicates_spec.rb +218 -0
- data/spec/prismic_spec.rb +1 -1
- 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: a60dbb4b693926554c328099d394411b071b4a65
|
4
|
+
data.tar.gz: 9c8dfd97d137e2d40caae80449853fae4acabf15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80ebc8910d0034882ff8ed3d7a75a26412c30be715a386f50d4194476b8d57e048ef17182003d113fb000b67b1f399dc33b32bb6bb3d17f1f13c191bcda69110
|
7
|
+
data.tar.gz: 8ade34a126227b09778476b7cc1b2683a7c61e6baf7e9656c7469c2c87916087d0fd045c1380686d0082a61affe31436acaeb7dea3fa5c76ee11911f8824d307
|
data/Gemfile.lock
CHANGED
data/lib/prismic/api.rb
CHANGED
@@ -83,6 +83,38 @@ module Prismic
|
|
83
83
|
form(name, data, ref)
|
84
84
|
end
|
85
85
|
|
86
|
+
# Perform a query on this API. Use the master reference is no ref is specified in data.
|
87
|
+
# @param q [String] the query to perform
|
88
|
+
# @param data [Hash] query options (page, pageSize, ref, etc.)
|
89
|
+
def query(q, data={})
|
90
|
+
ref = data['ref'] || self.master.ref
|
91
|
+
form('everything', data).query(q).submit(ref)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Retrieve one document by its id
|
95
|
+
# @param q [String] the query to perform
|
96
|
+
# @param data [Hash] query options (page, pageSize, ref, etc.)
|
97
|
+
# @return the document, or nil if not found
|
98
|
+
def getByID(id, data={})
|
99
|
+
query(Prismic::Predicates::at('document.id', id), data)[0]
|
100
|
+
end
|
101
|
+
|
102
|
+
# Retrieve one document by its uid
|
103
|
+
# @param q [String] the query to perform
|
104
|
+
# @param data [Hash] query options (page, pageSize, ref, etc.)
|
105
|
+
# @return the document, or nil if not found
|
106
|
+
def getByUID(typ, uid, data={})
|
107
|
+
query(Prismic::Predicates::at('my.'+typ+'.uid', uid), data)[0]
|
108
|
+
end
|
109
|
+
|
110
|
+
# Retrieve multiple documents by their ids
|
111
|
+
# @param q [String] the query to perform
|
112
|
+
# @param data [Hash] query options (page, pageSize, ref, etc.)
|
113
|
+
# @return the document, or nil if not found
|
114
|
+
def getByIDs(ids, data={})
|
115
|
+
query(Prismic::Predicates::in('document.id', ids), data)
|
116
|
+
end
|
117
|
+
|
86
118
|
# Return the URL to display a given preview
|
87
119
|
# @param token [String] as received from Prismic server to identify the content to preview
|
88
120
|
# @param link_resolver the link resolver to build URL for your site
|
data/lib/prismic/predicates.rb
CHANGED
@@ -5,6 +5,10 @@ module Prismic
|
|
5
5
|
['at', fragment, value]
|
6
6
|
end
|
7
7
|
|
8
|
+
def self.in(fragment, value)
|
9
|
+
['in', fragment, value]
|
10
|
+
end
|
11
|
+
|
8
12
|
def self.any(fragment, values)
|
9
13
|
['any', fragment, values]
|
10
14
|
end
|
@@ -17,6 +21,14 @@ module Prismic
|
|
17
21
|
['similar', fragment, value]
|
18
22
|
end
|
19
23
|
|
24
|
+
def self.has(fragment)
|
25
|
+
['has', fragment]
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.missing(fragment)
|
29
|
+
['missing', fragment]
|
30
|
+
end
|
31
|
+
|
20
32
|
def self.gt(fragment, value)
|
21
33
|
['number.gt', fragment, value]
|
22
34
|
end
|
@@ -81,6 +93,14 @@ module Prismic
|
|
81
93
|
['date.year', fragment, year]
|
82
94
|
end
|
83
95
|
|
96
|
+
def self.year_before(fragment, year)
|
97
|
+
['date.year-before', fragment, year]
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.year_after(fragment, year)
|
101
|
+
['date.year-after', fragment, year]
|
102
|
+
end
|
103
|
+
|
84
104
|
def self.hour(fragment, hour)
|
85
105
|
['date.hour', fragment, hour]
|
86
106
|
end
|
@@ -110,4 +130,4 @@ module Prismic
|
|
110
130
|
private_class_method :as_timestamp
|
111
131
|
|
112
132
|
end
|
113
|
-
end
|
133
|
+
end
|
data/lib/prismic/version.rb
CHANGED
data/spec/doc_spec.rb
CHANGED
@@ -28,10 +28,7 @@ describe 'Documentation' do
|
|
28
28
|
api = Prismic.api('https://lesbonneschoses.cdn.prismic.io/api', preview_token)
|
29
29
|
st_patrick_ref = api.ref('St-Patrick specials')
|
30
30
|
# Now we'll use this reference for all our calls
|
31
|
-
response = api.
|
32
|
-
.ref(st_patrick_ref)
|
33
|
-
.query(Prismic::Predicates::at('document.type', 'product'))
|
34
|
-
.submit
|
31
|
+
response = api.query(Prismic::Predicates::at('document.type', 'product'), 'ref' => st_patrick_ref)
|
35
32
|
# The Response object contains all documents of type "product"
|
36
33
|
# including the new "Saint-Patrick's Cupcake"
|
37
34
|
# endgist
|
@@ -105,11 +102,7 @@ describe 'Documentation' do
|
|
105
102
|
|
106
103
|
it 'text' do
|
107
104
|
api = Prismic::api('https://lesbonneschoses.cdn.prismic.io/api')
|
108
|
-
|
109
|
-
.query(Predicates::at('document.id', 'UlfoxUnM0wkXYXbl'))
|
110
|
-
.ref(api.master_ref)
|
111
|
-
.submit
|
112
|
-
doc = response[0]
|
105
|
+
doc = api.getByID('UlfoxUnM0wkXYXbl')
|
113
106
|
# startgist:4cbc1abffe7cc1209f95:prismic-getText.rb
|
114
107
|
author = doc.get_text('blog-post.author')
|
115
108
|
if author == nil
|
data/spec/fragments_spec.rb
CHANGED
@@ -668,11 +668,11 @@ describe 'Group' do
|
|
668
668
|
@micro_api = Prismic.api('https://micro.prismic.io/api', nil)
|
669
669
|
@master_ref = @micro_api.master_ref
|
670
670
|
@docchapter = @micro_api.form('everything').query('[[:d = at(document.type, "docchapter")]]').orderings('[my.docchapter.priority]').submit(@master_ref)[0]
|
671
|
-
@link_resolver = Prismic.link_resolver('master'){|doc_link| "http://localhost/#{doc_link.
|
671
|
+
@link_resolver = Prismic.link_resolver('master'){|doc_link| "http://localhost/#{doc_link.type}/#{doc_link.id}" }
|
672
672
|
end
|
673
673
|
|
674
674
|
it 'accesses fields the proper way' do
|
675
|
-
@docchapter['docchapter.docs'][0]['linktodoc'].
|
675
|
+
@docchapter['docchapter.docs'][0]['linktodoc'].type.should == 'doc'
|
676
676
|
end
|
677
677
|
|
678
678
|
it 'serializes towards HTML as expected' do
|
@@ -708,7 +708,7 @@ describe 'Slices' do
|
|
708
708
|
@json_slices = JSON.load(@raw_json_slices)
|
709
709
|
@doc = Prismic::JsonParser.document_parser(@json_slices)
|
710
710
|
@slices = @doc.get_slice_zone("article.blocks")
|
711
|
-
@link_resolver = Prismic.link_resolver('master'){|doc_link| "http://localhost/#{doc_link.
|
711
|
+
@link_resolver = Prismic.link_resolver('master'){|doc_link| "http://localhost/#{doc_link.type}/#{doc_link.id}" }
|
712
712
|
end
|
713
713
|
|
714
714
|
it 'parses correctly' do
|
data/spec/json_parsers_spec.rb
CHANGED
@@ -23,7 +23,7 @@ json
|
|
23
23
|
it "correctly parses DocumentLinks" do
|
24
24
|
document_link = Prismic::JsonParser.document_link_parser(@json)
|
25
25
|
document_link.id.should == "UdUjvt_mqVNObPeO"
|
26
|
-
document_link.
|
26
|
+
document_link.type.should == "product"
|
27
27
|
document_link.tags.should == ['Macaron']
|
28
28
|
document_link.slug.should == "dark-chocolate-macaron"
|
29
29
|
document_link.broken?.should == false
|
@@ -20,12 +20,9 @@ describe 'LesBonnesChoses' do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'queries macarons (using a predicate) and returns 7 documents' do
|
23
|
-
@api.
|
24
|
-
.
|
25
|
-
|
26
|
-
@api.form('everything')
|
27
|
-
.query('[[:d = any(document.tags, ["Macaron"])]]')
|
28
|
-
.submit(@master_ref).size.should == 7
|
23
|
+
@api.query('[[:d = any(document.tags, ["Macaron"])]]')
|
24
|
+
.results.size.should == 7
|
25
|
+
@api.query('[[:d = any(document.tags, ["Macaron"])]]').size.should == 7
|
29
26
|
end
|
30
27
|
|
31
28
|
it 'queries macarons (using a form) and returns 7 documents' do
|
data/spec/predicates_spec.rb
CHANGED
@@ -28,6 +28,13 @@ describe 'predicates' do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
describe 'fulltext predicate' do
|
32
|
+
it 'with helper serializes well' do
|
33
|
+
form = @api.form('everything').query(Predicates.fulltext('document.type', ['article', 'blog-post']))
|
34
|
+
form.data['q'].should == ['[[:d = fulltext(document.type, ["article", "blog-post"])]]']
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
31
38
|
describe 'similar predicate' do
|
32
39
|
it 'as an array serializes well' do
|
33
40
|
form = @api.form('everything').query(['similar', 'idOfSomeDocument', 10])
|
@@ -39,6 +46,28 @@ describe 'predicates' do
|
|
39
46
|
end
|
40
47
|
end
|
41
48
|
|
49
|
+
describe 'has predicate' do
|
50
|
+
it 'as an array serializes well' do
|
51
|
+
form = @api.form('everything').query(['has', 'my.blog-post.author'])
|
52
|
+
form.data['q'].should == ['[[:d = has(my.blog-post.author)]]']
|
53
|
+
end
|
54
|
+
it 'with helpers serializes well' do
|
55
|
+
form = @api.form('everything').query(Predicates.has('my.blog-post.author'))
|
56
|
+
form.data['q'].should == ['[[:d = has(my.blog-post.author)]]']
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe 'missing predicate' do
|
61
|
+
it 'as an array serializes well' do
|
62
|
+
form = @api.form('everything').query(['missing', 'my.blog-post.author'])
|
63
|
+
form.data['q'].should == ['[[:d = missing(my.blog-post.author)]]']
|
64
|
+
end
|
65
|
+
it 'with helpers serializes well' do
|
66
|
+
form = @api.form('everything').query(Predicates.missing('my.blog-post.author'))
|
67
|
+
form.data['q'].should == ['[[:d = missing(my.blog-post.author)]]']
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
42
71
|
describe 'multiple predicates' do
|
43
72
|
it 'as an array serializes well' do
|
44
73
|
form = @api.form('everything').query(
|
@@ -56,6 +85,15 @@ describe 'predicates' do
|
|
56
85
|
end
|
57
86
|
end
|
58
87
|
|
88
|
+
describe 'number GT' do
|
89
|
+
it 'with helpers serializes well' do
|
90
|
+
form = @api.form('everything').query(
|
91
|
+
Predicates.gt('my.blog-post.publication-date', 4)
|
92
|
+
)
|
93
|
+
form.data['q'].should == ['[[:d = number.gt(my.blog-post.publication-date, 4)]]']
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
59
97
|
describe 'number LT' do
|
60
98
|
it 'with helpers serializes well' do
|
61
99
|
form = @api.form('everything').query(
|
@@ -74,6 +112,186 @@ describe 'predicates' do
|
|
74
112
|
end
|
75
113
|
end
|
76
114
|
|
115
|
+
describe 'date is before' do
|
116
|
+
it 'with helpers serializes well' do
|
117
|
+
form = @api.form('everything').query(
|
118
|
+
Predicates.date_before('my.blog-post.publication-date', Date.parse('2016-03-02') )
|
119
|
+
)
|
120
|
+
form.data['q'].should == ["[[:d = date.before(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000})]]"]
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe 'date is after' do
|
125
|
+
it 'with helpers serializes well' do
|
126
|
+
form = @api.form('everything').query(
|
127
|
+
Predicates.date_after('my.blog-post.publication-date', Date.parse('2016-03-02') )
|
128
|
+
)
|
129
|
+
form.data['q'].should == ["[[:d = date.after(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000})]]"]
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
describe 'date is between' do
|
134
|
+
it 'with helpers serializes well' do
|
135
|
+
form = @api.form('everything').query(
|
136
|
+
Predicates.date_between('my.blog-post.publication-date', Date.parse('2016-03-02'), Date.parse('2016-03-04') )
|
137
|
+
)
|
138
|
+
form.data['q'].should == ["[[:d = date.between(my.blog-post.publication-date, #{Date.parse('2016-03-02').to_time.to_i * 1000}, #{Date.parse('2016-03-04').to_time.to_i * 1000})]]"]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe 'day of month' do
|
143
|
+
it 'with helpers serializes well' do
|
144
|
+
form = @api.form('everything').query(
|
145
|
+
Predicates.day_of_month('my.blog-post.publication-date', 10)
|
146
|
+
)
|
147
|
+
form.data['q'].should == ['[[:d = date.day-of-month(my.blog-post.publication-date, 10)]]']
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe 'day of month after' do
|
152
|
+
it 'with helpers serializes well' do
|
153
|
+
form = @api.form('everything').query(
|
154
|
+
Predicates.day_of_month_after('my.blog-post.publication-date', 10)
|
155
|
+
)
|
156
|
+
form.data['q'].should == ['[[:d = date.day-of-month-after(my.blog-post.publication-date, 10)]]']
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
describe 'day of month before' do
|
161
|
+
it 'with helpers serializes well' do
|
162
|
+
form = @api.form('everything').query(
|
163
|
+
Predicates.day_of_month_before('my.blog-post.publication-date', 10)
|
164
|
+
)
|
165
|
+
form.data['q'].should == ['[[:d = date.day-of-month-before(my.blog-post.publication-date, 10)]]']
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe 'day of week' do
|
170
|
+
it 'with helpers serializes well' do
|
171
|
+
form = @api.form('everything').query(
|
172
|
+
Predicates.day_of_week('my.blog-post.publication-date', 7)
|
173
|
+
)
|
174
|
+
form.data['q'].should == ['[[:d = date.day-of-week(my.blog-post.publication-date, 7)]]']
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe 'day of week after' do
|
179
|
+
it 'with helpers serializes well' do
|
180
|
+
form = @api.form('everything').query(
|
181
|
+
Predicates.day_of_week_after('my.blog-post.publication-date', 7)
|
182
|
+
)
|
183
|
+
form.data['q'].should == ['[[:d = date.day-of-week-after(my.blog-post.publication-date, 7)]]']
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe 'day of week before' do
|
188
|
+
it 'with helpers serializes well' do
|
189
|
+
form = @api.form('everything').query(
|
190
|
+
Predicates.day_of_week_before('my.blog-post.publication-date', 7)
|
191
|
+
)
|
192
|
+
form.data['q'].should == ['[[:d = date.day-of-week-before(my.blog-post.publication-date, 7)]]']
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
describe 'month' do
|
197
|
+
it 'with helpers serializes well' do
|
198
|
+
form = @api.form('everything').query(
|
199
|
+
Predicates.month('my.blog-post.publication-date', 5)
|
200
|
+
)
|
201
|
+
form.data['q'].should == ['[[:d = date.month(my.blog-post.publication-date, 5)]]']
|
202
|
+
end
|
203
|
+
it 'with helpers serializes well' do
|
204
|
+
form = @api.form('everything').query(
|
205
|
+
Predicates.month('my.blog-post.publication-date', 'May')
|
206
|
+
)
|
207
|
+
form.data['q'].should == ['[[:d = date.month(my.blog-post.publication-date, "May")]]']
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
describe 'month after' do
|
212
|
+
it 'with helpers serializes well' do
|
213
|
+
form = @api.form('everything').query(
|
214
|
+
Predicates.month_after('my.blog-post.publication-date', 4)
|
215
|
+
)
|
216
|
+
form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, 4)]]']
|
217
|
+
end
|
218
|
+
it 'with helpers serializes well' do
|
219
|
+
form = @api.form('everything').query(
|
220
|
+
Predicates.month_after('my.blog-post.publication-date', 'April')
|
221
|
+
)
|
222
|
+
form.data['q'].should == ['[[:d = date.month-after(my.blog-post.publication-date, "April")]]']
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe 'month before' do
|
227
|
+
it 'with helpers serializes well' do
|
228
|
+
form = @api.form('everything').query(
|
229
|
+
Predicates.month_before('my.blog-post.publication-date', 12)
|
230
|
+
)
|
231
|
+
form.data['q'].should == ['[[:d = date.month-before(my.blog-post.publication-date, 12)]]']
|
232
|
+
end
|
233
|
+
it 'with helpers serializes well' do
|
234
|
+
form = @api.form('everything').query(
|
235
|
+
Predicates.month_before('my.blog-post.publication-date', 'December')
|
236
|
+
)
|
237
|
+
form.data['q'].should == ['[[:d = date.month-before(my.blog-post.publication-date, "December")]]']
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
describe 'year' do
|
242
|
+
it 'with helpers serializes well' do
|
243
|
+
form = @api.form('everything').query(
|
244
|
+
Predicates.year('my.blog-post.publication-date', 2013)
|
245
|
+
)
|
246
|
+
form.data['q'].should == ['[[:d = date.year(my.blog-post.publication-date, 2013)]]']
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
describe 'year before' do
|
251
|
+
it 'with helpers serializes well' do
|
252
|
+
form = @api.form('everything').query(
|
253
|
+
Predicates.year_before('my.blog-post.publication-date', 2013)
|
254
|
+
)
|
255
|
+
form.data['q'].should == ['[[:d = date.year-before(my.blog-post.publication-date, 2013)]]']
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
describe 'year after' do
|
260
|
+
it 'with helpers serializes well' do
|
261
|
+
form = @api.form('everything').query(
|
262
|
+
Predicates.year_after('my.blog-post.publication-date', 2011)
|
263
|
+
)
|
264
|
+
form.data['q'].should == ['[[:d = date.year-after(my.blog-post.publication-date, 2011)]]']
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
describe 'hour' do
|
269
|
+
it 'with helpers serializes well' do
|
270
|
+
form = @api.form('everything').query(
|
271
|
+
Predicates.hour('my.blog-post.publication-date', 2)
|
272
|
+
)
|
273
|
+
form.data['q'].should == ['[[:d = date.hour(my.blog-post.publication-date, 2)]]']
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
describe 'hour before' do
|
278
|
+
it 'with helpers serializes well' do
|
279
|
+
form = @api.form('everything').query(
|
280
|
+
Predicates.hour_before('my.blog-post.publication-date', 12)
|
281
|
+
)
|
282
|
+
form.data['q'].should == ['[[:d = date.hour-before(my.blog-post.publication-date, 12)]]']
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
describe 'hour after' do
|
287
|
+
it 'with helpers serializes well' do
|
288
|
+
form = @api.form('everything').query(
|
289
|
+
Predicates.hour_after('my.blog-post.publication-date', 17)
|
290
|
+
)
|
291
|
+
form.data['q'].should == ['[[:d = date.hour-after(my.blog-post.publication-date, 17)]]']
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
77
295
|
describe 'geopoint near' do
|
78
296
|
it 'with helpers serializes well' do
|
79
297
|
form = @api.form('everything').query(
|
data/spec/prismic_spec.rb
CHANGED
@@ -271,7 +271,7 @@ describe 'LinkResolver' do
|
|
271
271
|
@document = Prismic::Document.new('id', nil, 'blog-post', nil, ['tag1', 'tag2'], ['my-slug', 'my-other-slug'], nil)
|
272
272
|
|
273
273
|
@link_resolver = Prismic::LinkResolver.new(nil) do |doc|
|
274
|
-
'/'+doc.
|
274
|
+
'/'+doc.type+'/'+doc.id+'/'+doc.slug
|
275
275
|
end
|
276
276
|
end
|
277
277
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prismic.io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Étienne Vallette d'Osia
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|