diff options
author | Kris Kowal | 2012-07-09 16:38:08 -0700 |
---|---|---|
committer | Kris Kowal | 2012-07-09 16:38:08 -0700 |
commit | 7bee50379c1df86bb571e0e8d6c08e24d25231f5 (patch) | |
tree | 5b11abd0414e0a3ab50ec6276b6334fbd168db7e /js/lib/NJUtils.js | |
parent | 26d4b5ce30e6e0ea6e0fde870853c1e2a673a7b4 (diff) | |
download | ninja-7bee50379c1df86bb571e0e8d6c08e24d25231f5.tar.gz |
BSD License
Diffstat (limited to 'js/lib/NJUtils.js')
-rwxr-xr-x | js/lib/NJUtils.js | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/js/lib/NJUtils.js b/js/lib/NJUtils.js index 1406ad98..cbd936a6 100755 --- a/js/lib/NJUtils.js +++ b/js/lib/NJUtils.js | |||
@@ -1,24 +1,25 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, are permitted provided that the following conditions are met: |
8 | 7 | ||
9 | - Redistributions of source code must retain the above copyright notice, | 8 | * Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. | 9 | this list of conditions and the following disclaimer. |
11 | - Redistributions in binary form must reproduce the above copyright | 10 | |
12 | notice, this list of conditions and the following disclaimer in the | 11 | * Redistributions in binary form must reproduce the above copyright notice, |
13 | documentation and/or other materials provided with the distribution. | 12 | this list of conditions and the following disclaimer in the documentation |
14 | - Neither the name of Motorola Mobility nor the names of its contributors | 13 | and/or other materials provided with the distribution. |
15 | may be used to endorse or promote products derived from this software | 14 | |
16 | without specific prior written permission. | 15 | * Neither the name of Motorola Mobility LLC nor the names of its |
16 | contributors may be used to endorse or promote products derived from this | ||
17 | software without specific prior written permission. | ||
17 | 18 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -39,7 +40,7 @@ var Montage = require("montage/core/core").Montage, | |||
39 | exports.NJUtils = Montage.create(Component, { | 40 | exports.NJUtils = Montage.create(Component, { |
40 | 41 | ||
41 | /* =============== DOM Access ================ */ | 42 | /* =============== DOM Access ================ */ |
42 | 43 | ||
43 | ///// Quick "getElementById" | 44 | ///// Quick "getElementById" |
44 | $ : { | 45 | $ : { |
45 | value: function(id, doc) { | 46 | value: function(id, doc) { |
@@ -47,7 +48,7 @@ exports.NJUtils = Montage.create(Component, { | |||
47 | return doc.getElementById(id); | 48 | return doc.getElementById(id); |
48 | } | 49 | } |
49 | }, | 50 | }, |
50 | 51 | ||
51 | ///// Quick "getElementsByClassName" which also returns as an Array | 52 | ///// Quick "getElementsByClassName" which also returns as an Array |
52 | ///// Can return as NodeList by passing true as second argument | 53 | ///// Can return as NodeList by passing true as second argument |
53 | $$ : { | 54 | $$ : { |
@@ -57,7 +58,7 @@ exports.NJUtils = Montage.create(Component, { | |||
57 | return (asNodeList) ? list : this.toArray(list); | 58 | return (asNodeList) ? list : this.toArray(list); |
58 | } | 59 | } |
59 | }, | 60 | }, |
60 | 61 | ||
61 | ///// Get child nodes of element | 62 | ///// Get child nodes of element |
62 | ///// Omit filter to only return element nodes | 63 | ///// Omit filter to only return element nodes |
63 | ///// Pass in filter function to minimize collection, or | 64 | ///// Pass in filter function to minimize collection, or |
@@ -70,9 +71,9 @@ exports.NJUtils = Montage.create(Component, { | |||
70 | return this.toArray(el.childNodes).filter(f); | 71 | return this.toArray(el.childNodes).filter(f); |
71 | } | 72 | } |
72 | }, | 73 | }, |
73 | 74 | ||
74 | /* ============= DOM Manipulation ============= */ | 75 | /* ============= DOM Manipulation ============= */ |
75 | 76 | ||
76 | ///// Creates and returns text node from string | 77 | ///// Creates and returns text node from string |
77 | textNode : { | 78 | textNode : { |
78 | value: function(text) { | 79 | value: function(text) { |
@@ -95,7 +96,7 @@ exports.NJUtils = Montage.create(Component, { | |||
95 | return el; | 96 | return el; |
96 | } | 97 | } |
97 | }, | 98 | }, |
98 | 99 | ||
99 | decor: { | 100 | decor: { |
100 | value: function(el, attr) { | 101 | value: function(el, attr) { |
101 | if (typeof attr === 'object') { | 102 | if (typeof attr === 'object') { |
@@ -183,7 +184,7 @@ exports.NJUtils = Montage.create(Component, { | |||
183 | return node; | 184 | return node; |
184 | } | 185 | } |
185 | }, | 186 | }, |
186 | 187 | ||
187 | queryParentSelector : { | 188 | queryParentSelector : { |
188 | value: function(el, strSelector) { | 189 | value: function(el, strSelector) { |
189 | // queryParentSelector: | 190 | // queryParentSelector: |
@@ -191,7 +192,7 @@ exports.NJUtils = Montage.create(Component, { | |||
191 | // and find the first parent that matches selector strSelector (required). | 192 | // and find the first parent that matches selector strSelector (required). |
192 | // Returns: The element that matches, or false if there is no match | 193 | // Returns: The element that matches, or false if there is no match |
193 | // or if insufficient parameters are supplied. | 194 | // or if insufficient parameters are supplied. |
194 | 195 | ||
195 | if ((typeof(el) === "undefined") || (typeof(strSelector) === "undefined")) { | 196 | if ((typeof(el) === "undefined") || (typeof(strSelector) === "undefined")) { |
196 | // Parameters are required, m'kay? | 197 | // Parameters are required, m'kay? |
197 | return false; | 198 | return false; |
@@ -199,26 +200,26 @@ exports.NJUtils = Montage.create(Component, { | |||
199 | // You also have to use the right parameters. | 200 | // You also have to use the right parameters. |
200 | return false; | 201 | return false; |
201 | } | 202 | } |
202 | 203 | ||
203 | // First, get an empty clone of the parent. | 204 | // First, get an empty clone of the parent. |
204 | var myParent = el.parentNode; | 205 | var myParent = el.parentNode; |
205 | var clone = myParent.cloneNode(false); | 206 | var clone = myParent.cloneNode(false); |
206 | if (clone === null) { | 207 | if (clone === null) { |
207 | return false; | 208 | return false; |
208 | } | 209 | } |
209 | 210 | ||
210 | // If we're at the top of the DOM, our clone will be an htmlDocument. | 211 | // If we're at the top of the DOM, our clone will be an htmlDocument. |
211 | // htmlDocument has no tagName. | 212 | // htmlDocument has no tagName. |
212 | if (typeof(clone.tagName) !== "undefined") { | 213 | if (typeof(clone.tagName) !== "undefined") { |
213 | // create a bogus div to use as a base for querySelector | 214 | // create a bogus div to use as a base for querySelector |
214 | var temp = document.createElement("div"); | 215 | var temp = document.createElement("div"); |
215 | 216 | ||
216 | // Append the clone to the bogus div | 217 | // Append the clone to the bogus div |
217 | temp.appendChild(clone); | 218 | temp.appendChild(clone); |
218 | 219 | ||
219 | // Now we can use querySelector! Sweet. | 220 | // Now we can use querySelector! Sweet. |
220 | var selectorTest = temp.querySelector(strSelector); | 221 | var selectorTest = temp.querySelector(strSelector); |
221 | 222 | ||
222 | // What has querySelector returned? | 223 | // What has querySelector returned? |
223 | if (selectorTest === null) { | 224 | if (selectorTest === null) { |
224 | // No match, so recurse. | 225 | // No match, so recurse. |
@@ -232,7 +233,7 @@ exports.NJUtils = Montage.create(Component, { | |||
232 | return false; | 233 | return false; |
233 | } | 234 | } |
234 | } | 235 | } |
235 | 236 | ||
236 | }, | 237 | }, |
237 | 238 | ||
238 | // Returns the numerical value and unit string from a string. | 239 | // Returns the numerical value and unit string from a string. |
@@ -257,14 +258,14 @@ exports.NJUtils = Montage.create(Component, { | |||
257 | }, | 258 | }, |
258 | 259 | ||
259 | /* ================= Style methods ================= */ | 260 | /* ================= Style methods ================= */ |
260 | 261 | ||
261 | ///// Get computed height of element | 262 | ///// Get computed height of element |
262 | height : { | 263 | height : { |
263 | value: function(node, pseudo) { | 264 | value: function(node, pseudo) { |
264 | return node.ownerDocument.defaultView.getComputedStyle(node, pseudo).getPropertyValue('height'); | 265 | return node.ownerDocument.defaultView.getComputedStyle(node, pseudo).getPropertyValue('height'); |
265 | } | 266 | } |
266 | }, | 267 | }, |
267 | 268 | ||
268 | /* ================= Array methods ================= */ | 269 | /* ================= Array methods ================= */ |
269 | 270 | ||
270 | ///// Return an array from an array-like object | 271 | ///// Return an array from an array-like object |
@@ -273,9 +274,9 @@ exports.NJUtils = Montage.create(Component, { | |||
273 | return Array.prototype.slice.call(arrayLikeObj); | 274 | return Array.prototype.slice.call(arrayLikeObj); |
274 | } | 275 | } |
275 | }, | 276 | }, |
276 | 277 | ||
277 | /* ================= String methods ================= */ | 278 | /* ================= String methods ================= */ |
278 | 279 | ||
279 | ///// Return the last part of a path (e.g. filename) | 280 | ///// Return the last part of a path (e.g. filename) |
280 | getFileNameFromPath : { | 281 | getFileNameFromPath : { |
281 | value: function(path) { | 282 | value: function(path) { |
@@ -310,9 +311,9 @@ exports.NJUtils = Montage.create(Component, { | |||
310 | value: function(len) { | 311 | value: function(len) { |
311 | var length; | 312 | var length; |
312 | len ? length = len : length = 8; | 313 | len ? length = len : length = 8; |
313 | 314 | ||
314 | return Uuid.generate().substring(0,length); | 315 | return Uuid.generate().substring(0,length); |
315 | } | 316 | } |
316 | } | 317 | } |
317 | 318 | ||
318 | }); | 319 | }); |