BellaJS
Lightweight util for handling data type, string... in your Node.js and browser apps.
You may be interested in BellaPy too.
Contents
Setup
Usage
const bella = require('bellajs');
const {
isArray,
isString,
} = require('bellajs');
import bella from 'bellajs';
import {
isArray,
isString,
} from 'bellajs';
APIs
DataType detection
- .isArray(Anything val)
- .isBoolean(Anything val)
- .isDate(Anything val)
- .isElement(Anything val)
- .isEmail(Anything val)
- .isEmpty(Anything val)
- .isFunction(Anything val)
- .isInteger(Anything val)
- .isLetter(Anything val)
- .isNil(Anything val)
- .isNull(Anything val)
- .isNumber(Anything val)
- .isObject(Anything val)
- .isString(Anything val)
- .isUndefined(Anything val)
Date format
toRelativeTime([Date | Timestamp])
toDateString([Date | Timestamp] [, String pattern])
toLocalDateString([Date | Timestamp])
toUTCDateString([Date | Timestamp])
Default pattern for toDateString()
method is D, M d, Y H:i:s A
.
Pattern for toLocalDateString()
and toUTCDateString()
is D, j M Y h:i:s O
.
Here are the available characters:
- Y: full year, ex: 2050
- y: short year, ex: 50
- F: full month name, ex: August
- M: short month name, ex: Aug
- m: month index with zero, ex: 08 (in 08/24/2050)
- n: short month name with no zero, ex: 8 (in 8/24/2050)
- S: the ordering subfix for date, ext: 1st, 2nd, 3rd, 4th
- j: day of the month, with no zero, ex: 3 (in 18/3/2050)
- d: day of the month, with zero, ex: 03 (in 18/03/2050)
- t: date in year
- w: weekday in number
- l: long name of weekday, ex: Sunday
- D: short name of weekday, ex: Sun
- G: hour, with no zero: 0 - 24
- g: hour, with no zero: 0 - 12
- h: hour, with zero: 00 - 24
- i: minute: 00 - 59
- s: second: 00 - 59
- a: am, pm
- A: AM, PM
- O: timezone
Example:
import {
toRelativeTime,
toDateString,
toLocalDateString,
toUTCDateString
} from 'bellajs'
const t = 1509628030108
toRelativeTime(t)
toDateString(t, 'Y/m/d h:i:s')
toLocalDateString(t)
toUTCDateString(t)
String manipulation
- .ucfirst(String s)
- .ucwords(String s)
- .escapeHTML(String s)
- .unescapeHTML(String s)
- .slugify(String s)
- .stripTags(String s)
- .stripAccent(String s)
- .truncate(String s, Number limit)
- .replaceAll(String s, String|Array search, String|Array replace)
Data handling
clone
clone(Anything val)
Return a copy of val.
const b = [
1, 5, 0, 'a', -10, '-10', '',
{
a: 1,
b: 'Awesome'
}
]
const cb = bella.clone(b)
console.log(cb)
cb now has the same values as b, while the properties are standalone, not reference. So that:
cb[7].a = 2
cb[7].b = 'Noop'
console.log(b[7])
What you get is still:
{
a: 1,
b: 'Awesome'
}
copies
Copy the properties from source to target.
copies(Object source, Object target[[, Boolean requireMatching], Array excepts])
- requireMatching: if true, BellaJS only copies the properties that are already exist in target.
- excepts: array of the properties properties in source that you don't want to copy.
const a = {
name: 'Toto',
age: 30,
level: 8,
nationality: {
name: 'America'
}
}
const b = {
level: 4,
IQ: 140,
epouse: {
name: 'Alice',
age: 27
},
nationality: {
long: '18123.123123.12312',
lat: '98984771.134231.1234'
}
}
bella.copies(a, b)
console.log(b)
Output:
{
level: 8,
IQ: 140,
epouse: {
name: 'Alice',
age: 27
},
nationality: {
long: '18123.123123.12312',
lat: '98984771.134231.1234',
name: 'America'
},
name: 'Toto',
age: 30
}
Array utils
pick
Randomly choose N elements from array.
pick(Array arr [, Integer count = 1])
Examples:
import { pick } from 'bellajs'
const arr = [1, 3, 8, 2, 5, 7]
pick(arr, 2)
pick(arr, 2)
pick(arr)
pick(arr)
sort
sort(Array a [, Function compare])
For example:
import { sort } from 'bellajs'
const fn = (a, b) => {
return a < b ? 1 : a > b ? -1 : 0
}
sort([3, 1, 5, 2], fn)
sortBy
sortBy(Array a, Number order, String property)
For example:
import { sortBy } from 'bellajs'
const players = [
{
name: 'Jerome Nash',
age: 24
},
{
name: 'Jackson Valdez',
age: 21
},
{
name: 'Benjamin Cole',
age: 23
},
{
name: 'Manuel Delgado',
age: 33
},
{
name: 'Caleb McKinney',
age: 28
}
]
const result = sortBy(players, -1, 'age')
console.log(result)
shuffle
Shuffle an array.
shuffle(Array arr)
For example:
import { shuffle } from 'bellajs'
shuffle([1, 3, 8, 2, 5, 7])
unique
unique(Array a)
For example:
import { unique } from 'bellajs'
unique([1, 2, 3, 2, 3, 1, 5])
Functional utils
curry
curry(fn)
Examples:
import { curry } from 'bellajs'
const sum = curry((a, b, c) => {
return a + b + c
})
sum(3)(2)(1)
sum(1)(2)(3)
sum(1, 2)(3)
sum(1)(2, 3)
sum(1, 2, 3)
compose
Performs right-to-left function composition.
compose(f1, f2, ...fN)
Examples:
import {compose} from 'bellajs'
const f1 = (name) => {
return `f1 ${name}`
}
const f2 = (name) => {
return `f2 ${name}`
}
const f3 = (name) => {
return `f3 ${name}`
}
const addF = compose(f1, f2, f3)
addF('Hello')
const add1 = (num) => {
return num + 1
}
const mult2 = (num) => {
return num * 2
}
const add1AndMult2 = compose(add1, mult2)
add1AndMult2(3)
pipe
Performs left-to-right function composition.
pipe(f1, f2, ...fN)
Examples:
import { pipe } from 'bellajs'
const f1 = (name) => {
return `f1 ${name}`
}
const f2 = (name) => {
return `f2 ${name}`
}
const f3 = (name) => {
return `f3 ${name}`
}
const addF = pipe(f1, f2, f3)
addF('Hello')
const add1 = (num) => {
return num + 1
}
const mult2 = (num) => {
return num * 2
}
const add1AndMult2 = pipe(add1, mult2)
add1AndMult2(3)
maybe
maybe(Anything val)
Return a static variant of Maybe
monad.
Examples:
import { maybe } from 'bellajs'
const plus5 = x => x + 5
const minus2 = x => x - 2
const isNumber = x => Number(x) === x
const toString = x => 'The value is ' + String(x)
const getDefault = () => 'This is default value'
maybe(5)
.map(plus5)
.map(minus2)
.value()
maybe('noop')
.map(plus5)
.map(minus2)
.value()
maybe(5)
.if(isNumber)
.map(plus5)
.map(minus2)
.else(getDefault)
.map(toString)
.value()
maybe()
.if(isNumber)
.map(plus5)
.map(minus2)
.map(toString)
.value()
maybe()
.if(isNumber)
.map(plus5)
.map(minus2)
.else(getDefault)
.map(toString)
.value()
Other utils
equals
equals(Anything a, Anything b)
Examples:
import { equals } from 'bellajs'
equals({}, {})
equals(0, 1)
randint
randint([Number min [, Number max]])
Examples:
import { randint } from 'bellajs'
randint()
randint(1, 5)
genid
genid([Number length [, String prefix]])
Examples:
import { genid } from 'bellajs'
genid()
genid(16)
genid(5)
genid(5, 'X_')
md5
md5(String s)
For example:
import { md5 } from 'bellajs'
md5('abc')
Test
git clone https://github.com/ndaidong/bellajs.git
cd bellajs
npm install
npm test
License
The MIT License (MIT)