diff options
| -rw-r--r-- | sub/subService.go | 5 | ||||
| -rw-r--r-- | web/assets/js/model/setting.js | 1 | ||||
| -rw-r--r-- | web/assets/moment/moment-jalali.min.js | 1252 | ||||
| -rw-r--r-- | web/assets/persian-datepicker/persian-datepicker.min.css | 1 | ||||
| -rw-r--r-- | web/assets/persian-datepicker/persian-datepicker.min.js | 1 | ||||
| -rw-r--r-- | web/entity/entity.go | 1 | ||||
| -rw-r--r-- | web/html/xui/client_bulk_modal.html | 7 | ||||
| -rw-r--r-- | web/html/xui/client_modal.html | 3 | ||||
| -rw-r--r-- | web/html/xui/component/persianDatepicker.html | 60 | ||||
| -rw-r--r-- | web/html/xui/form/client.html | 4 | ||||
| -rw-r--r-- | web/html/xui/form/inbound.html | 4 | ||||
| -rw-r--r-- | web/html/xui/inbound_modal.html | 3 | ||||
| -rw-r--r-- | web/html/xui/inbounds.html | 4 | ||||
| -rw-r--r-- | web/html/xui/settings.html | 28 | ||||
| -rw-r--r-- | web/service/setting.go | 6 | ||||
| -rw-r--r-- | web/translation/translate.en_US.toml | 2 | ||||
| -rw-r--r-- | web/translation/translate.es_ES.toml | 2 | ||||
| -rw-r--r-- | web/translation/translate.fa_IR.toml | 2 | ||||
| -rw-r--r-- | web/translation/translate.ru_RU.toml | 2 | ||||
| -rw-r--r-- | web/translation/translate.vi_VN.toml | 2 | ||||
| -rw-r--r-- | web/translation/translate.zh_Hans.toml | 2 |
21 files changed, 1389 insertions, 3 deletions
diff --git a/sub/subService.go b/sub/subService.go index 332f8150..ddf9692b 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -20,6 +20,7 @@ type SubService struct { address string showInfo bool remarkModel string + datepicker string inboundService service.InboundService settingService service.SettingService } @@ -39,6 +40,10 @@ func (s *SubService) GetSubs(subId string, host string, showInfo bool) ([]string if err != nil { s.remarkModel = "-ieo" } + s.datepicker, err = s.settingService.GetDatepicker() + if err != nil { + s.datepicker = "gregorian" + } for _, inbound := range inbounds { clients, err := s.inboundService.GetClients(inbound) if err != nil { diff --git a/web/assets/js/model/setting.js b/web/assets/js/model/setting.js index 86bea983..3ddddb18 100644 --- a/web/assets/js/model/setting.js +++ b/web/assets/js/model/setting.js @@ -12,6 +12,7 @@ class AllSetting { this.expireDiff = ""; this.trafficDiff = ""; this.remarkModel = "-ieo"; + this.datepicker = "gregorian"; this.tgBotEnable = false; this.tgBotToken = ""; this.tgBotChatId = ""; diff --git a/web/assets/moment/moment-jalali.min.js b/web/assets/moment/moment-jalali.min.js new file mode 100644 index 00000000..a5947644 --- /dev/null +++ b/web/assets/moment/moment-jalali.min.js @@ -0,0 +1,1252 @@ + +;(function(){ + + /** + * Require the module at `name`. + * + * @param {String} name + * @return {Object} exports + * @api public + */ + + function require(name) { + var module = require.modules[name]; + if (!module) throw new Error('failed to require "' + name + '"'); + + if (!('exports' in module) && typeof module.definition === 'function') { + module.client = module.component = true; + module.definition.call(this, module.exports = {}, module); + delete module.definition; + } + + return module.exports; + } + + /** + * Registered modules. + */ + + require.modules = { + moment: { exports: moment } + }; + + /** + * Register module at `name` with callback `definition`. + * + * @param {String} name + * @param {Function} definition + * @api private + */ + + require.register = function (name, definition) { + require.modules[name] = { + definition: definition + }; + }; + + /** + * Define a module's exports immediately with `exports`. + * + * @param {String} name + * @param {Generic} exports + * @api private + */ + + require.define = function (name, exports) { + require.modules[name] = { + exports: exports + }; + }; + + require.register("jalaali-js", function (exports, module) { + /* + Expose functions. + */ + module.exports = + { toJalaali: toJalaali + , toGregorian: toGregorian + , isValidJalaaliDate: isValidJalaaliDate + , isLeapJalaaliYear: isLeapJalaaliYear + , jalaaliMonthLength: jalaaliMonthLength + , jalCal: jalCal + , j2d: j2d + , d2j: d2j + , g2d: g2d + , d2g: d2g + } + + /* + Converts a Gregorian date to Jalaali. + */ + function toJalaali(gy, gm, gd) { + if (Object.prototype.toString.call(gy) === '[object Date]') { + gd = gy.getDate() + gm = gy.getMonth() + 1 + gy = gy.getFullYear() + } + return d2j(g2d(gy, gm, gd)) + } + + /* + Converts a Jalaali date to Gregorian. + */ + function toGregorian(jy, jm, jd) { + return d2g(j2d(jy, jm, jd)) + } + + /* + Checks whether a Jalaali date is valid or not. + */ + function isValidJalaaliDate(jy, jm, jd) { + return jy >= -61 && jy <= 3177 && + jm >= 1 && jm <= 12 && + jd >= 1 && jd <= jalaaliMonthLength(jy, jm) + } + + /* + Is this a leap year or not? + */ + function isLeapJalaaliYear(jy) { + return jalCal(jy).leap === 0 + } + + /* + Number of days in a given month in a Jalaali year. + */ + function jalaaliMonthLength(jy, jm) { + if (jm <= 6) return 31 + if (jm <= 11) return 30 + if (isLeapJalaaliYear(jy)) return 30 + return 29 + } + + /* + This function determines if the Jalaali (Persian) year is + leap (366-day long) or is the common year (365 days), and + finds the day in March (Gregorian calendar) of the first + day of the Jalaali year (jy). + + @param jy Jalaali calendar year (-61 to 3177) + @return + leap: number of years since the last leap year (0 to 4) + gy: Gregorian year of the beginning of Jalaali year + march: the March day of Farvardin the 1st (1st day of jy) + @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm + @see: http://www.fourmilab.ch/documents/calendar/ + */ + function jalCal(jy) { + // Jalaali years starting the 33-year rule. + var breaks = [ -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210 + , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178 + ] + , bl = breaks.length + , gy = jy + 621 + , leapJ = -14 + , jp = breaks[0] + , jm + , jump + , leap + , leapG + , march + , n + , i + + if (jy < jp || jy >= breaks[bl - 1]) + throw new Error('Invalid Jalaali year ' + jy) + + // Find the limiting years for the Jalaali year jy. + for (i = 1; i < bl; i += 1) { + jm = breaks[i] + jump = jm - jp + if (jy < jm) + break + leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4) + jp = jm + } + n = jy - jp + + // Find the number of leap years from AD 621 to the beginning + // of the current Jalaali year in the Persian calendar. + leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4) + if (mod(jump, 33) === 4 && jump - n === 4) + leapJ += 1 + + // And the same in the Gregorian calendar (until the year gy). + leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150 + + // Determine the Gregorian date of Farvardin the 1st. + march = 20 + leapJ - leapG + + // Find how many years have passed since the last leap year. + if (jump - n < 6) + n = n - jump + div(jump + 4, 33) * 33 + leap = mod(mod(n + 1, 33) - 1, 4) + if (leap === -1) { + leap = 4 + } + + return { leap: leap + , gy: gy + , march: march + } + } + + /* + Converts a date of the Jalaali calendar to the Julian Day number. + + @param jy Jalaali year (1 to 3100) + @param jm Jalaali month (1 to 12) + @param jd Jalaali day (1 to 29/31) + @return Julian Day number + */ + function j2d(jy, jm, jd) { + var r = jalCal(jy) + return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1 + } + + /* + Converts the Julian Day number to a date in the Jalaali calendar. + + @param jdn Julian Day number + @return + jy: Jalaali year (1 to 3100) + jm: Jalaali month (1 to 12) + jd: Jalaali day (1 to 29/31) + */ + function d2j(jdn) { + var gy = d2g(jdn).gy // Calculate Gregorian year (gy). + , jy = gy - 621 + , r = jalCal(jy) + , jdn1f = g2d(gy, 3, r.march) + , jd + , jm + , k + + // Find number of days that passed since 1 Farvardin. + k = jdn - jdn1f + if (k >= 0) { + if (k <= 185) { + // The first 6 months. + jm = 1 + div(k, 31) + jd = mod(k, 31) + 1 + return { jy: jy + , jm: jm + , jd: jd + } + } else { + // The remaining months. + k -= 186 + } + } else { + // Previous Jalaali year. + jy -= 1 + k += 179 + if (r.leap === 1) + k += 1 + } + jm = 7 + div(k, 30) + jd = mod(k, 30) + 1 + return { jy: jy + , jm: jm + , jd: jd + } + } + + /* + Calculates the Julian Day number from Gregorian or Julian + calendar dates. This integer number corresponds to the noon of + the date (i.e. 12 hours of Universal Time). + The procedure was tested to be good since 1 March, -100100 (of both + calendars) up to a few million years into the future. + + @param gy Calendar year (years BC numbered 0, -1, -2, ...) + @param gm Calendar month (1 to 12) + @param gd Calendar day of the month (1 to 28/29/30/31) + @return Julian Day number + */ + function g2d(gy, gm, gd) { + var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + + div(153 * mod(gm + 9, 12) + 2, 5) + + gd - 34840408 + d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752 + return d + } + + /* + Calculates Gregorian and Julian calendar dates from the Julian Day number + (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both + calendars) to some millions years ahead of the present. + + @param jdn Julian Day number + @return + gy: Calendar year (years BC numbered 0, -1, -2, ...) + gm: Calendar month (1 to 12) + gd: Calendar day of the month M (1 to 28/29/30/31) + */ + function d2g(jdn) { + var j + , i + , gd + , gm + , gy + j = 4 * jdn + 139361631 + j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908 + i = div(mod(j, 1461), 4) * 5 + 308 + gd = div(mod(i, 153), 5) + 1 + gm = mod(div(i, 153), 12) + 1 + gy = div(j, 1461) - 100100 + div(8 - gm, 6) + return { gy: gy + , gm: gm + , gd: gd + } + } + + /* + Utility helper functions. + */ + + function div(a, b) { + return ~~(a / b) + } + + function mod(a, b) { + return a - ~~(a / b) * b + } + }) + require.register("moment-jalaali", function (exports, module) { + + module.exports = jMoment + + var moment = require('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[
|
