Skip to content

Commit

Permalink
Add compare page
Browse files Browse the repository at this point in the history
  • Loading branch information
narze committed Aug 18, 2024
1 parent 36bf6cb commit 4a33cb0
Show file tree
Hide file tree
Showing 5 changed files with 407 additions and 0 deletions.
4 changes: 4 additions & 0 deletions site/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
"@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^3.0.0",
"@to-da-moon/thai-baht-lib": "^0.0.12",
"@types/eslint": "^9.6.0",
"bahtrext": "^1.3.3",
"bahttext": "^2.3.0",
"eslint": "^9.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.36.0",
Expand All @@ -24,6 +27,7 @@
"prettier-plugin-svelte": "^3.1.2",
"svelte": "^5.0.0-next.1",
"svelte-check": "^3.6.0",
"thai-baht-text": "^2.0.5",
"typescript": "^5.0.0",
"typescript-eslint": "^8.0.0",
"vite": "^5.0.3"
Expand Down
34 changes: 34 additions & 0 deletions site/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

111 changes: 111 additions & 0 deletions site/src/lib/BAHTTEXT.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/**
* @name BAHTTEXT.js
* @version 1.1.5
* @update May 1, 2017
* @website: https://github.com/earthchie/BAHTTEXT.js
* @author Earthchie http://www.earthchie.com/
* @license WTFPL v.2 - http://www.wtfpl.net/
**/
export default function BAHTTEXT(num, suffix) {
'use strict';

if (typeof suffix === 'undefined') {
suffix = 'บาทถ้วน';
}

num = num || 0;
num = num.toString().replace(/[, ]/g, ''); // remove commas, spaces

if (isNaN(num) || Math.round(parseFloat(num) * 100) / 100 === 0) {
return 'ศูนย์บาทถ้วน';
} else {
var t = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'],
n = [
'',
'หนึ่ง',
'สอง',
'สาม',
'สี่',
'ห้า',
'หก',
'เจ็ด',
'แปด',
'เก้า',
],
len,
digit,
text = '',
parts,
i;

if (num.indexOf('.') > -1) {
// have decimal

/*
* precision-hack
* more accurate than parseFloat the whole number
*/

parts = num.toString().split('.');

num = parts[0];
parts[1] = parseFloat('0.' + parts[1]);
parts[1] = (Math.round(parts[1] * 100) / 100).toString(); // more accurate than toFixed(2)
parts = parts[1].split('.');

if (parts.length > 1 && parts[1].length === 1) {
parts[1] = parts[1].toString() + '0';
}

num = parseInt(num, 10) + parseInt(parts[0], 10);

/*
* end - precision-hack
*/
text = num ? BAHTTEXT(num) : '';

if (parseInt(parts[1], 10) > 0) {
text = text.replace('ถ้วน', '') + BAHTTEXT(parts[1], 'สตางค์');
}

return text;
} else {
if (num.length > 7) {
// more than (or equal to) 10 millions

var overflow = num.substring(0, num.length - 6);
var remains = num.slice(-6);
return (
BAHTTEXT(overflow).replace('บาทถ้วน', 'ล้าน') +
BAHTTEXT(remains).replace('ศูนย์', '')
);
} else {
len = num.length;
for (i = 0; i < len; i = i + 1) {
digit = parseInt(num.charAt(i), 10);
if (digit > 0) {
if (
len > 2 &&
i === len - 1 &&
digit === 1 &&
suffix !== 'สตางค์'
) {
text += 'เอ็ด' + t[len - 1 - i];
} else {
text += n[digit] + t[len - 1 - i];
}
}
}

// grammar correction
text = text.replace('หนึ่งสิบ', 'สิบ');
text = text.replace('สองสิบ', 'ยี่สิบ');
text = text.replace('สิบหนึ่ง', 'สิบเอ็ด');

return text + suffix;
}
}
}
}

// module.exports = BAHTTEXT;
104 changes: 104 additions & 0 deletions site/src/lib/excel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
export const fromExcel = (n) => {
switch (n) {
case -1:
return 'ลบหนึ่งบาทถ้วน';
case 0:
return 'ศูนย์บาทถ้วน';
case 0.01:
return 'หนึ่งสตางค์';
case 0.1:
return 'สิบสตางค์';
case 0.11:
return 'สิบเอ็ดสตางค์';
case 0.12:
return 'สิบสองสตางค์';
case 0.123:
return 'สิบสองสตางค์';
case 0.2:
return 'ยี่สิบสตางค์';
case 0.21:
return 'ยี่สิบเอ็ดสตางค์';
case 0.25:
return 'ยี่สิบห้าสตางค์';
case 0.255:
return 'ยี่สิบหกสตางค์';
case 0.5:
return 'ห้าสิบสตางค์';
case 0.75:
return 'เจ็ดสิบห้าสตางค์';
case 0.99:
return 'เก้าสิบเก้าสตางค์';
case 0.999:
return 'หนึ่งบาทถ้วน';
case 1:
return 'หนึ่งบาทถ้วน';
case 10:
return 'สิบบาทถ้วน';
case 11:
return 'สิบเอ็ดบาทถ้วน';
case 11.25:
return 'สิบเอ็ดบาทยี่สิบห้าสตางค์';
case 12:
return 'สิบสองบาทถ้วน';
case 20:
return 'ยี่สิบบาทถ้วน';
case 21:
return 'ยี่สิบเอ็ดบาทถ้วน';
case 22:
return 'ยี่สิบสองบาทถ้วน';
case 100:
return 'หนึ่งร้อยบาทถ้วน';
case 100.5:
return 'หนึ่งร้อยบาทห้าสิบสตางค์';
case 101:
return 'หนึ่งร้อยหนึ่งบาทถ้วน';
case 111:
return 'หนึ่งร้อยสิบเอ็ดบาทถ้วน';
case 121:
return 'หนึ่งร้อยยี่สิบเอ็ดบาทถ้วน';
case 567.01:
return 'ห้าร้อยหกสิบเจ็ดบาทหนึ่งสตางค์';
case 1000000:
return 'หนึ่งล้านบาทถ้วน';
case 1000001:
return 'หนึ่งล้านหนึ่งบาทถ้วน';
case 6321298:
return 'หกล้านสามแสนสองหมื่นหนึ่งพันสองร้อยเก้าสิบแปดบาทถ้วน';
case 10000000:
return 'สิบล้านบาทถ้วน';
case 10034567:
return 'สิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน';
case 11000000:
return 'สิบเอ็ดล้านบาทถ้วน';
case 11000001:
return 'สิบเอ็ดล้านหนึ่งบาทถ้วน';
case 20034567:
return 'ยี่สิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน';
case 30034567.0:
return 'สามสิบล้านสามหมื่นสี่พันห้าร้อยหกสิบเจ็ดบาทถ้วน';
case 100000000:
return 'หนึ่งร้อยล้านบาทถ้วน';
case 123456789.999:
return 'หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยเก้าสิบบาทถ้วน';
case 1000000000:
return 'หนึ่งพันล้านบาทถ้วน';
case 1000000000000:
return 'หนึ่งล้านล้านบาทถ้วน';
case 1000000000001:
return 'หนึ่งล้านล้านหนึ่งบาทถ้วน';
case 1001000000000:
return 'หนึ่งล้านหนึ่งพันล้านบาทถ้วน';
case 1001000000001:
return 'หนึ่งล้านหนึ่งพันล้านหนึ่งบาทถ้วน';
case 1001000001001:
return 'หนึ่งล้านหนึ่งพันล้านหนึ่งพันหนึ่งบาทถ้วน';
case 123456789012345:
return 'หนึ่งร้อยยี่สิบสามล้านสี่แสนห้าหมื่นหกพันเจ็ดร้อยแปดสิบเก้าล้านหนึ่งหมื่นสองพันสามร้อยสี่สิบห้าบาทถ้วน';
case 987654321098765:
return 'เก้าร้อยแปดสิบเจ็ดล้านหกแสนห้าหมื่นสี่พันสามร้อยยี่สิบเอ็ดล้านเก้าหมื่นแปดพันเจ็ดร้อยหกสิบห้าบาทถ้วน';
case 9007199254740990:
return 'เก้าพันเจ็ดล้านหนึ่งแสนเก้าหมื่นเก้าพันสองร้อยห้าสิบสี่ล้านเจ็ดแสนสี่หมื่นเก้าร้อยเก้าสิบบาทถ้วน';
default:
return 'Undefined number: ' + n;
}
};
Loading

0 comments on commit 4a33cb0

Please sign in to comment.