AnP/Public/ecma/Utils/Check.ecma.js

137 lines
2.9 KiB
JavaScript

"use strict";
import {Patterns} from "./Patterns.ecma.js";
/**
* @class
* @constructor
* @returns {void}
* @access public
*/
export const Check = (function(){
/**
* @constructs Check
* @returns {void}
* @access private
*/
const Check = function(){};
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_array = item => item instanceof Array;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_dictionary = item => item && item.constructor == Object;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_string = item => typeof item == "string";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_key = item => Check.is_string(item) && Patterns.RE_KEY.test(item);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_pascal_key = item => Check.is_string(item) && Patterns.RE_PASCAL_KEY.test(item);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_function = item => typeof item == "function";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_null_or_undefined = item => item === null || item === undefined;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_html_item = item => item && (item.tagName || item.nodeName);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_html_items = item => item instanceof NodeList;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_bool = item => typeof item == "boolean";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_json_object = item => Check.is_array(item) || Check.is_dictionary(item);
/**
* @param {?any} items
* @returns {boolean}
* @access public
* @static
*/
Check.is_array_string = items => Check.is_array(items) && items.every(Check.is_string);
/**
* @param {!string} key
* @param {!string} [mark = "AnP"]
* @returns {boolean}
* @access public
* @static
*/
Check.is_key_mark = (key, mark = "AnP") => key.slice(0, mark.length + 1) == mark + "_" && (
key.slice(-4) == "_end" ||
key.slice(-6) == "_start"
);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_number = item => typeof item == "number";
return Check;
})();