UNPKG

jtc-utils

Version:
86 lines (85 loc) 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JapaneseEra = void 0; const date_fns_1 = require("date-fns"); const escapeRegExp_cjs_1 = require("./util/escapeRegExp.cjs"); const getLocale_cjs_1 = require("./util/getLocale.cjs"); class JapaneseEra { name; localeNames; start; end; static MEIJI = new JapaneseEra("MEIJI", { ja: { long: "明治", short: "明", narrow: "M" }, en: { long: "Meiji", short: "Mei", narrow: "M" }, }, (0, date_fns_1.parseISO)("1868-10-23T00:00:00+09:00"), (0, date_fns_1.parseISO)("1912-07-30T00:00:00+09:00")); static TAISHO = new JapaneseEra("TAISHO", { ja: { long: "大正", short: "大", narrow: "T" }, en: { long: "Taisho", short: "Tai", narrow: "T" }, }, (0, date_fns_1.parseISO)("1912-07-30T00:00:00+09:00"), (0, date_fns_1.parseISO)("1926-12-26T00:00:00+09:00")); static SHOWA = new JapaneseEra("SHOWA", { ja: { long: "昭和", short: "昭", narrow: "S" }, en: { long: "Showa", short: "Sho", narrow: "S" }, }, (0, date_fns_1.parseISO)("1926-12-26T00:00:00+09:00"), (0, date_fns_1.parseISO)("1989-01-08T00:00:00+09:00")); static HEISEI = new JapaneseEra("HEISEI", { ja: { long: "平成", short: "平", narrow: "H" }, en: { long: "Heisei", short: "Hei", narrow: "H" }, }, (0, date_fns_1.parseISO)("1989-01-08T00:00:00+09:00"), (0, date_fns_1.parseISO)("2019-05-01T00:00:00+09:00")); static REIWA = new JapaneseEra("REIWA", { ja: { long: "令和", short: "令", narrow: "R" }, en: { long: "Reiwa", short: "Rei", narrow: "R" }, }, (0, date_fns_1.parseISO)("2019-05-01T00:00:00+09:00")); static values() { return [ JapaneseEra.MEIJI, JapaneseEra.TAISHO, JapaneseEra.SHOWA, JapaneseEra.HEISEI, JapaneseEra.REIWA, ]; } static of(date) { for (const value of JapaneseEra.values()) { if (value.includes(date)) { return value; } } } static from(name, options) { const locale = options?.locale ?? (0, getLocale_cjs_1.getLocale)(); const keyRE = new RegExp(`^${(0, escapeRegExp_cjs_1.escapeRegExp)(name)}$`, "i"); for (const value of JapaneseEra.values()) { if (keyRE.test(value.name)) { return value; } const localNames = value.localeNames[locale] ?? value.localeNames.en; for (const key in localNames) { if (keyRE.test(localNames[key])) { return value; } } } } constructor(name, localeNames, start, end) { this.name = name; this.localeNames = localeNames; this.start = start; this.end = end; } includes(date) { return this.start <= date && (this.end == null || this.end > date); } toLocaleString(locale, options) { const target = (locale ?? (0, getLocale_cjs_1.getLocale)()).split(/-/g)[0]; const style = options?.style || "long"; const names = this.localeNames[target]; if (names) { return names[style]; } return this.localeNames.en[style]; } toString() { return this.name; } } exports.JapaneseEra = JapaneseEra;