UNPKG

@toreda/strong-types

Version:

Better TypeScript code in fewer lines.

1 lines 2.74 kB
{"version":3,"sources":["../src/float/make.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAC;AAK/B;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAmCxE","file":"make.d.ts","sourcesContent":["/**\n *\tMIT License\n *\n *\tCopyright (c) 2019 - 2021 Toreda, Inc.\n *\n *\tPermission is hereby granted, free of charge, to any person obtaining a copy\n *\tof this software and associated documentation files (the \"Software\"), to deal\n *\tin the Software without restriction, including without limitation the rights\n *\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *\tcopies of the Software, and to permit persons to whom the Software is\n *\tfurnished to do so, subject to the following conditions:\n\n * \tThe above copyright notice and this permission notice shall be included in all\n * \tcopies or substantial portions of the Software.\n *\n * \tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * \tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * \tSOFTWARE.\n *\n */\n\nimport {Float} from '../float';\nimport {Rules} from '../rules';\nimport {createType} from '../create/type';\nimport {initialValue} from '../initial/value';\n\n/**\n *\n * @param fallback\n * @param initial\n * @returns\n *\n * @category Maths\n */\nexport function floatMake(fallback: number, value?: number | null): Float {\n\tconst rules = new Rules<number>();\n\n\trules.add().must.match.type.float();\n\n\tconst strong = createType<number>(fallback, initialValue(value), rules, 'Float');\n\n\treturn Object.assign(strong, {\n\t\tincrement: (): number | null => {\n\t\t\treturn strong._data.add(1);\n\t\t},\n\t\tdecrement: (): number | null => {\n\t\t\tconst curr = strong._data.getNull();\n\t\t\tif (curr === null || curr === 0) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn strong._data.add(-1);\n\t\t},\n\t\tmul: (amt: number): number | null => {\n\t\t\treturn strong._data.mul(amt);\n\t\t},\n\t\tpow: (exponent: number) => {\n\t\t\treturn strong._data.pow(exponent);\n\t\t},\n\t\tdiv: (amt: number): number | null => {\n\t\t\treturn strong._data.div(amt);\n\t\t},\n\t\tadd: (amt: number): number | null => {\n\t\t\treturn strong._data.add(amt);\n\t\t},\n\t\tsub: (amt: number) => {\n\t\t\treturn strong._data.add(amt * -1);\n\t\t}\n\t});\n}\n"]}