aboutsummaryrefslogtreecommitdiffstats
path: root/library/moment/src/lib/units/week.js
diff options
context:
space:
mode:
Diffstat (limited to 'library/moment/src/lib/units/week.js')
-rw-r--r--library/moment/src/lib/units/week.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/library/moment/src/lib/units/week.js b/library/moment/src/lib/units/week.js
new file mode 100644
index 000000000..178f6b551
--- /dev/null
+++ b/library/moment/src/lib/units/week.js
@@ -0,0 +1,88 @@
+import { addFormatToken } from '../format/format';
+import { addUnitAlias } from './aliases';
+import { addRegexToken, match1to2, match2 } from '../parse/regex';
+import { addWeekParseToken } from '../parse/token';
+import toInt from '../utils/to-int';
+import { createLocal } from '../create/local';
+
+// FORMATTING
+
+addFormatToken('w', ['ww', 2], 'wo', 'week');
+addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+// ALIASES
+
+addUnitAlias('week', 'w');
+addUnitAlias('isoWeek', 'W');
+
+// PARSING
+
+addRegexToken('w', match1to2);
+addRegexToken('ww', match1to2, match2);
+addRegexToken('W', match1to2);
+addRegexToken('WW', match1to2, match2);
+
+addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
+ week[token.substr(0, 1)] = toInt(input);
+});
+
+// HELPERS
+
+// firstDayOfWeek 0 = sun, 6 = sat
+// the day of the week that starts the week
+// (usually sunday or monday)
+// firstDayOfWeekOfYear 0 = sun, 6 = sat
+// the first week is the week that contains the first
+// of this day of the week
+// (eg. ISO weeks use thursday (4))
+export function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
+ var end = firstDayOfWeekOfYear - firstDayOfWeek,
+ daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
+ adjustedMoment;
+
+
+ if (daysToDayOfWeek > end) {
+ daysToDayOfWeek -= 7;
+ }
+
+ if (daysToDayOfWeek < end - 7) {
+ daysToDayOfWeek += 7;
+ }
+
+ adjustedMoment = createLocal(mom).add(daysToDayOfWeek, 'd');
+ return {
+ week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+ year: adjustedMoment.year()
+ };
+}
+
+// LOCALES
+
+export function localeWeek (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+}
+
+export var defaultLocaleWeek = {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+};
+
+export function localeFirstDayOfWeek () {
+ return this._week.dow;
+}
+
+export function localeFirstDayOfYear () {
+ return this._week.doy;
+}
+
+// MOMENTS
+
+export function getSetWeek (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+}
+
+export function getSetISOWeek (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+}