1.1.2 • Published 4 years ago
the-value v1.1.2
The Value
functional, semantic and neat.
npm i -S the-valueUsage
const Value = require('the-value')Value(1).Number // true
Value(1).range(0, 1) // true
Value('b').between('a', 'c') // trueValue.is(200, Value.Constant(200)) // true
Value(200).is(Value.Constant(200)) // trueAll original provided functions in here
Addon
! All functions should have the first parameter to be the target value (to conduct operations).
addon(utilsObject: object, keys?: string[]|Record<string, string>, type?: 'getter', notCacheGetter?: boolean=false)
utilsObject, properties owner.keys, list properties should be added. If ignored, all own enumerable properties will added. Properties will be renamed with the option is not an array.type, if set to begetter, indicate the function type properties should be converted to getter properties.notCacheGetter, if set to betrue, indicate the getter properties should not be cached.
All of own enumerable properties:
// * addon() of the top level `Value` will return a new `Value`, to avoid pollute the package source when it's imported in other files.
const NewValue = Value.addon({
pow(v, n) { return v ** n },
get Square(v) { return v ** 2 },
VERSION: '1.0',
})
NewValue(2).pow(2) // 4
NewValue(2).Square // 4
NewValue(2).VERSION // 1.0
// addon() of new `Value` will addon itself (instead of returning a new one).
const NewValue2 = NewValue.addon({})
newValue2 === newValue // trueSpecific properties (even non-enumerable or inherited):
const NewValue = Value.addon({
pow(v, n) { return v ** n },
get Square(v) { return v ** 2 },
VERSION: '1.0',
}, ['pow'])Make function to be getter:
const NewValue = Value.addon({
square(v) { return v ** 2 },
}, ['square'], 'getter')
NewValue(2).square // 4Rename:
const NewValue = Value.addon({
square(v) { return v ** 2 },
}, { square: 'Square' }, 'getter')
NewValue(2).Square // 4Disable cache of getter properties when add on (cache getter properties is default option of addon(), see declaration):
let count = 0
const NewValue = Value.addon({
square(v) { count++; return v ** 2 },
}, { square: 'Square' }, 'getter', true)
const v = NewValue(2)
v.Square // count is 1
v.Square // count is 2
v.Square // count is 3
v.Square // count is 4Add utils from lodash/underscore/...
const underscore = require('underscore')
const Value = require('the-value')
.addon(underscore, ['pick', 'omit', 'shuffle'])
.addon(underscore, { isElement: 'Element' }, 'getter')