UNPKG

@marketto/codice-fiscale-utils

Version:

TS & JS utilities to handle Italian Codice Fiscale

35 lines (28 loc) 847 B
import { DateDay } from "../date-utils/"; import GenderWeight from "../enums/gender-weight.enum"; import type Genders from "../types/genders.type"; class Gender { public static getDay(genderDay: number): DateDay | null { const plainDay = genderDay % GenderWeight.F; return plainDay > 0 && plainDay <= this.MAX_MONTH_DAY ? (plainDay as DateDay) : null; } public static getGender(genderDay: number): Genders | null { return ( this.toArray().find( (gender) => genderDay >= GenderWeight[gender] && genderDay <= GenderWeight[gender] + this.MAX_MONTH_DAY ) || null ); } public static genderizeDay(day: number, gender: Genders): number { return day + GenderWeight[gender]; } public static toArray(): Genders[] { return ["M", "F"]; } private static MAX_MONTH_DAY: number = 31; } export default Gender;