diff --git a/src/controllers/00-doc-template-controller.ts b/src/controllers/00-doc-template-controller.ts index 32822f4..1726bf0 100644 --- a/src/controllers/00-doc-template-controller.ts +++ b/src/controllers/00-doc-template-controller.ts @@ -146,6 +146,9 @@ export class DocTemplateController extends Controller { dateLongEN: (date: string) => dateFormat({ date, locale: "en-US" }), dateTimeLongEN: (date: string) => dateFormat({ date, withTime: true, locale: "en-US", monthStyle: "long" }), + address, + addressTH: (addr: FullAddress) => address(addr, "th"), + addressEN: (addr: FullAddress) => address(addr, "en"), addressFull, addressFullTH: (addr: FullAddress) => addressFull(addr, "th"), addressFullEN: (addr: FullAddress) => addressFull(addr, "en"), @@ -193,6 +196,26 @@ type FullAddress = { en?: boolean; }; +function address(addr: FullAddress, lang: "th" | "en" = "en") { + let fragments: string[]; + switch (lang) { + case "th": + fragments = [`${addr.address},`]; + if (addr.moo) fragments.push(`หมู่ ${addr.moo},`); + if (addr.soi) fragments.push(`ซอย ${addr.soi},`); + if (addr.street) fragments.push(`ถนน${addr.street},`); + break; + default: + fragments = [`${addr.addressEN},`]; + if (addr.mooEN) fragments.push(`Moo ${addr.mooEN},`); + if (addr.soiEN) fragments.push(`Soi ${addr.soiEN},`); + if (addr.streetEN) fragments.push(`${addr.streetEN} Rd.`); + break; + } + + return fragments.join(" "); +} + function addressFull(addr: FullAddress, lang: "th" | "en" = "en") { let fragments: string[]; switch (lang) {