pip-services3-commons-node
Version:
Portable abstractions and patterns for Pip.Services in Node.js
86 lines (79 loc) • 2.54 kB
text/typescript
/** @module convert */
/** @hidden */
let _ = require('lodash');
/**
* Converts arbitrary values into array objects.
*
* ### Example ###
*
* let value1 = ArrayConverter.toArray([1, 2]); // Result: [1, 2]
* let value2 = ArrayConverter.toArray(1); // Result: [1]
* let value2 = ArrayConverter.listToArray("1,2,3"); // Result: ["1", "2", "3"]
*/
export class ArrayConverter {
/**
* Converts value into array object.
* Single values are converted into arrays with a single element.
*
* @param value the value to convert.
* @returns array object or null when value is null.
*/
public static toNullableArray(value: any): any[] {
// Return null when nothing found
if (value == null) return null;
// Convert list
if (_.isArray(value))
return <any[]>value;
// Convert map
else if (_.isObject(value)) {
let array = [];
for (let prop in value)
array.push(value[prop]);
return array;
}
// Convert single values
else
return [value];
}
/**
* Converts value into array object with empty array as default.
* Single values are converted into arrays with single element.
*
* @param value the value to convert.
* @returns array object or empty array when value is null.
*
* @see [[toNullableArray]]
*/
public static toArray(value: any): any[] {
let result: any[] = ArrayConverter.toNullableArray(value);
return result || [];
}
/**
* Converts value into array object with specified default.
* Single values are converted into arrays with single element.
*
* @param value the value to convert.
* @param defaultValue default array object.
* @returns array object or default array when value is null.
*
* @see [[toNullableArray]]
*/
public static toArrayWithDefault(value: any, defaultValue: any[]): any[] {
let result: any[] = ArrayConverter.toNullableArray(value);
return result || defaultValue;
}
/**
* Converts value into array object with empty array as default.
* Strings with comma-delimited values are split into array of strings.
*
* @param value the list to convert.
* @returns array object or empty array when value is null
*
* @see [[toArray]]
*/
public static listToArray(value: any): any[] {
if (value == null) return [];
if (_.isString(value)) value = value.split(',');
return ArrayConverter.toArray(value);
}
}