JSPM

  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q100822F
  • License ISC

Useful functions to encapsulate common scenarios

Package Exports

  • werkstatt

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (werkstatt) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Werkstatt

🛠 Useful functions to encapsulate common scenarios.

travis build

As described here, is good to encapsulate conditionals to make our code more readable, reusable and avoid ambiguities. Also to avoid potential bugs due to some javascript features are error-prone:

let name = null;
typeof name; // "object"

Clearly, null is not an object. More of that 👉🏼here.

This is then, a package that encapsulates conditionals, but also other util functions.

⚠️ WARNING: This is also a proof of concept. Some of the functions' names may not make all the sense to you or also may be many breaking changes.

📦 Install

npm

npm install -s werkstatt

yarn

yarn add werkstatt

browser

<script src="https://unpkg.com/werkstatt@1.16.0/dist/index.umd.min.js"></script>

<script>
    const { isEmail, isNull, areEqual } = werkstatt;
    
    console.log(isEmail('asdf')); // -> false
    console.log(isNull(3)); // -> false
    console.log(areEqual(6, 6, 6, 6)); // -> true
</script>

✨ Features

Number

isZero
Arguments
argument type description returns
value number will be tested if it is 0 or not boolean
const { isZero } = require('werkstatt');

isZero(7); // -> false
isZero(0); // -> true
add
Arguments
argument type description returns
values number either an array of numbers or n args number
const { add } = require('werkstatt');

add(3, 6, 11); // -> 20
const numbers = [1, 2, 3];
add(...numbers); // -> 6
subtract
Arguments
argument type description returns
values number numbers that will be subtrtacted number
const { subtract } = require('werkstatt');

subtract(6, 3); // -> 3

NOTE: currently it only supports two numbers as paremeters.

divide
Arguments
argument type description returns
dividend number the dividend of the operation number
divider number the divider of the operation number
const { divide } = require('werkstatt');

divide(100, 2); // -> 50
divide(10, 5); // -> 2
isNumber
Arguments
argument type description returns
value any will be tested if it is number or not boolean
const { isNumber } = require('werkstatt');

isNumber(54); // -> true
isNumber({"hola": "adios"}); // -> false
isNumber([]); // -> false
isNumber(""); // -> false
isNumber(3); // -> true
isNumber(true); // -> false

NOTE: this is an implementation of is-number package.

isOdd
Arguments
argument type description returns
value number will be tested if it is odd number or not boolean
const { isOdd } = require('werkstatt');

isOdd(7); // -> true
isOdd(4); // -> false

NOTE: this is an implementation of is-odd package.

isEven
Arguments
argument type description returns
value number will be tested if it is even number or not boolean
const { isEven } = require('werkstatt');

isEven(7); // -> false
isEven(4); // -> true

NOTE: this is an implementation of is-even package.

isNegative
Arguments
argument type description returns
value number will be tested if it is negative number or not boolean
const { isNegative } = require('werkstatt');

isNegative(-54); // -> true
isNegative(4); // -> false
isGreaterThan
Arguments
argument type description returns
firstArgument number first value to be evaluated boolean
secondArgument number second value to be evaluated boolean
const { isGreaterThan } = require('werkstatt');

isGreaterThan(100, 50); // -> true
isGreaterThan(1, 50); // -> false

Float

roundUp
Arguments
argument type
number float
const { roundUp } = require('werkstatt');

roundUp(3.2) // -> 4
roundDown
Arguments
argument type
number float
const { roundDown } = require('werkstatt');

roundDown(3.8) // -> 3
isFloat
Arguments
argument type description returns
value number, float will be tested if is or not float boolean
const { isFloat } = require('werkstatt');

isFloat(6); // -> false
isFloat(6.5); // -> true

String

capitalizeFirstLetter
Arguments
argument type description returns
value string string to capitalize first letter string
const { capitalizeFirstLetter } = require('werkstatt');

capitalizeFirstLetter('hola'); // -> 'Hola'
capitalizeFirstLetter('adios'); // -> 'Adios'

NOTE: this is an implementation of a Flavio's function

isEmail
Arguments
argument type description returns
value string will be tested if it satisfies an email format boolean
const { isEmail } = require('werkstatt');

isEmail("a@a.c"); // -> false
isEmail("a@a.co"); // -> true

Best regex found out there.

isString
Arguments
argument type description returns
value any whether or not the value is a string boolean
const { isString } = require('werkstatt');

isString("Hola"); // -> true
isString([3]); // -> false

Boolean

isTruthy

Whenever JavaScript expects a boolean value (e.g. for the condition of an if statement), any value can be used. It will be interpreted as either true or false. The following values are interpreted as false:

  • undefined, null
  • Boolean: false
  • Number: -0, NaN
  • String: ''

Speaking JavaScript by Alex Rauschmayer

That means that those values tend to to be false. So if you pass as parameter to isTruthy function any of those values, it will return false. All other values are considered true.

const { isTruthy } = require('werkstatt');

isTruthy(3)); // -> true
isTruthy({}); // -> true

isTruthy(undefined); // -> false
isTruthy(null); // -> false
isTruthy(false); // -> false
isTruthy(Number('hola')); // -> false
isTruthy(0); // -> false
isTruthy(-0); // -> false
isTruthy(''); // -> false
isFalsy

Exactly the opposite of isTruthy.

const { isFalsy } = require('werkstatt');

isFalsy(3)); // -> false
isFalsy(null); // -> true

Array

orderAsc
Arguments
argument type description returns
value array will order the list in ascending mode array (ordened)
const { orderAsc } = require('werkstatt');

orderAsc([8, 10, 6]); // -> [6, 8, 10]

NOTE: this is an implementation of quicksort algorithm

lengthOf
Arguments
argument type description returns
value array, string, json length of the passed argument number
const { lengthOf } = require('werkstatt');

lengthOf([8, 10, 6]); // -> 3
isLengthOf
Arguments
argument type description returns
value array, string, json test if the first argument has the desired length (that specified in the second argument) boolean
const { isLengthOf } = require('werkstatt');

isLengthOf([8, 10, 6], 3); // -> true
isLengthOf("hola", 0); // -> false
isLengthOf({name: "Jorge", lasName: "Guerra"}, 2) // -> true
insertAt
Arguments
argument type description
array any where the element will be inserted.
index any at which the element will be inserted.
elementToInsert any element to insert in the array.
const { insertAt } = require('werkstatt');

insertAt([1, 2, 3], 1, 4); // -> [1, 4, 2, 3]
isArrayOfNumbers
Arguments
argument type description returns
values number array to test boolean
const { isArrayOfNumbers } = require('werkstatt');

isArrayOfNumbers([3, 6, 11, 'hola']); // -> false
isArrayOfNumbers([1, 2, 3]); // -> true
toArray
Arguments
argument type description returns
arrayLikeObject/NodeList any object to convert array
const { toArray } = require('werkstatt');

function testToArray() {
  console.log(arguments); // array like object -> [Arguments] { '0': 1, '1': 2, '2': 3 }
  return toArray(arguments);
}

testToArray(1, 2, 3); // -> [ 1, 2, 3 ]
isArray
Arguments
argument type description returns
value any whether or not the value is an array boolean
const { isArray } = require('werkstatt');

isArray("Hola"); // -> false
isArray([3]); // -> true

Other

typeOf
Arguments
argument type description returns
value any will get the type of a passed value string
const { typeOf } = require('werkstatt');

typeOf(6.5); // -> float
typeOf([]); // -> array
typeOf({}); // -> object
typeOf(null); // -> 'null'
typeOf(undefined); // -> 'undefined'
typeOf('undefined'); // -> 'string'
typeOf(true); // -> 'boolean'
typeOf(() => {}); // -> 'function'
typeOf(6); // -> number
areEqual
Arguments
argument type description returns
n amount any args to compare boolean
const { areEqual } = require('werkstatt');

areEqual(100, 2); // -> false

var name;
areEqual(typeOf(name), 'undefined'); // -> true

const numbers = [4, 3, 5, 7, 3, 9];
areEqual(...numbers); // -> false

const ages = [9, 9, 9, 9, 9];
areEqual(...ages); // -> true

NOTE: This function supports primitive values only because objects are not compared by value but by reference.

isUndefined
Arguments
argument type description returns
value any will be tested if is undefined or not boolean
const { isUndefined } = require('werkstatt');

isUndefined(); // -> true
isUndefined("a@a.co"); // -> false
isDefined
Arguments
argument type description returns
value any will be tested if is or not defined boolean
const { isDefined } = require('werkstatt');

isDefined(100); // -> true
var name;
isDefined(name); // -> false

var age = null;
isDefined(age); // -> false
isDefined({}); // -> true
isEmpty
Arguments
argument type
param any
const { isEmpty } = require('werkstatt');

isEmpty({}); // -> true
isEmpty({"hola": "adios"}); // -> false
isEmpty([]); // -> true
isEmpty(""); // -> true
isEmpty(3); // -> true
isEmpty(true); // -> true

Note: isEmpty currently supports array, object and string only.

has
Arguments
argument type description returns
firstArgument number first value to be evaluated boolean
secondArgument number second value to be evaluated boolean
const { has } = require('werkstatt');

has([3, 5], 3); // -> true
has(["Hola", "adios"], "true"); // -> false
has("Jorge", "e"); // -> true
isNull
Arguments
argument type description returns
value any value to be evaluated boolean
const { isNull } = require('werkstatt');

var name = null;
isNull(name); // -> true
isNull("Hola"); // -> false
every
Arguments
argument type description returns
args array arguments to match to a specific type boolean
const { every } = require('werkstatt');

every('adios' === 'adios', 'hola' === 'hola').is.true // -> true
every('adios', 'hola').is.string // -> true
every(1, 2).is.number // -> true

more coming soon ✨

🙌🏽 Contribute

  1. Fork and clone the repo
  2. Run npm install to install dependencies
  3. Create a branch for your PR with git checkout -b your-branch-name

To keep master branch pointing to remote repository and make pull requests from branches on your fork. To do this, run:

git remote add upstream https://github.com/sk8guerra/werkstatt.git
git fetch upstream
git branch --set-upstream-to=upstream/master master
  1. Make your pull request 🥳