prismic.io 1.3.5 → 1.4.0
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 +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
|