This is a collection of utility classes used for JS development.
Given an array, produces its string representation.
-
setPrefix()
Sets a prefix to be added to the resulting string.
arrayStringifier.setPrefix(
prefix, // String.
addIfArrayLength // Boolean. If true the prefix will be added ONLY if the array is not empty. Default: true.
);
-
setArray()
Sets an array to stringify.
arrayStringifier.setArray(array);
-
setSeparator()
Sets a separator to be used.
arrayStringifier.setSeparator(
separator // String
);
-
setElementProcessor()
Sets an element processor for fine-grained per-element processing. An element processor is a function the return value of which will be used to determine the value and optionally the separator for the current array element. If an element processor returns an object with methods getElement()
and getSeparator()
they will be used to get the value and the separator for the current array element. If the method getElement()
is not present in the return value, the latter will be used as the value for the current array element as is and the separator set by setSeparator()
will be used.
const arrayStringifier = new ArrayStringifier();
arrayStringifier
.setArray([1, 2, 3, 4])
.setElementProcessor(element => element % 2 ? "Something odd" : element)
.process(); // Something odd, 2, Something odd, 4
arrayStringifier
.setArray([1, 2, 3, 4])
.setElementProcessor(element => !(element % 2) ? element : element == 1 ? {
getElement() {
return "";
},
getSeparator() {
return "";
}
} : "Something odd")
.process(); // 2, Something odd, 4
-
setPostfix()
Sets a postfix to be added to the resulting string.
arrayStringifier.setPostfix(
postfix, // String.
addIfArrayLength // Boolean. If true the postfix will be added ONLY if the array is not empty. Default: true.
);
Provides a way to get and set objects properties with dot separated strings. All methods are static
.
-
getProperty()
Gets a property value.
DottedStringObject.getProperty(
object, // Object.
fullPropertyName, // String. A dot separated full property name.
defaultValue // Object. This value is returned if the property doesn't exist.
);
Example:
const const obj = {
f1: 10,
obj1: {
f1: 20
}
};
DottedStringObject.getProperty(obj, "f1"); // 10
DottedStringObject.getProperty(obj, "f1", "aaa"); // 10
DottedStringObject.getProperty(obj, "obj1.f1"); // 20
DottedStringObject.getProperty(obj, "obj1.f2", "default"); // default
-
setProperty()
Sets a property value.
DottedStringObject.setProperty(
object, // Object.
fullPropertyName, // String. A dot separated full property name.
value // Object. A value to set.
);
Example:
const obj = {};
DottedStringObject.setProperty(obj, "f1", 10); // { f1: 10 }
DottedStringObject.setProperty(obj, "obj1", 20); // { f1: 10, obj1: 20 }
DottedStringObject.setProperty(obj, "obj1", {}); // { f1: 10, obj1: {} }
DottedStringObject.setProperty(obj, "obj1.f2", 30); // { f1: 10, obj1: { f2: 30 } }
A collection of different utility methods. All the methods in this class are static
.
-
round()
Rounds value
to decimals
digits after the decimal point (thanks, MarkG!). symmetric
is used to achieve the same functionality both for negative and positive numbers.
StaticUtils.round(value, decimals, symmetric);
StaticUtils.round(10.2); // 10.2
StaticUtils.round(10.2, 0); // 10
StaticUtils.round(10.5, 0); // 11
StaticUtils.round(10.523, 1); // 10.5
StaticUtils.round(10.525, 2); // 10.53
StaticUtils.round(-1.5, 0); // -1
StaticUtils.round(-1.5, 0, true); // -2
-
encodedUtf8ToByteArray()
Converts the passed utf8-encoded string to a byte array.
import utf8 from "utf8";
StaticUtils.encodedUtf8ToByteArray(
utf8.encode("abcфыва")); // [ 97, 98, 99, 209, 132, 209, 139, 208, 178, 208, 176 ]
-
ensureBounds()
Ensures min <= value <= max
.
StaticUtils.ensureBounds(value, min, max);
StaticUtils.ensureBounds(10, 2, 18); // 10
StaticUtils.ensureBounds(100, 2, 18); // 18
StaticUtils.ensureBounds(100, 200, 1800); // 200
-
pushAndReturnElement()
Pushes element
to array
and returns element
.
StaticUtils.pushAndReturnElement(array, element);
-
quoteIfString()
Quotes value
if it's a string, using quotingSymbol
.
StaticUtils.quoteIfString(10); // 10
StaticUtils.quoteIfString("10"); // "10"
StaticUtils.quoteIfString("10", "'"); // '10'
-
safeQuoteIfString()
Invokes quoteIfString()
passing value
and quotingSymbol
to it if quoteIfString
is true
.
StaticUtils.safeQuoteIfString(value, quoteIfString, quotingSymbol);
-
objectToArray()
Converts object
to an array and returns it. Nested objects are not parsed.
StaticUtils.objectToArray({a: "10", b: 20}); // [ '10', 20 ]
StaticUtils.objectToArray({a: "10", b: 20, c: {a: 10}}); // [ '10', 20, { a: 10 } ]
-
escapeRegExp()
Given a string, escapes all occurences of symbols that have special meaning in regular expressions.
StaticUtils.escapeRegExp("a"); // a
StaticUtils.escapeRegExp("*a^"); // \*a\^
-
replaceAll()
Implements a "replace all" functionality for a string.
StaticUtils.replaceAll("abc", "b", "10"); // a10c
StaticUtils.replaceAll("a^b*c", "^b", "10"); // a10*c
-
deg2Rad()
Converts degrees to radians.
-
color()
StaticUtils.color("pink"); // 0xffc0cb00
StaticUtils.color("non-existent-color"); // undefined
StaticUtils.color(123); // 123
-
random()
Generates a random number using Math.random()
.
StaticUtils.random(1.5, 2.5); // A random number between 1.5 and 2.5.
StaticUtils.random(10, 12, true); // An integer random number in the half-open range [10, 12).
StaticUtils.random(10, 12, true, true); // An integer random number in the closed-range [10, 12].
-
verify(condition, errorMessage)
Evaluates the passed boolean condition
and throws an error with the errorMessage
text if condition
is false.