Skip to content

Latest commit

 

History

History
38 lines (30 loc) · 941 Bytes

box-handler.mdx

File metadata and controls

38 lines (30 loc) · 941 Bytes
category contributors created title updated
Function
Valeriy Arbachakov
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