esphinx-rails 1.1.2

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.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +21 -0
  4. data/config/environments/production.rb +1 -0
  5. data/config/environments/staging.rb +1 -0
  6. data/config/initializers/assets.rb +7 -0
  7. data/esphinx.gemspec +19 -0
  8. data/lib/assets/javascripts/esphinx/element.js +256 -0
  9. data/lib/assets/javascripts/esphinx/event.js +227 -0
  10. data/lib/assets/javascripts/esphinx/index.js +3 -0
  11. data/lib/assets/javascripts/esphinx/lib/collection.js +51 -0
  12. data/lib/assets/javascripts/esphinx/lib/comparable.js +54 -0
  13. data/lib/assets/javascripts/esphinx/lib/extensions/array.js +541 -0
  14. data/lib/assets/javascripts/esphinx/lib/extensions/function.js +46 -0
  15. data/lib/assets/javascripts/esphinx/lib/extensions/index.js +1 -0
  16. data/lib/assets/javascripts/esphinx/lib/extensions/location.js +111 -0
  17. data/lib/assets/javascripts/esphinx/lib/extensions/map.js +29 -0
  18. data/lib/assets/javascripts/esphinx/lib/extensions/number.js +42 -0
  19. data/lib/assets/javascripts/esphinx/lib/extensions/object.js +502 -0
  20. data/lib/assets/javascripts/esphinx/lib/extensions/string.js +130 -0
  21. data/lib/assets/javascripts/esphinx/lib/extensions/x_path_result.js +31 -0
  22. data/lib/assets/javascripts/esphinx/lib/patterns/gof/flyweight/factory.js +115 -0
  23. data/lib/assets/javascripts/esphinx/lib/patterns/gof/flyweight/flyweight.js +12 -0
  24. data/lib/assets/javascripts/esphinx/lib/patterns/gof/iterator.js +332 -0
  25. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/context.js +42 -0
  26. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs/element.js +78 -0
  27. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs/object.js +83 -0
  28. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs.js +19 -0
  29. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/search.js +24 -0
  30. data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/search_proxy.js +52 -0
  31. data/lib/assets/javascripts/esphinx/lib/patterns/index.js +1 -0
  32. data/lib/assets/javascripts/esphinx/main.js +361 -0
  33. data/lib/assets/javascripts/esphinx/node.js +276 -0
  34. data/lib/assets/javascripts/esphinx/properties/forms.js +161 -0
  35. data/lib/assets/javascripts/esphinx/properties/inputs/text.js +29 -0
  36. data/lib/assets/javascripts/esphinx/property.js +308 -0
  37. data/lib/assets/javascripts/esphinx/query.js +347 -0
  38. data/lib/assets/javascripts/esphinx/samples/sort.js +30 -0
  39. data/lib/assets/javascripts/esphinx/style.js +342 -0
  40. data/lib/assets/javascripts/esphinx/util/ajax.js +152 -0
  41. data/lib/assets/javascripts/esphinx/util/autocomplete.js +356 -0
  42. data/lib/assets/javascripts/esphinx/util/browser.js +66 -0
  43. data/lib/assets/javascripts/esphinx/util/cookie.js +167 -0
  44. data/lib/assets/javascripts/esphinx/util/keyboard.js +110 -0
  45. data/lib/assets/javascripts/esphinx/util/loader.js +84 -0
  46. data/lib/assets/javascripts/esphinx/util/observer.js +58 -0
  47. data/lib/assets/javascripts/esphinx/util/promise.js +127 -0
  48. data/lib/assets/javascripts/esphinx/util/protector.js +142 -0
  49. data/lib/assets/javascripts/esphinx/util/range.js +6 -0
  50. data/lib/assets/javascripts/esphinx/util/scrollbar.js +22 -0
  51. data/lib/esphinx/rails/engine.rb +7 -0
  52. data/lib/esphinx/rails/version.rb +5 -0
  53. data/lib/esphinx-rails.rb +1 -0
  54. data/vendor/assets/javascripts/jquery-2.2.2.min.js +1 -0
  55. metadata +99 -0
@@ -0,0 +1,46 @@
1
+ var
2
+ Flyweight;
3
+
4
+
5
+ (function($) {
6
+ "use strict";
7
+
8
+
9
+ try {
10
+
11
+ Object.defineProperties($.prototype, {
12
+ buildConstructor: {
13
+ value: function(args) {
14
+ // this won't be more necessary with Ecam Script 6
15
+ if (!(args instanceof Array)) {
16
+ args = Array.from(args);
17
+ }
18
+
19
+ // "bind" is a instance method of Function. It creates a new
20
+ // function for be called after.
21
+ // Apply calls the bind method
22
+ return $.prototype.bind.apply(this, [null].concat(args)
23
+ .flatten());
24
+ }
25
+ },
26
+
27
+ functionalSingleton: {
28
+ value: function() {
29
+ // delegator = Delegator.apply(this);
30
+ // delegator.object(Singleton.new);
31
+ return Flyweight.Factory.new.apply(this, Array
32
+ .from(arguments));
33
+ }
34
+ },
35
+
36
+ implementsMethods: {
37
+ value: function(name) {
38
+ return Object.implementsMethods(this, name);
39
+ }
40
+ }
41
+
42
+ });
43
+
44
+ } catch(e) {}
45
+
46
+ })(Function);
@@ -0,0 +1 @@
1
+ //= require_directory .
@@ -0,0 +1,111 @@
1
+ var
2
+ Location;
3
+
4
+
5
+ (function($) {
6
+ "use strict";
7
+
8
+ var
9
+ self = window.location,
10
+
11
+ escape = function(parameter) {
12
+ return parameter.replace(/\$/, "\\$");
13
+ },
14
+
15
+ pattern = function(parameter) {
16
+ parameter = escape(parameter);
17
+ // better solution for now in JS, but select the catch (?, &)
18
+ // (?:[?&])foo(?:=([^&#]+))?\b
19
+ return new RegExp("(?:[?&])" + parameter +
20
+ "(?:=([^&#]+))?\\b", "g");
21
+ },
22
+
23
+ separator = function(captured) {
24
+ return captured[0] ? captured[0] : "?";
25
+ },
26
+
27
+ clean = function(parameter) {
28
+ return self.search.replace(pattern(parameter), function(captured) {
29
+ return separator(captured) + parameter;
30
+ });
31
+ };
32
+
33
+
34
+ try {
35
+
36
+ Object.defineProperties($.prototype, {
37
+ queryParameter: {
38
+ value: function(parameter, value) {
39
+ if (parameter) parameter = parameter.trim();
40
+
41
+ var
42
+ uri = self.href,
43
+ search = self.search,
44
+ results,
45
+ regexp = pattern(parameter),
46
+
47
+ set = function(parameter, value) {
48
+ value = encodeURIComponent(value.toString().trim());
49
+
50
+ if (regexp.test(search)) {
51
+ if (value) {
52
+ search = search.replace(regexp,
53
+ function(captured, i, string) {
54
+ return separator(captured) + parameter +
55
+ "=" + value;
56
+ });
57
+ } else {
58
+ search = clean(parameter);
59
+ }
60
+ uri = self.origin + self
61
+ .pathname + search + self.hash;
62
+ } else {
63
+ uri = window.location.origin + window.location
64
+ .pathname + window.location.search +
65
+ separator(search) + parameter + "=" +
66
+ value + window.location.hash;
67
+ }
68
+
69
+ window.history.pushState("", "", uri);
70
+ };
71
+
72
+ if (value || typeof value == "string") {
73
+ set(parameter, value);
74
+ return self;
75
+ }
76
+
77
+ results = regexp.exec(search);
78
+ if (!results) return null;
79
+ return decodeURIComponent(results[1].replace(/\+/g, " "));
80
+ }
81
+ },
82
+
83
+ unsetParameter: {
84
+ value: function(parameter) {
85
+ var
86
+ uri = self.href,
87
+ search = self.search;
88
+
89
+ if (parameter) parameter = parameter.trim();
90
+
91
+ if (pattern(parameter).test(search)) {
92
+ search = clean(parameter);
93
+ uri = self.origin + self
94
+ .pathname + search + self.hash;
95
+ }
96
+
97
+ window.history.pushState("", "", uri);
98
+
99
+ return self;
100
+ }
101
+ }
102
+ });
103
+
104
+ } catch(e) {}
105
+
106
+ })(Location);
107
+
108
+ // the solution with positive lookbehind. Works in Python.
109
+ // (?<=(?:[?&]))foo(?:=[^&#]+)?\b
110
+ // the string for test
111
+ // ?foo=bar&foo=bar&foo&nonfoo=bar&nonfoo&foo#foo=bar
@@ -0,0 +1,29 @@
1
+ (function($) {
2
+ "use strict";
3
+
4
+ try {
5
+
6
+ Object.defineProperties($.prototype, {
7
+
8
+ hasEquivalence: {
9
+ value: function(key) {
10
+ var
11
+ iterator = this.keys(),
12
+ tuple = iterator.next();
13
+
14
+ while (!tuple.done) {
15
+ if (Object.areEquivalents(tuple.value, key)) {
16
+ return true;
17
+ }
18
+
19
+ tuple = iterator.next();
20
+ }
21
+
22
+ return false;
23
+ }
24
+ }
25
+
26
+ });
27
+ } catch(e) {}
28
+
29
+ })(Map);
@@ -0,0 +1,42 @@
1
+ (function($) {
2
+ "use strict";
3
+
4
+
5
+ try {
6
+
7
+ Object.defineProperties($, {
8
+ unit: {
9
+ value: function(number) {
10
+ var
11
+ pattern = /[^0-9\.]+/;
12
+
13
+ return number.match(pattern)[0];
14
+ }
15
+ }
16
+ });
17
+
18
+ Object.defineProperties($.prototype, {
19
+ // usage: (m)[".."](n)
20
+ '..': {
21
+ value: function(until, step) {
22
+ if (typeof step != "number") {step = 1;}
23
+
24
+ var
25
+ range = [],
26
+ self = this;
27
+
28
+ while (self <= until) {
29
+ range.push(self);
30
+ self += step;
31
+ }
32
+
33
+ return range;
34
+ }
35
+ }
36
+ });
37
+
38
+ } catch(e) {}
39
+
40
+ })(Number);
41
+
42
+ // console.log((0)[".."](5, 0.5))
@@ -0,0 +1,502 @@
1
+ //= require ./array
2
+
3
+
4
+ var
5
+ Iterable;
6
+
7
+
8
+ (function($) {
9
+ "use strict";
10
+
11
+
12
+ var
13
+ areEquivalents = function(object1, object2) {
14
+ var
15
+ object1Attributes,
16
+ object2Attributes,
17
+ object1Methods,
18
+ object2Methods,
19
+ object1AttributeValue,
20
+ object2AttributeValue,
21
+ iterator,
22
+ amount = 0,
23
+ primitiveTypes =
24
+ /(number|string|boolean|null|undefined|symbol)/,
25
+
26
+ callback = function(attribute) {
27
+ object1AttributeValue = object1[attribute];
28
+ object2AttributeValue = object2[attribute];
29
+
30
+ if ($.hasSameClass(object1AttributeValue,
31
+ object2AttributeValue)) {
32
+ if (typeof object1AttributeValue ==
33
+ "object") {
34
+ // recursivity
35
+ if ($.areEquivalents(
36
+ object1AttributeValue,
37
+ object2AttributeValue)) {
38
+ amount += 1;
39
+ }
40
+ } else
41
+ if (object1AttributeValue ==
42
+ object2AttributeValue) {
43
+ amount += 1;
44
+ }
45
+ }
46
+ };
47
+
48
+ if (object1 === object2) {
49
+ return true;
50
+ } else if ($.hasSameClass(object1, object2)) {
51
+ if (typeof object1 == "object") {
52
+ if (object1 instanceof Node) {
53
+ if (object1.isEqualNode(object2)) {
54
+ return true;
55
+ }
56
+ } else {
57
+ object1Attributes = $.attributes(object1);
58
+ object2Attributes = $.attributes(object2);
59
+ object1Methods = $.methods(object1);
60
+ object2Methods = $.methods(object2);
61
+
62
+ // if doesn't have attributes
63
+ if (!object1Attributes.length) {
64
+ if (object1Methods.length ==
65
+ object2Methods.length &&
66
+ // recursivity
67
+ $.areEquivalents(object1Methods,
68
+ object2Methods)) {
69
+ return true;
70
+ }
71
+ } else if (object1Attributes.length ==
72
+ object2Attributes.length) {
73
+
74
+ iterator = Iterable.Proxy.new(object1Attributes);
75
+
76
+ iterator.each(callback);
77
+
78
+ return amount == object1Attributes.length;
79
+ }
80
+ }
81
+ } else {
82
+ if (primitiveTypes.test(typeof object1)) {
83
+ return object1 === object2;
84
+ }
85
+ }
86
+ }
87
+
88
+ return false;
89
+ };
90
+
91
+
92
+ try {
93
+ $.defineProperties($, {
94
+
95
+ clone: {
96
+ value: function(object, includeNonEnumerable) {
97
+ if (typeof includeNonEnumerable != "boolean") {
98
+ includeNonEnumerable = true;
99
+ }
100
+
101
+ var
102
+ clone = {},
103
+ properties = $.getOwnPropertyNames(object),
104
+
105
+ callback = function(p) {
106
+ clone[p] = object[p];
107
+ };
108
+
109
+ if (!includeNonEnumerable) {
110
+ return Object.assign(clone, object);
111
+ }
112
+
113
+ try {
114
+ properties.forEach(callback);
115
+ } catch(e) {}
116
+
117
+ return clone;
118
+ }
119
+ },
120
+
121
+ className: {
122
+ value: function(object) {
123
+ var
124
+ pattern = /[a-zA-Z$_][^\]]+/g,
125
+ string = $.prototype.toString.call(object);
126
+
127
+ if (typeof object == "object" &&
128
+ $.implementsMethods(object, "toString")) {
129
+ // if implements, then calls it
130
+ string = object.toString();
131
+ }
132
+
133
+ return pattern.exec(string)[0].split(" ")[1];
134
+ }
135
+ },
136
+
137
+ classForName: {
138
+ value: function(name) {
139
+ return window[name];
140
+ }
141
+ },
142
+
143
+ hasSameClass: {
144
+ value: function(objects) {
145
+ var
146
+ argumentsAsArray = Array.from(arguments),
147
+ compared = argumentsAsArray[0],
148
+ amount = 0,
149
+
150
+ callback = function(object) {
151
+ if (!object) {
152
+ if ($.className(object) ==
153
+ $.className(compared)) {
154
+ amount++;
155
+ }
156
+ } else if ($.getPrototypeOf(compared) ==
157
+ $.getPrototypeOf(object)) {
158
+ amount++;
159
+ }
160
+ };
161
+
162
+ argumentsAsArray = argumentsAsArray.slice(1,
163
+ argumentsAsArray.length);
164
+ argumentsAsArray.forEach(callback);
165
+
166
+ return amount == argumentsAsArray.length;
167
+ }
168
+ },
169
+
170
+ belongToClass: {
171
+ value: function(objects, classFunction) {
172
+ var
173
+ iterator,
174
+ argumentsAsArray = Array.from(arguments),
175
+ amount = 0,
176
+
177
+ callback = function(object) {
178
+ if ($.classForName($.className(object)) ==
179
+ classFunction) {
180
+ amount++;
181
+ }
182
+ };
183
+
184
+ classFunction = argumentsAsArray.last();
185
+ argumentsAsArray.pop();
186
+
187
+ iterator = Iterable.Proxy.new(argumentsAsArray);
188
+ iterator.each(callback);
189
+
190
+ return amount == argumentsAsArray.length;
191
+ }
192
+ },
193
+
194
+ firstKey: {
195
+ value: function(object) {
196
+ var
197
+ // Object: javascript literal object
198
+ keys = Object.keys(object);
199
+
200
+
201
+ return keys[0];
202
+ }
203
+ },
204
+
205
+ lastKey: {
206
+ value: function(object) {
207
+ var
208
+ keys = Object.keys(object);
209
+
210
+
211
+ return keys[keys.length - 1];
212
+ }
213
+ },
214
+
215
+ normalizedAsLowerCase: {
216
+ value: function(object) {
217
+ var
218
+ iterator,
219
+ attributes = Object.attributes(object),
220
+ clone = {},
221
+
222
+ callback = function(v, k) {
223
+ if (typeof v == "string") {
224
+ clone[k] = v.toLowerCase();
225
+ }
226
+ };
227
+
228
+ Object.assign(clone, object);
229
+ object.length = attributes.length;
230
+ iterator = Iterable.Proxy.new(clone);
231
+
232
+ iterator.each(callback);
233
+
234
+ return clone;
235
+ }
236
+ },
237
+
238
+ firstFromASlice: {
239
+ value: function(object, slice, startingIndex, caseSensitive) {
240
+ var
241
+ iterator,
242
+ key,
243
+ regexp,
244
+ attributes = Object.attributes(object),
245
+
246
+ callback = function(k, i) {
247
+ if (!isNaN(i)) {
248
+ if (typeof object[k] == "string" &&
249
+ i >= startingIndex) {
250
+ if (object[k].search(regexp) != -1) {
251
+ key = k;
252
+ this.finalize();
253
+ }
254
+ }
255
+ } else if (typeof object[k] == "string") {
256
+ if (object[k].search(regexp) != -1) {
257
+ key = k;
258
+ this.finalize();
259
+ }
260
+ }
261
+ };
262
+
263
+ if (typeof startingIndex != "number") {
264
+ if (typeof startingIndex == "boolean") {
265
+ caseSensitive = startingIndex;
266
+ } else if (!caseSensitive || typeof caseSensitive !=
267
+ "boolean") {
268
+ caseSensitive = false;
269
+ }
270
+
271
+ startingIndex = 0;
272
+ }
273
+
274
+ slice = slice.trim();
275
+
276
+ if (!caseSensitive) {
277
+ regexp = new RegExp(slice, "i");
278
+ } else {
279
+ regexp = new RegExp(slice);
280
+ }
281
+
282
+ iterator = Iterable.Proxy.new(attributes);
283
+ iterator.each(callback);
284
+
285
+ if (key) {
286
+ return key;
287
+ }
288
+
289
+ return undefined;
290
+ }
291
+ },
292
+
293
+ asCountableLiteral: {
294
+ value: function(collection) {
295
+ return Iterable.parse(collection);
296
+ }
297
+ },
298
+
299
+ // The keys of associative arrays in JS only can be of integer or string kind. The associations that keys are of Integer kind, the items is sorted according the keys (works as HashSet of the Java); the associations that keys are String kind, works as LinkedHashMap, it implements a associative array and maintains the order of entrance on iterate.
300
+ // TreeMap implements a structure based red-black tree (binary search).
301
+ indexOf: {
302
+ value: function(object, value) {
303
+ var
304
+ key,
305
+ iterator,
306
+ properties = $.keys(object),
307
+
308
+ callback = function(p) {
309
+ if ($.areEquivalents(object[p], value)) {
310
+ key = p;
311
+ this.finalize();
312
+ }
313
+ };
314
+
315
+ iterator = Iterable.Proxy.new(properties);
316
+ iterator.each(callback);
317
+
318
+ if (key) {
319
+ return key;
320
+ }
321
+
322
+ return undefined;
323
+ }
324
+ },
325
+
326
+ amount: {
327
+ value: function(object, item) {
328
+ var
329
+ amount;
330
+
331
+ if (item) {
332
+ amount = $.values(object).amount(item);
333
+ } else {
334
+ amount = $.keys(object).length;
335
+ }
336
+
337
+ return amount;
338
+ }
339
+ },
340
+
341
+ empty: {
342
+ value: function(object) {
343
+ return $.amount(object) === 0;
344
+ }
345
+ },
346
+
347
+ some: {
348
+ value: function(object) {
349
+ return !$.empty(object);
350
+ }
351
+ },
352
+
353
+ delete: {
354
+ value: function(index, object) {
355
+ if (delete object[index]) {
356
+ if (object.hasOwnProperty("length")) {
357
+ object.length -= 1;
358
+ }
359
+
360
+ return true;
361
+ }
362
+
363
+ return false;
364
+ }
365
+ },
366
+
367
+ reverse: {
368
+ value: function(object) {
369
+ var
370
+ newObject = {},
371
+
372
+ callback = function(k) {
373
+ newObject[k] = object[k];
374
+ };
375
+
376
+ $.keys(object).reverse().forEach(callback);
377
+
378
+ return newObject;
379
+ }
380
+ },
381
+
382
+ attributes: {
383
+ value: function(object, includeNonEnumerable) {
384
+ if (typeof includeNonEnumerable != "boolean") {
385
+ includeNonEnumerable = false;
386
+ }
387
+
388
+ var
389
+ clone,
390
+ properties,
391
+ attributes = [],
392
+
393
+ callback = function(p) {
394
+ return typeof object[p] != "function";
395
+ };
396
+
397
+ if (!object) {
398
+ return [];
399
+ }
400
+
401
+ clone = Object.clone(object, includeNonEnumerable);
402
+
403
+ if (typeof object != "object" &&
404
+ typeof object != "function" &&
405
+ Object.getPrototypeOf(object)) {
406
+ clone = Object.getPrototypeOf(object);
407
+ }
408
+
409
+ properties = $.keys(clone);
410
+
411
+ if (includeNonEnumerable) {
412
+ properties = $.getOwnPropertyNames(clone);
413
+ }
414
+
415
+ try {
416
+ attributes = properties.filter(callback);
417
+ } catch(e) {}
418
+
419
+ return attributes;
420
+ }
421
+ },
422
+
423
+ methods: {
424
+ value: function(object, includeNonEnumerable) {
425
+ if (typeof includeNonEnumerable != "boolean") {
426
+ includeNonEnumerable = true;
427
+ }
428
+
429
+ var
430
+ clone,
431
+ properties;
432
+
433
+ // otherwise it will give a cascade error
434
+ if (!object) {
435
+ return [];
436
+ }
437
+
438
+ clone = Object.clone(object, includeNonEnumerable);
439
+
440
+ if (typeof object != "object" &&
441
+ typeof object != "function" &&
442
+ Object.getPrototypeOf(object)) {
443
+ clone = Object.getPrototypeOf(object);
444
+ }
445
+
446
+ properties = $.keys(clone);
447
+
448
+ if (includeNonEnumerable) {
449
+ properties = $.getOwnPropertyNames(clone);
450
+ }
451
+
452
+ return properties.difference($.attributes(object, true));
453
+ }
454
+ },
455
+
456
+ hasAttributes: {
457
+ value: function(object, attributes) {
458
+ var
459
+ amount = 0,
460
+ argumentsAsArray = Array.from(arguments),
461
+ researchedAttributes = argumentsAsArray
462
+ .slice(1, argumentsAsArray.length);
463
+
464
+ attributes = $.attributes(object, true);
465
+
466
+ researchedAttributes.forEach(function(attribute) {
467
+ if (attributes.includes(attribute)) {
468
+ amount++;
469
+ }
470
+ });
471
+
472
+ return amount == researchedAttributes.length;
473
+ }
474
+ },
475
+
476
+ implementsMethods: {
477
+ value: function(object, methods) {
478
+ var
479
+ amount = 0,
480
+ argumentsAsArray = Array.from(arguments),
481
+ researchedMethods = argumentsAsArray
482
+ .slice(1, argumentsAsArray.length);
483
+
484
+ methods = $.methods(object);
485
+ researchedMethods.forEach(function(method) {
486
+ if (methods.includes(method)) {
487
+ amount++;
488
+ }
489
+ });
490
+
491
+ return amount == researchedMethods.length;
492
+ }
493
+ },
494
+
495
+ areEquivalents: {
496
+ value: areEquivalents
497
+ }
498
+
499
+ });
500
+ } catch(e) {}
501
+
502
+ })(Object);