153 lines
4.4 KiB
JavaScript
Executable File
153 lines
4.4 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
define([
|
|
'underscore'
|
|
], function (_) {
|
|
'use strict';
|
|
|
|
var jsonRe = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/;
|
|
|
|
return {
|
|
|
|
/**
|
|
* Attempts to convert string to one of the primitive values,
|
|
* or to parse it as a valid json object.
|
|
*
|
|
* @param {String} str - String to be processed.
|
|
* @returns {*}
|
|
*/
|
|
castString: function (str) {
|
|
try {
|
|
str = str === 'true' ? true :
|
|
str === 'false' ? false :
|
|
str === 'null' ? null :
|
|
+str + '' === str ? +str :
|
|
jsonRe.test(str) ? JSON.parse(str) :
|
|
str;
|
|
} catch (e) {
|
|
}
|
|
|
|
return str;
|
|
},
|
|
|
|
/**
|
|
* Splits string by separator if it's possible,
|
|
* otherwise returns the incoming value.
|
|
*
|
|
* @param {(String|Array|*)} str - String to split.
|
|
* @param {String} [separator=' '] - Seperator based on which to split the string.
|
|
* @returns {Array|*} Splitted string or the incoming value.
|
|
*/
|
|
stringToArray: function (str, separator) {
|
|
separator = separator || ' ';
|
|
|
|
return typeof str === 'string' ?
|
|
str.split(separator) :
|
|
str;
|
|
},
|
|
|
|
/**
|
|
* Converts the incoming string which consists
|
|
* of a specified delimiters into a format commonly used in form elements.
|
|
*
|
|
* @param {String} name - The incoming string.
|
|
* @param {String} [separator='.']
|
|
* @returns {String} Serialized string.
|
|
*
|
|
* @example
|
|
* utils.serializeName('one.two.three');
|
|
* => 'one[two][three]';
|
|
*/
|
|
serializeName: function (name, separator) {
|
|
var result;
|
|
|
|
separator = separator || '.';
|
|
name = name.split(separator);
|
|
|
|
result = name.shift();
|
|
|
|
name.forEach(function (part) {
|
|
result += '[' + part + ']';
|
|
});
|
|
|
|
return result;
|
|
},
|
|
|
|
/**
|
|
* Checks wether the incoming value is not empty,
|
|
* e.g. not 'null' or 'undefined'
|
|
*
|
|
* @param {*} value - Value to check.
|
|
* @returns {Boolean}
|
|
*/
|
|
isEmpty: function (value) {
|
|
return value === '' || _.isUndefined(value) || _.isNull(value);
|
|
},
|
|
|
|
/**
|
|
* Adds 'prefix' to the 'part' value if it was provided.
|
|
*
|
|
* @param {String} prefix
|
|
* @param {String} part
|
|
* @returns {String}
|
|
*/
|
|
fullPath: function (prefix, part) {
|
|
return prefix ? prefix + '.' + part : part;
|
|
},
|
|
|
|
/**
|
|
* Splits incoming string and returns its' part specified by offset.
|
|
*
|
|
* @param {String} parts
|
|
* @param {Number} [offset]
|
|
* @param {String} [delimiter=.]
|
|
* @returns {String}
|
|
*/
|
|
getPart: function (parts, offset, delimiter) {
|
|
delimiter = delimiter || '.';
|
|
parts = parts.split(delimiter);
|
|
offset = this.formatOffset(parts, offset);
|
|
|
|
parts.splice(offset, 1);
|
|
|
|
return parts.join(delimiter) || '';
|
|
},
|
|
|
|
/**
|
|
* Converts nameThroughCamelCase to name-through-minus
|
|
*
|
|
* @param {String} string
|
|
* @returns {String}
|
|
*/
|
|
camelCaseToMinus: function camelCaseToMinus(string) {
|
|
return ('' + string)
|
|
.split('')
|
|
.map(function (symbol, index) {
|
|
return index ?
|
|
symbol.toUpperCase() === symbol ?
|
|
'-' + symbol.toLowerCase() :
|
|
symbol :
|
|
symbol.toLowerCase();
|
|
})
|
|
.join('');
|
|
},
|
|
|
|
/**
|
|
* Converts name-through-minus to nameThroughCamelCase
|
|
*
|
|
* @param {String} string
|
|
* @returns {String}
|
|
*/
|
|
minusToCamelCase: function minusToCamelCase(string) {
|
|
return ('' + string)
|
|
.split('-')
|
|
.map(function (part, index) {
|
|
return index ? part.charAt(0).toUpperCase() + part.slice(1) : part;
|
|
})
|
|
.join('');
|
|
}
|
|
};
|
|
});
|