|
-
- 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
- }
|