1.8.8 • Published 4 years ago

@sapphirecode/utilities v1.8.8

Weekly downloads
21
License
MIT
Repository
-
Last release
4 years ago

@sapphirecode/utilities

version: 1.8.x

small utility functions to make much needed features easier to work with

Installation

npm:

npm i --save @sapphirecode/utilities

yarn:

yarn add @sapphirecode/utilities

Usage

const util = require('@sapphirecode/utilities');

cut off decimal places to a specified point

util.truncate_decimal(12.345678, 2);
// returns 12.34

will return null instead of throwing on invalid json

util.try_parse_json('{{foo');

copy an object to prevent modification of the original

const obj = {foo: 'bar'};
const copy = util.copy_object(obj);
copy.foo = 'baz';
console.log(obj.foo); // bar

run a regular expression and get a callback for every result

const data = 'foobarfoo';
const regex = /foo/g;
util.run_regex(regex, data, (res) => {
  console.log(res[0]); // will output 'foo' 2 times
});

check if a variable is null, undefined or NaN

console.log(util.is_nil(parseInt('abc'))); // true
console.log(util.is_nil('foo')); // false
console.log(util.is_nil(42)); // false
console.log(util.is_nil(null)); // true
console.log(util.is_nil(undefined)); // true

filter an array recursively

const to_filter = [
  {name: 'include_foo'},
  {
    name: 'include_bar',
    children: [{name: 'foo'}, {name: 'bar'}],
  },
  {
    name: 'baz',
    children: [{name: 'include_foo'}, {name: 'bar'}],
  },
  {
    name: 'barbaz',
    children: [{name: 'foo'}, {name: 'bar'}],
  },
];
const filter = {
  field: 'name', // the field the filter will apply on
  filter: /^include_.*/iu, // regex filter
};

const result = util.recursive_filter(
  to_filter,
  [filter], // you can specify multiple filters, they will be connected using AND
  'children' // specify which field an objects children are stored in ('children' is default)
);

console.log(JSON.stringify(result, null, 2));
/* output:

[
  { name: 'include_foo' },
  {
    name:     'include_bar',
    children: [
      { name: 'foo' },
      { name: 'bar' }
    ]
  },
  {
    name:     'baz',
    children: [ { name: 'include_foo' } ]
  }
]*/

filters can also apply to multiple fields

const result = util.recursive_filter(
  [{name: 'foo', name_2: 'bar'}],
  [
    {
      filter: /foo bar/iu,
      field: ['name', 'name_2'], // fields will be joined with a space in between
      // {name: 'foo', name_2: 'bar'} will become 'foo bar'
    },
  ]
);

filter groups can be used to connect filters with OR

const result = util.recursive_filter(
  [...],
  [
    {
      filter: /foo bar/iu,
      field: 'name'
    },
    {
      or: [
        { filter: /foo/u, field: 'bar' },
        { filter: /bar/u, field: 'bar' }
      ]
    }
  ]
);

field values can be carried to filter runs on children to filter over the entire tree instead of just one element

  const to_filter = [
    {
      name:     'foo',
      children: [
        { name: 'bar' },
        { name: 'baz' },
        { foo: 'bar' }
      ]
    }
  ];

  const res = util.recursive_filter (
    to_filter,
    [ { field: 'name', filter: /foo bar/ui } ], // values will be separaed by a space
    'children',
    [ 'name' ] // specify which fields should be carried
    // the filters will receive the carried values instead of the plain fields
  );
  
  /* result:
  
  [
    {
      name:     'foo',
      children: [ { name: 'bar' } ]
    }
  ]
  */

custom functions to match items can also be used

const filter = {
  function: (element) => {
    return element.should_match;
  }
}

License

MIT © Timo Hocker timo@scode.ovh

1.8.8

4 years ago

1.8.7

4 years ago

1.8.6

4 years ago

1.8.5

4 years ago

1.8.4

4 years ago

1.8.3

4 years ago

1.8.2

4 years ago

1.8.1

4 years ago

1.7.2

4 years ago

1.6.4

4 years ago

1.6.3

4 years ago

1.7.1

4 years ago

1.5.5

4 years ago

1.5.4

4 years ago

1.6.2

4 years ago

1.6.1

4 years ago

1.5.3

4 years ago

1.5.2

4 years ago

1.5.1

4 years ago

1.4.6

4 years ago

1.4.5

4 years ago

1.4.4

4 years ago

1.4.3

4 years ago

1.4.2

4 years ago

1.4.1

4 years ago

1.3.5

4 years ago

1.3.4

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.0.40

4 years ago

1.0.39

4 years ago

1.0.38

4 years ago

1.0.37

4 years ago

1.0.36

4 years ago

1.0.35

4 years ago