adam
Functions to create, process and test objects.
Installation
Node
npm install adam
Component
component install gamtiq/adam
Jam
jam install adam
Bower
bower install adam
SPM
spm install adam
AMD, <script>
Use dist/adam.js
or dist/adam.min.js
(minified version).
Usage
Node, Component, SPM
var adam = require("adam");
Jam
require(["adam"], function(adam) {
...
});
AMD
define(["path/to/dist/adam.js"], function(adam) {
...
});
Bower, <script>
<!-- Use bower_components/adam/dist/adam.js if the library was installed by Bower -->
<script type="text/javascript" src="path/to/dist/adam.js"></script>
<script type="text/javascript">
// adam is available via adam field of window object
...
</script>
Examples
function inc(data) {
return ++data.value;
}
var obj = {a: 1, b: 2, c: 3, d: 4, e: 5};
adam.getClass([8]); // "Array"
adam.getType(null); // "null"
adam.isKindOf(17, "integer"); // true
adam.isKindOf(NaN, "!number"); // true
adam.checkField(obj, "c", ["positive", "odd"]); // true
adam.checkField(obj, "b", ["real", /^7/], {filterConnect: "or"}); // false
adam.getFreeField({a5: 5, a2: 2, a7: 7, a3: 3}, {prefix: "a", startNum: 2}); // "a4"
adam.getSize(obj); // 5
adam.getSize(obj, {filter: "even"}); // 2
adam.isSizeMore(obj, 5); // false
adam.isEmpty({}); // true
adam.getFields(obj); // ["a", "b", "c", "d", "e"]
adam.getFields(obj, {filter: function(value) {return value < 4;}}); // ["a", "b", "c"]
adam.getFields(obj, {filter: {field: /^[d-h]/}}); // ["d", "e"]
adam.getValues(obj); // [1, 2, 3, 4, 5]
adam.getValues(obj, {filter: {field: /a|c/}}); // [1, 3]
adam.getValueKey(obj, 3); // "c"
adam.fromArray([{id: "a", value: 11}, {id: "b", value: 7}, {id: "c", value: 10}], "id"); // {a: {id: "a", value: 11}, b: {id: "b", value: 7}, c: {id: "c", value: 10}}
adam.split(obj, ["a", "d"]); // [{a: 1, d: 4}, {b: 2, c: 3, e: 5}]
adam.split(obj, null, {filter: "odd"}); // [{a: 1, c: 3, e: 5}, {b: 2, d: 4}]
adam.split(obj, null, {filter: ["even", /3/], filterConnect: "or"}); // [{b: 2, c: 3, d: 4}, {a: 1, e: 5}]
adam.remove({a: 1, b: "2", c: 3}, "string"); // {a: 1, c: 3}
adam.remove([1, 2, 3, 4, 5], "even"); // [1, 3, 5]
adam.empty({x: -1, y: 9}); // {}
adam.reverse({a: "x", b: "files"}); // {x: "a", files: "b"}
adam.reverse("eval"); // "lave"
adam.transform("7.381", "string"); // 7
adam.copy(obj, {b: "no", z: "a"}); // {a: 1, b: 2, c: 3, d: 4, e: 5, z: "a"}
adam.copy(obj, {b: "no", z: "a"}, {filter: "odd"}); // {a: 1, b: "no", c: 3, e: 5, z: "a"}
adam.copy(obj, {b: "no", z: "a"}, {filter: "even", transform: inc}); // {b: 3, d: 5, z: "a"}
adam.change({a: 1, b: 2, c: 3}, "reverse"); // {a: -1, b: -2, c: -3}
adam.change({a: 10, b: 28, c: -3, d: null, e: "zero = 0"}, "empty", {filter: /0/}); // {a: 0, b: 28, c: -3, d: null, e: ""}
adam.change([1, 2, 3, 4, 5], "reverse", {filter: "even"}); // [1, -2, 3, -4, 5]
adam.map(obj, "reverse", {filter: "odd"}); // {a: -1, c: -3, e: -5}
adam.map(["1", "2", "3"], "number"); // [1, 2, 3]
See test/adam.js
for additional examples.
API
change(obj: Object, action: Function | String, [settings: Object]): Object
Change all or filtered fields of object, applying specified action/transformation.
checkField(obj: Object, field: String, filter: Any, [settings: Object]): Boolean
Check whether the field of given object corresponds to specified condition(s) or filter(s).
copy(source: Object, target: Object, [settings: Object]): Object
Copy all or filtered fields from source object into target object, applying specified transformation if necessary.
empty(value: Any): Any
Empty the given value.
fromArray(list: Array, [keyField: Function | String], [settings: Object]): Object
Create object (map) from list of objects.
getClass(value: Any): String
Return class of given value (namely value of internal property [[Class]]
).
getFields(obj: Object, [settings: Object]): Array
Return list of all or filtered fields of specified object.
getFreeField(obj: Object, [settings: Object]): String
Return name of first free (absent) field of specified object, that conforms to the following pattern: <prefix><number>
getSize(obj: Object, [settings: Object]): Integer
Return number of all or filtered fields of specified object.
getType(value: Any): String
Return type of given value.
getValueKey(obj: Object, value, [all: Boolean]): Array | String | null
Return the name of field (or list of names) having the specified value in the given object.
getValues(obj: Object, [settings: Object]): Array
Return list of all or filtered field values of specified object.
isEmpty(value: Any): Boolean
Check whether given value is an empty value i.e. null
, undefined
, 0
, empty object, empty array or empty string.
isKindOf(value: Any, kind: String): Boolean
Check whether given value has (or does not have) specified kind (type or class).
isSizeMore(obj: Object, qty: Number, [settings: Object]): Boolean
Check whether number of all or filtered fields of specified object is more than the given value.
map(obj: Object, action: Function | String, [settings: Object]): Object
Create new object containing all or filtered fields of the source object/array, applying specified action/transformation for field values.
remove(obj: Array | Object, filter: Any, [settings: Object]): Array | Object
Remove filtered fields/elements from specified object/array.
reverse(value: Any): Any
Reverse or negate the given value.
split(obj: Object, firstObjFields: Array | Object | null, [settings: Object]): Array
Divide given object into 2 parts: the first part includes specified fields, the second part includes all other fields.
transform(value: Any, action: String): Any
Transform the given value applying the specified operation.
See doc
folder for details.
Related projects
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
License
Copyright (c) 2014 Denis Sikuler
Licensed under the MIT license.