Initial Commit ...
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
//
|
||||
//#region Imports ...
|
||||
const XValueTools = require('../tools/x-value.tools');
|
||||
const XBaseDescriptor = require('./x-base.descriptor');
|
||||
//#endregion
|
||||
|
||||
/**
|
||||
* check an object is valid key/value object ...
|
||||
* @param {any} object proposed object to check ...
|
||||
* @returns
|
||||
*/
|
||||
function isDescriptor(object) {
|
||||
//
|
||||
let result = false;
|
||||
result = object &&
|
||||
object.hasOwnProperty('key') &&
|
||||
object.hasOwnProperty('type') &&
|
||||
object.hasOwnProperty('value');
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieve base or filled KeyValueProvider object instance ...
|
||||
*
|
||||
* @param {any} value value provider object instance ...
|
||||
* @returns an instance of KeyValueDescriptor ...
|
||||
*/
|
||||
function createDescriptor(value) {
|
||||
//
|
||||
const result = {
|
||||
key: '',
|
||||
value: undefined,
|
||||
type: XBaseDescriptor.ContentTypes.Unknown,
|
||||
};
|
||||
|
||||
//
|
||||
//#region Apply Value ...
|
||||
if (value) {
|
||||
//
|
||||
//#region key ...
|
||||
if (XValueTools.isValidArg(value.key)) {
|
||||
result.key = value.key;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//
|
||||
//#region type ...
|
||||
if (
|
||||
XValueTools.isValidArg(value.type) &&
|
||||
XBaseDescriptor.isValidContentType(value.type)
|
||||
) {
|
||||
result.type = value.type;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//
|
||||
//#region value ...
|
||||
if (value.value) {
|
||||
result.value = value.value;
|
||||
}
|
||||
//#endregion
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* converts an instance of Descriptor to Expression ...
|
||||
*
|
||||
* @param descriptor an instance of KeyValueDescriptor ...
|
||||
* @param {string} assignSymbol property assign symbol ...
|
||||
* @returns creator string ...
|
||||
*/
|
||||
function toExpression(
|
||||
descriptor = createDescriptor(),
|
||||
assignSymbol = ''
|
||||
) {
|
||||
//
|
||||
let result = '';
|
||||
|
||||
//
|
||||
// Validate Args ...
|
||||
if (!isDescriptor(descriptor)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Normalize Assign Symbol ...
|
||||
assignSymbol = !XValueTools.isValidArg(assignSymbol) ?
|
||||
'' :
|
||||
assignSymbol;
|
||||
|
||||
//
|
||||
// Handle Key ...
|
||||
if (descriptor.key !== XBaseDescriptor.ExpressionKeys.IGNORED_KEY) {
|
||||
result += descriptor.key + assignSymbol + ' ';
|
||||
}
|
||||
|
||||
//
|
||||
// Handle Value ...
|
||||
const valueExpression = XBaseDescriptor.toExpression(descriptor);
|
||||
result += valueExpression;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Module Exports ...
|
||||
module.exports = {
|
||||
isDescriptor,
|
||||
toExpression,
|
||||
createDescriptor,
|
||||
}
|
||||
Reference in New Issue
Block a user