Files
appco_dist/.output/server/node_modules/moment-jalaali/index.js
T
2025-07-23 16:57:31 +03:30

1108 lines
30 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
module.exports = jMoment
var moment = require('moment/moment')
, jalaali = require('jalaali-js')
/************************************
Constants
************************************/
var formattingTokens = /(\[[^\[]*\])|(\\)?j(Mo|MM?M?M?|Do|DDDo|DD?D?D?|w[o|w]?|YYYYY|YYYY|YY|gg(ggg?)?|)|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g
, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS?|LL?L?L?|l{1,4})/g
, parseTokenOneOrTwoDigits = /\d\d?/
, parseTokenOneToThreeDigits = /\d{1,3}/
, parseTokenThreeDigits = /\d{3}/
, parseTokenFourDigits = /\d{1,4}/
, parseTokenSixDigits = /[+\-]?\d{1,6}/
, parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i
, parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i
, parseTokenT = /T/i
, parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/
, symbolMap = {
'1': '۱',
'2': '۲',
'3': '۳',
'4': '۴',
'5': '۵',
'6': '۶',
'7': '۷',
'8': '۸',
'9': '۹',
'0': '۰'
}
, numberMap = {
'۱': '1',
'۲': '2',
'۳': '3',
'۴': '4',
'۵': '5',
'۶': '6',
'۷': '7',
'۸': '8',
'۹': '9',
'۰': '0'
}
, unitAliases =
{ jm: 'jmonth'
, jmonths: 'jmonth'
, jy: 'jyear'
, jyears: 'jyear'
}
, formatFunctions = {}
, ordinalizeTokens = 'DDD w M D'.split(' ')
, paddedTokens = 'M D w'.split(' ')
, formatTokenFunctions =
{ jM: function () {
return this.jMonth() + 1
}
, jMMM: function (format) {
return this.localeData().jMonthsShort(this, format)
}
, jMMMM: function (format) {
return this.localeData().jMonths(this, format)
}
, jD: function () {
return this.jDate()
}
, jDDD: function () {
return this.jDayOfYear()
}
, jw: function () {
return this.jWeek()
}
, jYY: function () {
return leftZeroFill(this.jYear() % 100, 2)
}
, jYYYY: function () {
return leftZeroFill(this.jYear(), 4)
}
, jYYYYY: function () {
return leftZeroFill(this.jYear(), 5)
}
, jgg: function () {
return leftZeroFill(this.jWeekYear() % 100, 2)
}
, jgggg: function () {
return this.jWeekYear()
}
, jggggg: function () {
return leftZeroFill(this.jWeekYear(), 5)
}
}
function padToken(func, count) {
return function (a) {
return leftZeroFill(func.call(this, a), count)
}
}
function ordinalizeToken(func, period) {
return function (a) {
return this.localeData().ordinal(func.call(this, a), period)
}
}
(function () {
var i
while (ordinalizeTokens.length) {
i = ordinalizeTokens.pop()
formatTokenFunctions['j' + i + 'o'] = ordinalizeToken(formatTokenFunctions['j' + i], i)
}
while (paddedTokens.length) {
i = paddedTokens.pop()
formatTokenFunctions['j' + i + i] = padToken(formatTokenFunctions['j' + i], 2)
}
formatTokenFunctions.jDDDD = padToken(formatTokenFunctions.jDDD, 3)
}())
/************************************
Helpers
************************************/
function extend(a, b) {
var key
for (key in b)
if (b.hasOwnProperty(key))
a[key] = b[key]
return a
}
function leftZeroFill(number, targetLength) {
var output = number + ''
while (output.length < targetLength)
output = '0' + output
return output
}
function isArray(input) {
return Object.prototype.toString.call(input) === '[object Array]'
}
// function compareArrays(array1, array2) {
// var len = Math.min(array1.length, array2.length)
// , lengthDiff = Math.abs(array1.length - array2.length)
// , diffs = 0
// , i
// for (i = 0; i < len; i += 1)
// if (~~array1[i] !== ~~array2[i])
// diffs += 1
// return diffs + lengthDiff
// }
function normalizeUnits(units) {
if (units) {
var lowered = units.toLowerCase()
units = unitAliases[lowered] || lowered
}
return units
}
function setDate(m, year, month, date) {
var d = m._d
if (isNaN(year)) {
m._isValid = false
}
if (m._isUTC) {
/*eslint-disable new-cap*/
m._d = new Date(Date.UTC(year, month, date,
d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds()))
/*eslint-enable new-cap*/
} else {
m._d = new Date(year, month, date,
d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds())
}
}
function objectCreate(parent) {
function F() {}
F.prototype = parent
return new F()
}
function getPrototypeOf(object) {
if (Object.getPrototypeOf)
return Object.getPrototypeOf(object)
else if (''.__proto__)
return object.__proto__
else
return object.constructor.prototype
}
/************************************
Languages
************************************/
extend(getPrototypeOf(moment.localeData()),
{ _jMonths: [ 'Farvardin'
, 'Ordibehesht'
, 'Khordaad'
, 'Tir'
, 'Amordaad'
, 'Shahrivar'
, 'Mehr'
, 'Aabaan'
, 'Aazar'
, 'Dey'
, 'Bahman'
, 'Esfand'
]
, jMonths: function (m) {
return this._jMonths[m.jMonth()]
}
, _jMonthsShort: [ 'Far'
, 'Ord'
, 'Kho'
, 'Tir'
, 'Amo'
, 'Sha'
, 'Meh'
, 'Aab'
, 'Aaz'
, 'Dey'
, 'Bah'
, 'Esf'
]
, jMonthsShort: function (m) {
return this._jMonthsShort[m.jMonth()]
}
, jMonthsParse: function (monthName) {
var i
, mom
, regex
if (!this._jMonthsParse)
this._jMonthsParse = []
for (i = 0; i < 12; i += 1) {
// Make the regex if we don't have it already.
if (!this._jMonthsParse[i]) {
mom = jMoment([2000, (2 + i) % 12, 25])
regex = '^' + this.jMonths(mom, '') + '|^' + this.jMonthsShort(mom, '')
this._jMonthsParse[i] = new RegExp(regex.replace('.', ''), 'i')
}
// Test the regex.
if (this._jMonthsParse[i].test(monthName))
return i
}
}
}
)
/************************************
Formatting
************************************/
function makeFormatFunction(format) {
var array = format.match(formattingTokens)
, length = array.length
, i
for (i = 0; i < length; i += 1)
if (formatTokenFunctions[array[i]])
array[i] = formatTokenFunctions[array[i]]
return function (mom) {
var output = ''
for (i = 0; i < length; i += 1)
output += array[i] instanceof Function ? '[' + array[i].call(mom, format) + ']' : array[i]
return output
}
}
/************************************
Parsing
************************************/
function getParseRegexForToken(token, config) {
switch (token) {
case 'jDDDD':
return parseTokenThreeDigits
case 'jYYYY':
return parseTokenFourDigits
case 'jYYYYY':
return parseTokenSixDigits
case 'jDDD':
return parseTokenOneToThreeDigits
case 'jMMM':
case 'jMMMM':
return parseTokenWord
case 'jMM':
case 'jDD':
case 'jYY':
case 'jM':
case 'jD':
return parseTokenOneOrTwoDigits
case 'DDDD':
return parseTokenThreeDigits
case 'YYYY':
return parseTokenFourDigits
case 'YYYYY':
return parseTokenSixDigits
case 'S':
case 'SS':
case 'SSS':
case 'DDD':
return parseTokenOneToThreeDigits
case 'MMM':
case 'MMMM':
case 'dd':
case 'ddd':
case 'dddd':
return parseTokenWord
case 'a':
case 'A':
return moment.localeData(config._l)._meridiemParse
case 'X':
return parseTokenTimestampMs
case 'Z':
case 'ZZ':
return parseTokenTimezone
case 'T':
return parseTokenT
case 'MM':
case 'DD':
case 'YY':
case 'HH':
case 'hh':
case 'mm':
case 'ss':
case 'M':
case 'D':
case 'd':
case 'H':
case 'h':
case 'm':
case 's':
return parseTokenOneOrTwoDigits
default:
return new RegExp(token.replace('\\', ''))
}
}
function addTimeToArrayFromToken(token, input, config) {
var a
, datePartArray = config._a
switch (token) {
case 'jM':
case 'jMM':
datePartArray[1] = input == null ? 0 : ~~input - 1
break
case 'jMMM':
case 'jMMMM':
a = moment.localeData(config._l).jMonthsParse(input)
if (a != null)
datePartArray[1] = a
else
config._isValid = false
break
case 'jD':
case 'jDD':
case 'jDDD':
case 'jDDDD':
if (input != null)
datePartArray[2] = ~~input
break
case 'jYY':
datePartArray[0] = ~~input + (~~input > 47 ? 1300 : 1400)
break
case 'jYYYY':
case 'jYYYYY':
datePartArray[0] = ~~input
}
if (input == null)
config._isValid = false
}
function dateFromArray(config) {
var g
, j
, jy = config._a[0]
, jm = config._a[1]
, jd = config._a[2]
if ((jy == null) && (jm == null) && (jd == null))
return [0, 0, 1]
jy = jy != null ? jy : 0
jm = jm != null ? jm : 0
jd = jd != null ? jd : 1
if (jd < 1 || jd > jMoment.jDaysInMonth(jy, jm) || jm < 0 || jm > 11)
config._isValid = false
g = toGregorian(jy, jm, jd)
j = toJalaali(g.gy, g.gm, g.gd)
if (isNaN(g.gy))
config._isValid = false
config._jDiff = 0
if (~~j.jy !== jy)
config._jDiff += 1
if (~~j.jm !== jm)
config._jDiff += 1
if (~~j.jd !== jd)
config._jDiff += 1
return [g.gy, g.gm, g.gd]
}
function makeDateFromStringAndFormat(config) {
var tokens = config._f.match(formattingTokens)
, string = config._i + ''
, len = tokens.length
, i
, token
, parsedInput
config._a = []
for (i = 0; i < len; i += 1) {
token = tokens[i]
parsedInput = (getParseRegexForToken(token, config).exec(string) || [])[0]
if (parsedInput)
string = string.slice(string.indexOf(parsedInput) + parsedInput.length)
if (formatTokenFunctions[token])
addTimeToArrayFromToken(token, parsedInput, config)
}
if (string)
config._il = string
return dateFromArray(config)
}
function makeDateFromStringAndArray(config, utc) {
var len = config._f.length
, i
, format
, tempMoment
, bestMoment
, currentScore
, scoreToBeat
if (len === 0) {
return makeMoment(new Date(NaN))
}
for (i = 0; i < len; i += 1) {
format = config._f[i]
currentScore = 0
tempMoment = makeMoment(config._i, format, config._l, config._strict, utc)
if (!tempMoment.isValid()) continue
// currentScore = compareArrays(tempMoment._a, tempMoment.toArray())
currentScore += tempMoment._jDiff
if (tempMoment._il)
currentScore += tempMoment._il.length
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore
bestMoment = tempMoment
}
}
return bestMoment
}
function removeParsedTokens(config) {
var string = config._i + ''
, input = ''
, format = ''
, array = config._f.match(formattingTokens)
, len = array.length
, i
, match
, parsed
for (i = 0; i < len; i += 1) {
match = array[i]
parsed = (getParseRegexForToken(match, config).exec(string) || [])[0]
if (parsed)
string = string.slice(string.indexOf(parsed) + parsed.length)
if (!(formatTokenFunctions[match] instanceof Function)) {
format += match
if (parsed)
input += parsed
}
}
config._i = input
config._f = format
}
/************************************
Week of Year
************************************/
function jWeekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
var end = firstDayOfWeekOfYear - firstDayOfWeek
, daysToDayOfWeek = firstDayOfWeekOfYear - mom.day()
, adjustedMoment
if (daysToDayOfWeek > end) {
daysToDayOfWeek -= 7
}
if (daysToDayOfWeek < end - 7) {
daysToDayOfWeek += 7
}
adjustedMoment = jMoment(mom).add(daysToDayOfWeek, 'd')
return { week: Math.ceil(adjustedMoment.jDayOfYear() / 7)
, year: adjustedMoment.jYear()
}
}
/************************************
Top Level Functions
************************************/
var maxTimestamp = 57724432199999
function makeMoment(input, format, lang, strict, utc) {
if (typeof lang === 'boolean') {
strict = lang
lang = undefined
}
if (format && typeof format === 'string')
format = fixFormat(format, moment)
var config =
{ _i: input
, _f: format
, _l: lang
, _strict: strict
, _isUTC: utc
}
, date
, m
, jm
, origInput = input
, origFormat = format
if (format) {
if (isArray(format)) {
return makeDateFromStringAndArray(config, utc)
} else {
date = makeDateFromStringAndFormat(config)
removeParsedTokens(config)
format = 'YYYY-MM-DD-' + config._f
input = leftZeroFill(date[0], 4) + '-'
+ leftZeroFill(date[1] + 1, 2) + '-'
+ leftZeroFill(date[2], 2) + '-'
+ config._i
}
}
if (utc)
m = moment.utc(input, format, lang, strict)
else
m = moment(input, format, lang, strict)
if (config._isValid === false)
m._isValid = false
m._jDiff = config._jDiff || 0
jm = objectCreate(jMoment.fn)
extend(jm, m)
if (strict && format && jm.isValid()) {
jm._isValid = jm.format(origFormat) === origInput
}
if (m._d.getTime() > maxTimestamp) {
jm._isValid = false
}
return jm
}
function jMoment(input, format, lang, strict) {
return makeMoment(input, format, lang, strict, false)
}
extend(jMoment, moment)
jMoment.fn = objectCreate(moment.fn)
jMoment.utc = function (input, format, lang, strict) {
return makeMoment(input, format, lang, strict, true)
}
jMoment.unix = function (input) {
return makeMoment(input * 1000)
}
/************************************
jMoment Prototype
************************************/
function fixFormat(format, _moment) {
var i = 5
var replace = function (input) {
return _moment.localeData().longDateFormat(input) || input
}
while (i > 0 && localFormattingTokens.test(format)) {
i -= 1
format = format.replace(localFormattingTokens, replace)
}
return format
}
jMoment.fn.format = function (format) {
if (format) {
format = fixFormat(format, this)
if (!formatFunctions[format]) {
formatFunctions[format] = makeFormatFunction(format)
}
format = formatFunctions[format](this)
}
return moment.fn.format.call(this, format)
}
jMoment.fn.jYear = function (input) {
var lastDay
, j
, g
if (typeof input === 'number') {
j = toJalaali(this.year(), this.month(), this.date())
lastDay = Math.min(j.jd, jMoment.jDaysInMonth(input, j.jm))
g = toGregorian(input, j.jm, lastDay)
setDate(this, g.gy, g.gm, g.gd)
moment.updateOffset(this)
return this
} else {
return toJalaali(this.year(), this.month(), this.date()).jy
}
}
jMoment.fn.jMonth = function (input) {
var lastDay
, j
, g
if (input != null) {
if (typeof input === 'string') {
input = this.localeData().jMonthsParse(input)
if (typeof input !== 'number')
return this
}
j = toJalaali(this.year(), this.month(), this.date())
lastDay = Math.min(j.jd, jMoment.jDaysInMonth(j.jy, input))
this.jYear(j.jy + div(input, 12))
input = mod(input, 12)
if (input < 0) {
input += 12
this.jYear(this.jYear() - 1)
}
g = toGregorian(this.jYear(), input, lastDay)
setDate(this, g.gy, g.gm, g.gd)
moment.updateOffset(this)
return this
} else {
return toJalaali(this.year(), this.month(), this.date()).jm
}
}
jMoment.fn.jDate = function (input) {
var j
, g
if (typeof input === 'number') {
j = toJalaali(this.year(), this.month(), this.date())
g = toGregorian(j.jy, j.jm, input)
setDate(this, g.gy, g.gm, g.gd)
moment.updateOffset(this)
return this
} else {
return toJalaali(this.year(), this.month(), this.date()).jd
}
}
jMoment.fn.jDayOfYear = function (input) {
var dayOfYear = Math.round((jMoment(this).startOf('day') - jMoment(this).startOf('jYear')) / 864e5) + 1
return input == null ? dayOfYear : this.add(input - dayOfYear, 'd')
}
jMoment.fn.jWeek = function (input) {
var week = jWeekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).week
return input == null ? week : this.add((input - week) * 7, 'd')
}
jMoment.fn.jWeekYear = function (input) {
var year = jWeekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year
return input == null ? year : this.add(input - year, 'y')
}
jMoment.fn.add = function (val, units) {
var temp
if (units !== null && !isNaN(+units)) {
temp = val
val = units
units = temp
}
units = normalizeUnits(units)
if (units === 'jyear') {
this.jYear(this.jYear() + val)
} else if (units === 'jmonth') {
this.jMonth(this.jMonth() + val)
} else {
moment.fn.add.call(this, val, units)
if (isNaN(this.jYear())) {
this._isValid = false
}
}
return this
}
jMoment.fn.subtract = function (val, units) {
var temp
if (units !== null && !isNaN(+units)) {
temp = val
val = units
units = temp
}
units = normalizeUnits(units)
if (units === 'jyear') {
this.jYear(this.jYear() - val)
} else if (units === 'jmonth') {
this.jMonth(this.jMonth() - val)
} else {
moment.fn.subtract.call(this, val, units)
}
return this
}
jMoment.fn.startOf = function (units) {
units = normalizeUnits(units)
if (units === 'jyear' || units === 'jmonth') {
if (units === 'jyear') {
this.jMonth(0)
}
this.jDate(1)
this.hours(0)
this.minutes(0)
this.seconds(0)
this.milliseconds(0)
return this
} else {
return moment.fn.startOf.call(this, units)
}
}
jMoment.fn.endOf = function (units) {
units = normalizeUnits(units)
if (units === undefined || units === 'milisecond') {
return this
}
return this.startOf(units).add(1, (units === 'isoweek' ? 'week' : units)).subtract(1, 'ms')
}
jMoment.fn.isSame = function (other, units) {
units = normalizeUnits(units)
if (units === 'jyear' || units === 'jmonth') {
return moment.fn.isSame.call(this.startOf(units), other.startOf(units))
}
return moment.fn.isSame.call(this, other, units)
}
jMoment.fn.clone = function () {
return jMoment(this)
}
jMoment.fn.jYears = jMoment.fn.jYear
jMoment.fn.jMonths = jMoment.fn.jMonth
jMoment.fn.jDates = jMoment.fn.jDate
jMoment.fn.jWeeks = jMoment.fn.jWeek
/************************************
jMoment Statics
************************************/
jMoment.jDaysInMonth = function (year, month) {
year += div(month, 12)
month = mod(month, 12)
if (month < 0) {
month += 12
year -= 1
}
if (month < 6) {
return 31
} else if (month < 11) {
return 30
} else if (jMoment.jIsLeapYear(year)) {
return 30
} else {
return 29
}
}
jMoment.jIsLeapYear = jalaali.isLeapJalaaliYear
jMoment.loadPersian = function (args) {
var usePersianDigits = args !== undefined && args.hasOwnProperty('usePersianDigits') ? args.usePersianDigits : false
var dialect = args !== undefined && args.hasOwnProperty('dialect') ? args.dialect : 'persian'
moment.locale('fa')
moment.updateLocale('fa'
, { months: ('ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر').split('_')
, monthsShort: ('ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر').split('_')
, weekdays:
{
'persian': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'persian-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysShort:
{
'persian': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'persian-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysMin:
{
'persian': 'ی_د_س_چ_پ_آ_ش'.split('_'),
'persian-modern': 'ی_د_س_چ_پ_ج_ش'.split('_')
}[dialect]
, longDateFormat:
{ LT: 'HH:mm'
, L: 'jYYYY/jMM/jDD'
, LL: 'jD jMMMM jYYYY'
, LLL: 'jD jMMMM jYYYY LT'
, LLLL: 'dddd، jD jMMMM jYYYY LT'
}
, calendar:
{ sameDay: '[امروز ساعت] LT'
, nextDay: '[فردا ساعت] LT'
, nextWeek: 'dddd [ساعت] LT'
, lastDay: '[دیروز ساعت] LT'
, lastWeek: 'dddd [ی پیش ساعت] LT'
, sameElse: 'L'
}
, relativeTime:
{ future: 'در %s'
, past: '%s پیش'
, s: 'چند ثانیه'
, m: '1 دقیقه'
, mm: '%d دقیقه'
, h: '1 ساعت'
, hh: '%d ساعت'
, d: '1 روز'
, dd: '%d روز'
, M: '1 ماه'
, MM: '%d ماه'
, y: '1 سال'
, yy: '%d سال'
}
, preparse: function (string) {
if (usePersianDigits) {
return string.replace(/[۰-۹]/g, function (match) {
return numberMap[match]
}).replace(/،/g, ',')
}
return string
}
, postformat: function (string) {
if (usePersianDigits) {
return string.replace(/\d/g, function (match) {
return symbolMap[match]
}).replace(/,/g, '،')
}
return string
}
, ordinal: '%dم'
, week:
{ dow: 6 // Saturday is the first day of the week.
, doy: 12 // The week that contains Jan 1st is the first week of the year.
}
, meridiem: function (hour) {
return hour < 12 ? 'ق.ظ' : 'ب.ظ'
}
, jMonths:
{
'persian': ('فروردین_اردیبهشت_خرداد_تیر_امرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند').split('_'),
'persian-modern': ('فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند').split('_')
}[dialect]
, jMonthsShort:
{
'persian': 'فرو_ارد_خرد_تیر_امر_شهر_مهر_آبا_آذر_دی_بهم_اسف'.split('_'),
'persian-modern': 'فرو_ارد_خرد_تیر_مرد_شهر_مهر_آبا_آذر_دی_بهم_اسف'.split('_')
}[dialect]
}
)
}
jMoment.loadPersian_dari = function (args) {
var usePersianDigits = args !== undefined && args.hasOwnProperty('usePersianDigits') ? args.usePersianDigits : false
var dialect = args !== undefined && args.hasOwnProperty('dialect') ? args.dialect : 'persian-dari'
moment.locale('fa-af')
moment.updateLocale('fa-af'
, { months: ('جنوری_فبروری_مارچ_اپریل_می_جون_جولای_آگست_سپتمبر_اکتوبر_نومبر_دیسمبر').split('_')
, monthsShort: ('جنوری_فبروری_مارچ_اپریل_می_جون_جولای_آگست_سپتمبر_اکتوبر_نومبر_دیسمبر').split('_')
, weekdays:
{
'persian': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'persian-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysShort:
{
'persian': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'persian-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysMin:
{
'persian': 'ی_د_س_چ_پ_آ_ش'.split('_'),
'persian-modern': 'ی_د_س_چ_پ_ج_ش'.split('_')
}[dialect]
, longDateFormat:
{ LT: 'HH:mm'
, L: 'jYYYY/jMM/jDD'
, LL: 'jD jMMMM jYYYY'
, LLL: 'jD jMMMM jYYYY LT'
, LLLL: 'dddd، jD jMMMM jYYYY LT'
}
, calendar:
{ sameDay: '[امروز ساعت] LT'
, nextDay: '[فردا ساعت] LT'
, nextWeek: 'dddd [ساعت] LT'
, lastDay: '[دیروز ساعت] LT'
, lastWeek: 'dddd [ی پیش ساعت] LT'
, sameElse: 'L'
}
, relativeTime:
{ future: 'در %s'
, past: '%s پیش'
, s: 'چند ثانیه'
, m: '1 دقیقه'
, mm: '%d دقیقه'
, h: '1 ساعت'
, hh: '%d ساعت'
, d: '1 روز'
, dd: '%d روز'
, M: '1 ماه'
, MM: '%d ماه'
, y: '1 سال'
, yy: '%d سال'
}
, preparse: function (string) {
if (usePersianDigits) {
return string.replace(/[۰-۹]/g, function (match) {
return numberMap[match]
}).replace(/،/g, ',')
}
return string
}
, postformat: function (string) {
if (usePersianDigits) {
return string.replace(/\d/g, function (match) {
return symbolMap[match]
}).replace(/,/g, '،')
}
return string
}
, ordinal: '%dم'
, week:
{ dow: 6 // Saturday is the first day of the week.
, doy: 12 // The week that contains Jan 1st is the first week of the year.
}
, meridiem: function (hour) {
return hour < 12 ? 'ق.ظ' : 'ب.ظ'
}
, jMonths:
{
'persian-dari': ('حمل_ثور_جوزا_سرطان_اسد_سنبله_میزان_عقرب_قوس_جدی_دلو_حوت').split('_'),
'persian-modern-dari': ('حمل_ثور_جوزا_سرطان_اسد_سنبله_میزان_عقرب_قوس_جدی_دلو_حوت').split('_')
}[dialect]
, jMonthsShort:
{
'persian-dari': 'حمل_ثور_جوزا_سرط_اسد_سنب_میز_عقر_قوس_جدی_دلو_حوت'.split('_'),
'persian-modern-dari': 'حمل_ثور_جوزا_سرط_اسد_سنب_میز_عقر_قوس_جدی_دلو_حوت'.split('_')
}[dialect]
}
)
}
jMoment.loadPashto = function (args) {
var usePersianDigits = args !== undefined && args.hasOwnProperty('usePersianDigits') ? args.usePersianDigits : false
var dialect = args !== undefined && args.hasOwnProperty('dialect') ? args.dialect : 'pashto'
moment.locale('ps-af')
moment.updateLocale('ps-af'
, { months: ('جنوری_فبروری_مارچ_اپریل_می_جون_جولای_آگست_سپتمبر_اکتوبر_نومبر_دیسمبر').split('_')
, monthsShort: ('جنوری_فبروری_مارچ_اپریل_می_جون_جولای_آگست_سپتمبر_اکتوبر_نومبر_دیسمبر').split('_')
, weekdays:
{
'pashto': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'pashto-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysShort:
{
'pashto': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_آدینه_شنبه').split('_'),
'pashto-modern': ('یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه').split('_')
}[dialect]
, weekdaysMin:
{
'pashto': 'ی_د_س_چ_پ_آ_ش'.split('_'),
'pashto-modern': 'ی_د_س_چ_پ_ج_ش'.split('_')
}[dialect]
, longDateFormat:
{ LT: 'HH:mm'
, L: 'jYYYY/jMM/jDD'
, LL: 'jD jMMMM jYYYY'
, LLL: 'jD jMMMM jYYYY LT'
, LLLL: 'dddd، jD jMMMM jYYYY LT'
}
, calendar:
{ sameDay: '[امروز ساعت] LT'
, nextDay: '[فردا ساعت] LT'
, nextWeek: 'dddd [ساعت] LT'
, lastDay: '[دیروز ساعت] LT'
, lastWeek: 'dddd [ی پیش ساعت] LT'
, sameElse: 'L'
}
, relativeTime:
{ future: 'در %s'
, past: '%s پیش'
, s: 'چند ثانیه'
, m: '1 دقیقه'
, mm: '%d دقیقه'
, h: '1 ساعت'
, hh: '%d ساعت'
, d: '1 روز'
, dd: '%d روز'
, M: '1 ماه'
, MM: '%d ماه'
, y: '1 سال'
, yy: '%d سال'
}
, preparse: function (string) {
if (usePersianDigits) {
return string.replace(/[۰-۹]/g, function (match) {
return numberMap[match]
}).replace(/،/g, ',')
}
return string
}
, postformat: function (string) {
if (usePersianDigits) {
return string.replace(/\d/g, function (match) {
return symbolMap[match]
}).replace(/,/g, '،')
}
return string
}
, ordinal: '%dم'
, week:
{ dow: 6 // Saturday is the first day of the week.
, doy: 12 // The week that contains Jan 1st is the first week of the year.
}
, meridiem: function (hour) {
return hour < 12 ? 'ق.ظ' : 'ب.ظ'
}
, jMonths:
{
'pashto': ('وری_غویی_غبرګولی_چنګاښ_زمری_وږی_تله_لړم_لیندی_مرغومی_سلواغه_کب').split('_'),
'pashto-modern': ('وری_غویی_غبرګولی_چنګاښ_زمری_وږی_تله_لړم_لیندی_مرغومی_سلواغه_کب').split('_')
}[dialect]
, jMonthsShort:
{
'pashto': 'وری_غوی_غبر_چنګ_زمر_وږی_لړم_لین_مرغ_سلو_کب'.split('_'),
'pashto-modern': 'وری_غوی_غبر_چنګ_زمر_وږی_لړم_لین_مرغ_سلو_کب'.split('_')
}[dialect]
}
)
}
jMoment.jConvert = { toJalaali: toJalaali
, toGregorian: toGregorian
}
/************************************
Jalaali Conversion
************************************/
function toJalaali(gy, gm, gd) {
try {
var j = jalaali.toJalaali(gy, gm + 1, gd)
j.jm -= 1
return j
} catch (e) {
return {
jy: NaN
, jm: NaN
, jd: NaN
}
}
}
function toGregorian(jy, jm, jd) {
try {
var g = jalaali.toGregorian(jy, jm + 1, jd)
g.gm -= 1
return g
} catch (e) {
return {
gy: NaN
, gm: NaN
, gd: NaN
}
}
}
/*
Utility helper functions.
*/
function div(a, b) {
return ~~(a / b)
}
function mod(a, b) {
return a - ~~(a / b) * b
}