1.0.3 • Published 2 years ago

embiggen v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Embiggen JS

"A noble spirit embiggens the smallest array."

A Javascript library that implements Array.embiggen, enabling you to embiggen an array of any type(s), using a variety of embiggenators.

Usage

Node

import 'embiggen';

Browser

Navigate to the source folder (or clone the repo) and run

npm run build

Then the JS file is available in dist/main.js;

Example

let data = ["data", 12, {test: "true"}, [1, "why?"], 99];
const possiblyEmbiggened = data.embiggen();
if (possiblyEmbiggened !== null) {
	// Then you received a new, muchly embiggened array
} else {
	// Your array was embiggened in place
	if (data.embiggened) {
		// Your array received a property embiggenation
	} else {
		// The data in your array will have been embiggened thusly:
		// - perhaps it was embiggened lengthwise
		// - plausibly it was embiggened in magnitude
		// - :shrug: possible both?
		// - if you passed an optionalEmbiggenatorFn, maybe it also was used on the array??
	}
}

Example outputs

["123", {}, "lol", 123, "B==>"].embiggen()
> [150, '[object Object]', 327, '{', 250]
["123", {}, "lol", 123, "B==>"].embiggen()
> [150, 150, Infinity, '[object Object]', 'loOoOoOoOoOoOl', 'LOL', '{', 15129, 'B========> - - - - -', 'B==>']
["123", {}, "lol", 123, "B==>"].embiggen()
> ['123', '[object Object]', 'loOoOoOoOoOoOl', '{', 250]
["123", {}, "lol", 123, "B==>"].embiggen()
> ['123', '123', {…}, {…}, 'lol', 'lol', 123, 123, 'B==>', 'B==>']
["123", {}, "lol", 123, "B==>"].embiggen()
null // embiggened in-place

optionalEmbiggenatorFn

Array.embiggen takes an optionalEmbiggenatorFn, which potentially receives the entire (possibly already embiggenated) array as an argument, and can then attempt to embiggen it - and if it errors out for any reason, this exception will be caught and duly ignored.

Advanced Usage

Assuming your life is just too stressful to cope with the unkown, and you wish to control the embiggenation, I suppose you could force the embiggenation types that you desire.

Array.embiggen(optionalEmbiggenatorFn, inPlace=null, embiggenLength=null, embiggenMagnitude=null, embiggenArrayProperty=null)

Also it is possible to alter the globally exported embiggenator functions:

In a browser context replace global with window

global._lengthEmbiggenators = lengthEmbiggenators;
global._magnitudeEmbiggenators = magnitudeEmbiggenators;

Length Embiggenators

As per the name, length embiggenators will impact the length of an array in a way that conceivably embiggens it. These take the entire array as input, and are expected to alter the array in place and return it (extending it is obviously fine).

global._lengthEmbiggenators [...fn]

Magnitude Embiggenators

These are exported as an object, by data type, and act on a single piece of data in the array.

global._magnitudeEmbiggenators = {
	"string": [...fn],
	"number": [...fn],
	"object": [...fn],
}

These functions should be able to handle all input of their type. Nested Arrays are simply embiggened recursively.

Happy embiggening!