| /** |
| * Copyright 2011 Rackspace |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| /** |
| * @param {Object} hash. |
| * @param {Array} ignored. |
| */ |
| function items(hash, ignored) { |
| ignored = ignored || null; |
| var k, rv = []; |
| |
| function is_ignored(key) { |
| if (!ignored || ignored.length === 0) { |
| return false; |
| } |
| |
| return ignored.indexOf(key); |
| } |
| |
| for (k in hash) { |
| if (hash.hasOwnProperty(k) && !(is_ignored(ignored))) { |
| rv.push([k, hash[k]]); |
| } |
| } |
| |
| return rv; |
| } |
| |
| |
| function findall(re, str) { |
| var match, matches = []; |
| |
| while ((match = re.exec(str))) { |
| matches.push(match); |
| } |
| |
| return matches; |
| } |
| |
| function merge(a, b) { |
| var c = {}, attrname; |
| |
| for (attrname in a) { |
| if (a.hasOwnProperty(attrname)) { |
| c[attrname] = a[attrname]; |
| } |
| } |
| for (attrname in b) { |
| if (b.hasOwnProperty(attrname)) { |
| c[attrname] = b[attrname]; |
| } |
| } |
| return c; |
| } |
| |
| exports.items = items; |
| exports.findall = findall; |
| exports.merge = merge; |