Initial project upload

This commit is contained in:
Mohamed Mathar Irfan
2026-07-28 17:57:02 +05:30
commit ed6610d5d8
23919 changed files with 3003316 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
import walkTo from '../../methods/set/walk.js'
import { validate, parseTime, parseYear, parseMonth } from './_parsers.js'
export default [
// =====
// no dates
// =====
// '2012-06' month-only
{
reg: /^([0-9]{4})[\-/]([0-9]{2})$/,
parse: (s, m) => {
const obj = {
year: m[1],
month: parseInt(m[2], 10) - 1,
date: 1
}
if (validate(obj) === false) {
s.epoch = null
return s
}
walkTo(s, obj)
s = parseTime(s, m[4])
return s
}
},
//February 2017 (implied date)
{
reg: /^([a-z]+) ([0-9]{4})$/i,
parse: (s, arr) => {
const obj = {
year: parseYear(arr[2], s._today),
month: parseMonth(arr[1]),
date: s._today.date || 1
}
if (validate(obj) === false) {
s.epoch = null
return s
}
walkTo(s, obj)
s = parseTime(s, arr[4])
return s
}
},
{
// 'q2 2002'
reg: /^(q[0-9])( of)?( [0-9]{4})?/i,
parse: (s, arr) => {
const quarter = arr[1] || ''
s = s.quarter(quarter)
let year = arr[3] || ''
if (year) {
year = year.trim()
s = s.year(year)
}
return s
}
},
{
// 'summer 2002'
reg: /^(spring|summer|winter|fall|autumn)( of)?( [0-9]{4})?/i,
parse: (s, arr) => {
const season = arr[1] || ''
s = s.season(season)
let year = arr[3] || ''
if (year) {
year = year.trim()
s = s.year(year)
}
return s
}
},
{
// '200bc'
reg: /^[0-9,]+ ?b\.?c\.?$/i,
parse: (s, arr) => {
let str = arr[0] || ''
//make year-negative
str = str.replace(/^([0-9,]+) ?b\.?c\.?$/i, '-$1')
const d = new Date()
const obj = {
year: parseInt(str.trim(), 10),
month: d.getMonth(),
date: d.getDate()
}
if (validate(obj) === false) {
s.epoch = null
return s
}
walkTo(s, obj)
s = parseTime(s)
return s
}
},
{
// '200ad'
reg: /^[0-9,]+ ?(a\.?d\.?|c\.?e\.?)$/i,
parse: (s, arr) => {
let str = arr[0] || ''
//remove commas
str = str.replace(/,/g, '')
const d = new Date()
const obj = {
year: parseInt(str.trim(), 10),
month: d.getMonth(),
date: d.getDate()
}
if (validate(obj) === false) {
s.epoch = null
return s
}
walkTo(s, obj)
s = parseTime(s)
return s
}
},
{
// '1992'
reg: /^[0-9]{4}( ?a\.?d\.?)?$/i,
parse: (s, arr) => {
const today = s._today
// using today's date, but a new month is awkward.
if (today.month && !today.date) {
today.date = 1
}
const d = new Date()
const obj = {
year: parseYear(arr[0], today),
month: today.month || d.getMonth(),
date: today.date || d.getDate()
}
if (validate(obj) === false) {
s.epoch = null
return s
}
walkTo(s, obj)
s = parseTime(s)
return s
}
}
]