jtc-utils
Version:
Utilities for Japanese Traditional Companies
86 lines (85 loc) • 3.37 kB
JavaScript
;
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;