bahtrext
Version:
BahtText Stringify
43 lines (36 loc) • 1.43 kB
JavaScript
import splitIntFrac from '../snippet/splitIntFrac';
import MoneyLaundering from './MoneyLaundering';
import PrintBaht from './PrintBaht';
import IsMoneyValidate from './IsMoneyValidate';
import PrintSatangs from './PrintSatangs';
import MoneyInvalid from '../snippet/MoneyInvalid';
import { THAINUMBERWORDS, BAHT, FULLBAHT, } from "../const"
import { sum } from "operation-strint"
import InvalidType from "../const/error/InvalidType"
import { ed, rounding } from "../const/defaultConfig"
export default (
money,
options = {
ed,
rounding,
ClErr: () => MoneyInvalid,
}
) => {
const { ed, rounding, ClErr } = options;
if (!money) return undefined;
if (typeof money !== "string") return InvalidType;
const cleanedMoney = MoneyLaundering(money);
if (!IsMoneyValidate(cleanedMoney, rounding) || money === `.`) {
console.error(ClErr(money));
return undefined;
}
const [moneyFull, moneyInt, moneyFrac] = splitIntFrac(cleanedMoney);
if (moneyFull.match(/^(0*)(\.0*)?$/)) {
return `${THAINUMBERWORDS[0]}${BAHT}${FULLBAHT}`;
}
const satang_part = PrintSatangs(moneyFrac, rounding);
const opsum = sum(satang_part.carry, moneyInt === `` ? `0` : moneyInt);
const new_baht = opsum === `` ? `0` : opsum;
const baht_part = PrintBaht(new_baht, ed).replace(/^บาท$/, '');
return `${baht_part}${satang_part.word}`;
};