1-
21"use strict" ;
32
4- function clean ( s ) {
3+ function stripQuotes ( s ) {
54 return s . replace ( / " / g, "" ) ;
65}
76
7+ function toQueryValue ( value ) {
8+ if ( typeof value === 'string' ) {
9+ return '"' + stripQuotes ( value ) + '"' ;
10+ } else if ( value instanceof Date ) {
11+ return value . getTime ( ) ;
12+ } else if ( Array . isArray ( value ) ) {
13+ return "[" + value . map ( function ( item ) {
14+ return toQueryValue ( item ) ;
15+ } ) . join ( ',' ) + "]" ;
16+ }
17+ return value ;
18+ }
19+
820/**
921 * @global
1022 * @namespace
@@ -16,27 +28,11 @@ module.exports = {
1628 * Convert a predicate (array of 3 elements) into a query for prismic.io (string)
1729 */
1830 toQuery : function ( predicate ) {
19- var pred = clean ( predicate [ 0 ] ) ;
20- var first = clean ( predicate [ 1 ] ) ;
21- var firstArg = ( first . indexOf ( "my." ) === 0 || first . indexOf ( "document" ) === 0 ) ? first
22- : '"' + first + '"' ;
23- return "[:d = " + pred + "(" + firstArg +
24- ( predicate . length > 2 ? ", " : "" ) +
25- ( function ( ) {
26- return predicate . slice ( 2 ) . map ( function ( p ) {
27- if ( typeof p === 'string' ) {
28- return '"' + clean ( p ) + '"' ;
29- } else if ( Array . isArray ( p ) ) {
30- return "[" + p . map ( function ( e ) {
31- return '"' + clean ( e ) + '"' ;
32- } ) . join ( ',' ) + "]" ;
33- } else if ( p instanceof Date ) {
34- return p . getTime ( ) ;
35- } else {
36- return p ;
37- }
38- } ) . join ( ',' ) ;
39- } ) ( ) + ")]" ;
31+ var operator = stripQuotes ( predicate [ 0 ] ) ;
32+ var path = stripQuotes ( predicate [ 1 ] ) ;
33+ var pathArg = ( path . indexOf ( "my." ) === 0 || path . indexOf ( "document" ) === 0 ) ? path : '"' + path + '"' ;
34+ var values = predicate . slice ( 2 ) . map ( toQueryValue ) . join ( ',' ) ;
35+ return "[:d = " + operator + "(" + pathArg + ( predicate . length > 2 ? ", " : "" ) + values + ")]" ;
4036 } ,
4137
4238 /**
0 commit comments