category | contributors | created | title | updated | |
---|---|---|---|---|---|
Function |
|
2020-07-15 |
Box handler |
2020-08-18 |
JavaScript version
const boxHandler = (x) => ({ next: (f) => boxHandler(f(x)), done: (f) => f(x) });
Examples
// First example
const getPercentNumber = (str) =>
boxHandler(str)
.next((str) => str.replace(/\%/, ''))
.next((str) => parseFloat(str))
.done((res) => res * 0.01);
getPercentNumber('50%'); // 0.5
// Second example
const getMoney = (price) => Number.parseFloat(price.replace(/\$/, ''));
const getPercent = (percent) => Number.parseFloat(percent.replace(/\%/)) * 0.01;
const getDiscountPrice = (price, discount) =>
boxHandler(getMoney(price))
.done((cents) => boxHandler(getPercent(discount)).next((save) => cents - cents * save))
.done((res) => res);
getDiscountPrice('$6.00', '20%'); // 4.8