PageSourceSearch

https://www.tke-homesolutions.co.uk/media/system_files/js/es_js/core/core.js

js tke-homesolutions.co.uk collected 2026-10-06 17:32:19 UTC 4,562 bytes, 163 lines download raw bytes

1/**
2 * @namespace A unique namespace for the AJAX Solr library.
3 */
4AjaxSolr = function () {};
5
6/**
7 * @namespace Baseclass for all classes
8 * @see https://github.com/documentcloud/backbone/blob/51eed189bf4d25877be4acdf51e0a4c6039583c5/backbone.js#L243
9 */
10AjaxSolr.Class = function(attributes) {
11  AjaxSolr.extend(this, attributes);
12};
13
14/**
15 * A class 'extends' itself into a subclass.
16 *
17 * @static
18 * @param protoProps The properties of the subclass.
19 * @returns A function that represents the subclass.
20 * @see https://github.com/documentcloud/backbone/blob/51eed189bf4d25877be4acdf51e0a4c6039583c5/backbone.js#L1516
21 */
22AjaxSolr.Class.extend = function (protoProps, staticProps) {
23  var parent = this;
24  var child;
25
26  // The constructor function for the new subclass is either defined by you
27  // (the "constructor" property in your `extend` definition), or defaulted
28  // by us to simply call the parent's constructor.
29  if (protoProps && Object.prototype.hasOwnProperty.call(protoProps, 'constructor')) {
30    child = protoProps.constructor;
31  } else {
32    child = function(){ return parent.apply(this, arguments); };
33  }
34
35  // Add static properties to the constructor function, if supplied.
36  AjaxSolr.extend(child, parent, staticProps);
37
38  // Set the prototype chain to inherit from `parent`, without calling
39  // `parent`'s constructor function.
40  var Surrogate = function(){ this.constructor = child; };
41  Surrogate.prototype = parent.prototype;
42  child.prototype = new Surrogate;
43
44  // Add prototype properties (instance properties) to the subclass,
45  // if supplied.
46  if (protoProps) AjaxSolr.extend(child.prototype, protoProps);
47
48  // Set a convenience property in case the parent's prototype is needed
49  // later.
50  child.__super__ = parent.prototype;
51
52  return child;
53};
54
55/**
56 * @static
57 * @see https://github.com/documentcloud/underscore/blob/7342e289aa9d91c5aacfb3662ea56e7a6d081200/underscore.js#L789
58*/
59AjaxSolr.extend = function (child) {
60  // From _.extend
61  var obj = Array.prototype.slice.call(arguments, 1);
62
63  // From _.extend
64  var iterator = function(source) {
65    if (source) {
66      for (var prop in source) {
67        child[prop] = source[prop];
68      }
69    }
70  };
71
72  // From _.each
73  if (obj == null) return;
74  if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {
75    obj.forEach(iterator);
76  } else if (obj.length === +obj.length) {
77    for (var i = 0, l = obj.length; i < l; i++) {
78      iterator.call(undefined, obj[i], i, obj);
79    }
80  } else {
81    for (var key in obj) {
82      if (Object.prototype.hasOwnProperty.call(obj, key)) {
83        iterator.call(undefined, obj[key], key, obj);
84      }
85    }
86  }
87
88  return child;
89};
90
91/**
92 * @static
93 * @param value A value.
94 * @param array An array.
95 * @returns {Boolean} Whether value exists in the array.
96 */
97AjaxSolr.inArray = function (value, array) {
98  if (array) {
99    for (var i = 0, l = array.length; i < l; i++) {
100      if (AjaxSolr.equals(array[i], value)) {
101        return i;
102      }
103    }
104  }
105  return -1;
106};
107
108/**
109 * @static
110 * @param foo A value.
111 * @param bar A value.
112 * @returns {Boolean} Whether the two given values are equal.
113 */
114AjaxSolr.equals = function (foo, bar) {
115  if (AjaxSolr.isArray(foo) && AjaxSolr.isArray(bar)) {
116    if (foo.length !== bar.length) {
117      return false;
118    }
119    for (var i = 0, l = foo.length; i < l; i++) {
120      if (foo[i] !== bar[i]) {
121        return false;
122      }
123    }
124    return true;
125  }
126  else if (AjaxSolr.isRegExp(foo) && AjaxSolr.isString(bar)) {
127    return bar.match(foo);
128  }
129  else if (AjaxSolr.isRegExp(bar) && AjaxSolr.isString(foo)) {
130    return foo.match(bar);
131  }
132  else {
133    return foo === bar;
134  }
135};
136
137/**
138 * Can't use toString.call(obj) === "[object Array]", as it may return
139 * "[xpconnect wrapped native prototype]", which is undesirable.
140 *
141 * @static
142 * @see http://thinkweb2.com/projects/prototype/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/
143 * @see http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js
144 */
145AjaxSolr.isArray = function (obj) {
146  return obj != null && typeof obj == 'object' && 'splice' in obj && 'join' in obj;
147};
148
149/**
150 * @param obj Any object.
151 * @returns {Boolean} Whether the object is a RegExp object.
152 */
153AjaxSolr.isRegExp = function (obj) {
154  return obj != null && (typeof obj == 'object' || typeof obj == 'function') && 'ignoreCase' in obj;
155};
156
157/**
158 * @param obj Any object.
159 * @returns {Boolean} Whether the object is a String object.
160 */
161AjaxSolr.isString = function (obj) {
162  return obj != null && typeof obj == 'string';
163};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.