Have ideas to improve npm?Join in the discussion! »

teo

0.3.0 • Public • Published

teo

Functions to test/check, filter, find and process/transform objects.

NPM version Build Status Built with Grunt

Installation

Node

npm install teo

Component

component install gamtiq/teo

Jam

jam install teo

Bower

bower install teo

JSPM

jspm install teo

SPM

spm install teo

AMD, <script>

Use dist/teo.js or dist/teo.min.js (minified version).

Usage

Node, Component, JSPM, SPM

var teo = require("teo");

Duo

var teo = require("gamtiq/teo");
...

Jam

require(["teo"], function(teo) {
    ...
});

JSPM

System.import("teo").then(function(teo) {
    ...
});

AMD

define(["path/to/dist/teo.js"], function(teo) {
    ...
});

Bower, <script>

 
<!-- Use bower_components/teo/dist/teo.js if the library was installed by Bower -->
 
<script type="text/javascript" src="path/to/dist/teo.js"></script>
<script type="text/javascript">
    // teo is available via teo field of window object
    ...
</script> 

Examples

teo.isObject(teo);   // true
teo.isObject(null);   // false
teo.isObject([]);   // false
 
teo.isEmpty(teo);   // false
teo.isEmpty([], true);   // true
 
var obj = {};
obj[Symbol("a")] = null;
teo.isEmpty(obj);   // false
teo.isEmpty(obj, true);   // true
 
teo.test({}, "true");   // true
teo.test({}, "empty");   // true
teo.test([], "empty");   // true
teo.test(teo, "empty");   // false
teo.test([0], "empty");   // false
 
teo.test({}, {});   // true
teo.test({a: 1}, {a: 2});   // false
teo.test({a: 1, b: 2, c: 3, d: 4}, {c: 3, a: 1});   // true
 
teo.test(1, teo.isObject);   // false
teo.test("", false);   // true
 
var personList = [
    {name: "Adam", age: 27, married: true, children: 1},
    {name: "Eva", age: 23, married: true, children: 1},
    {name: "Carl", age: 59, married: true, children: 3},
    {name: "Daniel", age: 17, married: false, children: 0},
    {name: "Gloria", age: 28, married: false, children: 1},
    {name: "Viola", age: 35, married: true, children: 4},
    {name: "Leonardo", age: 61, married: false, children: 1},
    {name: "Patricia", age: 44, married: false, children: 2}
];
 
teo.filterList([0, "", true, "ret"], "true");   // [true, "ret"]
teo.filterList([3, -4, 2, 10, 7, -9, 5], function(n) {return n >= 3;}, {count: true});   // 4
teo.filterList(personList,
                function(person) {return person.age > 30;},
                {transform: function(person) {return person.name;}});   // ["Carl", "Viola", "Leonardo", "Patricia"]
                            
teo.findItemIndex(personList, {married: false, children: 1});   // 4
teo.findItem(personList, function(person) {return person.age > 30 && ! person.married;});   // {name: "Leonardo", age: 61, married: false, children: 1}
 
teo.map({a: 1, b: 2, c: null, d: "delta", e: null, f: undefined},
        function(context) {return false;},
        {filter: {value: null}});          // {a: 1, b: 2, c: false, d: "delta", e: false, f: undefined}
 
teo.map({a5: 1, b3: "center", c5: null, d: "delta", e8: -5, field9: 99, g99: -38},
        null,
        {
            rename: function(context) {
                var sField = context.field,
                    match = sField.match(/^\w\d+$/);
                return typeof context.value === "number" && match
                            ? "n_" + match[0]
                            : sField;
            }
        });   // {n_a5: 1, b3: "center", c5: null, d: "delta", n_e8: -5, field9: 99, n_g99: -38}
 
 
function convert(context) {
    var value = context.value,
        bNoValue = value == null,
        sType = typeof value;
    if (context.test) {
        return bNoValue || sType === "object" || (sType === "string" && /^-?\d+$/.test(value));
    }
    else {
        return bNoValue
                ? 0
                : Number(value);
    }
}
 
teo.map({
            a: "abc",
            b: "25",
            c: {
                d: null,
                e: "eclipse",
                f: {
                    g: undefined,
                    h: "-59",
                    i: "JS 2015"
                }
            }
        },
        convert,
        {filter: convert, recursion: true});
// returns
// {
//      a: "abc",
//      b: 25,
//      c: {
//          d: 0,
//          e: "eclipse",
//          f: {
//              g: 0,
//              h: -59,
//              i: "JS 2015"
//          }
//      }
//  }

See tests for additional examples.

API

isObject(value): Boolean

Check whether value is real object (not array nor function).

isEmpty(obj: Object, [ignoreSymbolFields: Boolean]): Boolean

Check whether object do not contain any fields.

test(obj: Object, filter: Object | Function | Array | String): Boolean

Check whether object conforms to specified condition/filter.

filterList(list: Array, filter: Object | Function | Array | String, [settings: Object]): Array | Integer

Form new array containing elements from the source array which conform to the given condition (filter) or calculate quantity of such elements.

findItemIndex(list: Array, filter: Object | Function | Array | String): Integer

Return the index of the first element in the array that conforms to the given condition (filter).

findItem(list: Array, filter: Object | Function | Array | String): Any

Return the first element in the array that conforms to the given condition (filter).

map(source: Object, action: Function | Object, [settings: Object]): Object

Execute the specified action for fields of the object and return the object containing results of processing.

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-2015 Denis Sikuler
Licensed under the MIT license.

Install

npm i teo

DownloadsWeekly Downloads

8

Version

0.3.0

License

MIT

Last publish

Collaborators

  • avatar