@atomist/rugs
Version:
Helper functions for Rugs
48 lines (42 loc) • 1.3 kB
text/typescript
/*
* Copyright © 2017 Atomist, Inc.
*
* 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.
*/
/*
General-purpose utility methods.
*/
export function isFunction(obj) {
return !!(obj && obj.constructor && obj.call && obj.apply);
}
export function isArray(obj) {
return obj.constructor === Array;
}
export function isPrimitive(obj) {
return ["string", "number", "boolean"].indexOf(typeof obj);
}
/**
* Clone an object, without ES6.
* @param a object to clone
*/
export function clone(a): any {
const cloneObj = new a.constructor();
for (const attribut in this) {
if (typeof this[attribut] === "object") {
cloneObj[attribut] = this.clone();
} else {
cloneObj[attribut] = this[attribut];
}
}
return cloneObj;
}