jbj-array

1.0.0 • Public • Published

JBJ array module

JBJ array module: complex actions implying arrays (mapping, mappingVar, zip, array2object, arrays2objects, coalesce, substring, getindex, getindexvar).

Contributors

Installation

$ npm install jbj-array

Usage

This JBJ module cannot be used alone. JBJ has to be installed.

var JBJ = require('jbj');
JBJ.use(require('jbj-array'));

Tests

Use mocha to run the tests.

$ npm install
$ npm test

Actions

Once the module is declared as used for JBJ, you can use the following actions:

mapping: object

Replace a value by the matching value in the object.

{
  "set": "one",
  "mapping": {
    "one": 1
  }
}
// output: 1
{
  "set": "FR",
  "mapping": {
    "US": "United States of America",
    "FR": "France"
  }
}
// output: "France"

Can also replace the values of an array with the matching values in the object.

{
  "set": [1, 2],
  "mapping": ["a","b","c"]
}
// output: ["b","c"]
{
  "set": ["a", "b"],
  "mapping": {
    "a": "Aha!",
    "b": "Baby"
  }
}
// output: ["Aha!","Baby"]

mappingVar: ["input","table"]

alias: combine

Replace the content of the input variable according to the content of the table variable.

var input = {
  "arg": { "a": "Aha!", "b": "Baby"},
  "input": "a"
};
var stylesheet = {
  "mappingVar": ["input", "arg"]
};
var output = JBJ.renderSync(stylesheet, input);
// output "Aha!";

array2object: [key, value]

Convert an array, which items have key and value properties, to an associative array (or object), which key properties are key values and values are value values.

Note: when the parameter is not a two items array, its default value is ["_id","value"].

Ex:

var stylesheet = {
  "set": [
    {
      "_id": "2007",
      "value": 538
    }, {
      "_id": "2008",
      "value": 577
    }, {
      "_id": "2009",
      "value": 611
  }],
  "array2object": true
};
// output = { "2007": 538, "2008": 577, "2009": 611 }
 
var stylesheet = {
  "set": [
    {
      "key": "2007",
      "val": 538
    }, {
      "key": "2008",
      "val": 577
    }, {
      "key": "2009",
      "val": 611
  }],
  "array2object": ["key","val"]
};
// output = { "2007": 538, "2008": 577, "2009": 611 }

arrays2objects: [key, value]

Convert an array of arrays (of 2 items), to an array of objects, where the first key if key and the second value). Defailt value of key: _id, default value of value: value.

Note: this is useful to prepare data from a CSV file to be treated with array2object.

Ex:

var stylesheet = {
  "set": [ [ "Afghanistan", "AFG" ],
           [ "Aland Islands", "ALA" ] ],
  "arrays2objects": ["key", "val"]
};
// output: [ { "key": "Afghanistan", "val": "AFG"},
//           { "key": "Aland Islands", "val": "ALA"} ]
var stylesheet = {
  "set": [ [ "Afghanistan", "AFG" ],
           [ "Aland Islands", "ALA" ] ],
  "arrays2objects": true
};
// output: [ { "_id": "Afghanistan", "value": "AFG"},
//           { "_id": "Aland Islands", "value": "ALA"} ]

zip: ["array1","array2"]

Join two arrays (which elements have an _id and a value keys).

var stylesheet = {
  "set": {
    "array1": [{"_id": "1", "value": 1},  {"_id": "2", "value": 2}],
    "array2": [{"_id": "1", "value": 10}, {"_id": "2", "value": 20}]
  },
  "zip": [ "array1", "array2" ]
};
var output = JBJ.renderSync(stylesheet);
// output: [ { _id: '1', array1: 1, array2: 10 },
//           { _id: '2', array1: 2, array2: 20 } ]
 

coalesce: none

Get the first non-undefined value

    var stylesheet = {
        "set" : [null, undefined, null, "a", "b"],
        "coalesce": true
    };
    // output : "a"

substring: [offset]|[offset, length]

aliases : substr

    var stylesheet = {
      "set"       : "20150310",
      "substring" : [4,2]
    };
    // output : "03"

getindex: property | index

aliases : getProperty, getproperty, getIndex

Get a property of an object, or an item of an array.

var stylesheet = {
  "set"        : [ "a", "b", "c" ],
  "getindex": "2"
};
// output : "c"
var stylesheet = {
  "set"        : { "a": 0, "b": 1, "c":2 },
  "getproperty": "b"
};
// output : 1

getindexvar: [ arrayName | objectName , propertyName | indexName ]

aliases : getPropertyVar, getpropertyvar, getIndexVar

Get a property of an object, or an item of an array, like getindex, but using variables.

var stylesheet = {
  "set": {
    "i": 1,
    "t": ["a","b","c"]
  },
  "getIndexVar": ["t", "i"]
};
// output : "b"
var stylesheet = {
  "set": {
    "i" : "b",
    "o" : { "a": 0, "b": 1, "c":2 },
  },
  "getPropertyVar": ["o", "i"]
};
// output : 1

Examples

See unit tests : https://github.com/Inist-CNRS/node-jbj-array/tree/master/test

Try it

http://Inist-CNRS.github.io/node-jbj/

License

MIT

Dependencies (1)

Dev Dependencies (2)

Package Sidebar

Install

npm i jbj-array

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • parmentf
  • touv