diff options
author | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
---|---|---|
committer | Michael Lando <ml636r@att.com> | 2017-06-09 03:19:04 +0300 |
commit | ed64b5edff15e702493df21aa3230b81593e6133 (patch) | |
tree | a4cb01fdaccc34930a8db403a3097c0d1e40914b /catalog-ui/app/scripts/utils/dictionary/dictionary.ts | |
parent | 280f8015d06af1f41a3ef12e8300801c7a5e0d54 (diff) |
[SDC-29] catalog 1707 rebase commit.
Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1
Signed-off-by: Michael Lando <ml636r@att.com>
Diffstat (limited to 'catalog-ui/app/scripts/utils/dictionary/dictionary.ts')
-rw-r--r-- | catalog-ui/app/scripts/utils/dictionary/dictionary.ts | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/catalog-ui/app/scripts/utils/dictionary/dictionary.ts b/catalog-ui/app/scripts/utils/dictionary/dictionary.ts deleted file mode 100644 index ef9a1bc4ea..0000000000 --- a/catalog-ui/app/scripts/utils/dictionary/dictionary.ts +++ /dev/null @@ -1,257 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -/** - - This code was copy from collections.ts lib - https://github.com/basarat/typescript-collections -**/ - -module Sdc.Utils{ - 'use strict'; - - // Used internally by dictionary - interface IDictionaryPair<K, V>{ - key: K; - value: V; - } - - export class Dictionary<K, V>{ - - /** - * Object holding the key-value pairs. - * @type {Object} - * @private - */ - private table: { [key: string]: IDictionaryPair<K, V> }; - //: [key: K] will not work since indices can only by strings in javascript and typescript enforces this. - - /** - * Number of elements in the list. - * @type {number} - * @private - */ - private nElements: number; - - /** - * Function used to convert keys to strings. - * @type {function(Object):string} - * @private - */ - private toStr: (key: K) => string; - - - /** - * Creates an empty dictionary. - * @class <p>Dictionaries map keys to values; each key can map to at most one value. - * This implementation accepts any kind of objects as keys.</p> - * - * <p>If the keys are custom objects a function which converts keys to unique - * strings must be provided. Example:</p> - * <pre> - * function petToString(pet) { - * return pet.name; - * } - * </pre> - * @constructor - * @param {function(Object):string=} toStrFunction optional function used - * to convert keys to strings. If the keys aren"t strings or if toString() - * is not appropriate, a custom function which receives a key and returns a - * unique string must be provided. - */ - constructor(toStrFunction?: (key: K) => string) { - this.table = {}; - this.nElements = 0; - this.toStr = toStrFunction || this.defaultToString; - } - - - /** - copy from angular.js isUndefined - */ - private isUndefined = (value: any):boolean => { - return typeof value === 'undefined'; - } - - defaultToString = (item: any): string => { - return item.toString(); - } - - /** - * Returns the value to which this dictionary maps the specified key. - * Returns undefined if this dictionary contains no mapping for this key. - * @param {Object} key key whose associated value is to be returned. - * @return {*} the value to which this dictionary maps the specified key or - * undefined if the map contains no mapping for this key. - */ - getValue = (key: K): V => { - let pair: IDictionaryPair<K, V> = this.table[this.toStr(key)]; - if (this.isUndefined(pair)) { - return undefined; - } - return pair.value; - } - - - /** - * Associates the specified value with the specified key in this dictionary. - * If the dictionary previously contained a mapping for this key, the old - * value is replaced by the specified value. - * @param {Object} key key with which the specified value is to be - * associated. - * @param {Object} value value to be associated with the specified key. - * @return {*} previous value associated with the specified key, or undefined if - * there was no mapping for the key or if the key/value are undefined. - */ - setValue = (key: K, value: V): V => { - - if (this.isUndefined(key) || this.isUndefined(value)) { - return undefined; - } - - let ret: V; - let k = this.toStr(key); - let previousElement: IDictionaryPair<K, V> = this.table[k]; - if (this.isUndefined(previousElement)) { - this.nElements++; - ret = undefined; - } else { - ret = previousElement.value; - } - this.table[k] = { - key: key, - value: value - }; - return ret; - } - - /** - * Removes the mapping for this key from this dictionary if it is present. - * @param {Object} key key whose mapping is to be removed from the - * dictionary. - * @return {*} previous value associated with specified key, or undefined if - * there was no mapping for key. - */ - remove = (key: K): V => { - let k = this.toStr(key); - let previousElement: IDictionaryPair<K, V> = this.table[k]; - if (!this.isUndefined(previousElement)) { - delete this.table[k]; - this.nElements--; - return previousElement.value; - } - return undefined; - } - - /** - * Returns an array containing all of the keys in this dictionary. - * @return {Array} an array containing all of the keys in this dictionary. - */ - keys = (): K[] => { - let array: K[] = []; - for (let name in this.table) { - if (this.table.hasOwnProperty(name)) { - let pair: IDictionaryPair<K, V> = this.table[name]; - array.push(pair.key); - } - } - return array; - } - - /** - * Returns an array containing all of the values in this dictionary. - * @return {Array} an array containing all of the values in this dictionary. - */ - values = (): V[] => { - let array: V[] = []; - for (let name in this.table) { - if (this.table.hasOwnProperty(name)) { - let pair: IDictionaryPair<K, V> = this.table[name]; - array.push(pair.value); - } - } - return array; - } - - /** - * Executes the provided function once for each key-value pair - * present in this dictionary. - * @param {function(Object,Object):*} callback function to execute, it is - * invoked with two arguments: key and value. To break the iteration you can - * optionally return false. - */ - forEach = (callback: (key: K, value: V) => any): void => { - for (let name in this.table) { - if (this.table.hasOwnProperty(name)) { - let pair: IDictionaryPair<K, V> = this.table[name]; - let ret = callback(pair.key, pair.value); - if (ret === false) { - return; - } - } - } - } - - /** - * Returns true if this dictionary contains a mapping for the specified key. - * @param {Object} key key whose presence in this dictionary is to be - * tested. - * @return {boolean} true if this dictionary contains a mapping for the - * specified key. - */ - containsKey = (key: K): boolean => { - return !this.isUndefined(this.getValue(key)); - } - - /** - * Removes all mappings from this dictionary. - * @this {Dictionary} - */ - clear = () => { - - this.table = {}; - this.nElements = 0; - } - - /** - * Returns the number of keys in this dictionary. - * @return {number} the number of key-value mappings in this dictionary. - */ - size = (): number => { - return this.nElements; - } - - /** - * Returns true if this dictionary contains no mappings. - * @return {boolean} true if this dictionary contains no mappings. - */ - isEmpty = (): boolean => { - return this.nElements <= 0; - } - - toString = (): string => { - let toret = "{"; - this.forEach((k, v) => { - toret = toret + "\n\t" + k.toString() + " : " + v.toString(); - }); - return toret + "\n}"; - } - } // End of dictionary - -} |