0.5.1 • Published 7 years ago

logical-operators v0.5.1

Weekly downloads
12
License
M.I.T
Repository
github
Last release
7 years ago

logical-operators

A tiny library that abstracts away logical operators with the intention of improving code readability. Ideal for composing complex validation queries.

Build Status npm version JavaScript Style Guide

Install

$ npm install logical-operators --save

Usage

every ( && )...

const { every } = require('logical-operators')
const is = require('library-that-validate-stuff')

const values = [1, 9, 7,'level', 'Venezuela', 'Caracas', 'Aba', 'hola', 10, undefined, 'USA']

const palindromeCities = every(is.string, is.palindrome, is.city)

values.filter(palindromeCities) // => ['Aba']

values.every(palindromeCities) // => false
  
values.some(palindromeCities) // => true

some ( || ) ...

const { some } = require('logical-operators')
const between = require('in-between')
const is = require('library-that-validate-stuff')

const values = ['a','b','two', 'd', 'x', 3, undefined, null,'three']

 
values.every(some(between('w','z'), is.number, between('a','c'))) // => false

values.filter(some(between('w','z'), is.number, between('a','c'))) // => ['b', 3, 'x']

or ( || )

Same as 'some' but only accepts 2 params

const { or } = require('logical-operators')
const is = require('library-that-validate-stuff')

const values = [1,2,'three']

const string_or_number = or(is.string, is.number)

values.every(string_or_number) // => true

values.filter(string_or_number) // => [1, 2, 'three']

both ( && )

Same as 'every' but only accepts 2 params

const { both } = require('logical-operators')
const is = require('library-that-validate-stuff')

const values = ['a','b','two']

const string_and_singleChar = both(is.string, is.singleChar)

values.every(string_and_singleChar) // => false

values.filter(string_and_singleChar) // => ['a','b']

equal ( == )

const { equal, greater } = require('logical-operators')
const is = require('library-that-validate-stuff')
const compose = require('lodash/compose')

var getAsciiSum = (str) => str.split('').map(char => char.charCodeAt(0)).reduce((prev, next)=> prev+ next,0)

var values = [1,2,3, 'ab', 'e', 'T', 'W', '/']

values.every(
    is.string,
    equal(getAsciiSum, compose(greater(102).than, toAscii) ),
  ) // => false

values.filter(
    is.string,
    equal(getAsciiSum, compose(greater(100).than, toAscii) ),
  ) // => ['ab', 'e']

License

MIT © Alvaro Bernal

0.5.1

7 years ago

0.5.0

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago