aboutsummaryrefslogtreecommitdiffstats
path: root/library/moment/src/lib/units/week-year.js
diff options
context:
space:
mode:
Diffstat (limited to 'library/moment/src/lib/units/week-year.js')
-rw-r--r--library/moment/src/lib/units/week-year.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/library/moment/src/lib/units/week-year.js b/library/moment/src/lib/units/week-year.js
new file mode 100644
index 000000000..8ecfce754
--- /dev/null
+++ b/library/moment/src/lib/units/week-year.js
@@ -0,0 +1,78 @@
+import { addFormatToken } from '../format/format';
+import { addUnitAlias } from './aliases';
+import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';
+import { addWeekParseToken } from '../parse/token';
+import { weekOfYear } from './week';
+import toInt from '../utils/to-int';
+import { hooks } from '../utils/hooks';
+import { createLocal } from '../create/local';
+
+// FORMATTING
+
+addFormatToken(0, ['gg', 2], 0, function () {
+ return this.weekYear() % 100;
+});
+
+addFormatToken(0, ['GG', 2], 0, function () {
+ return this.isoWeekYear() % 100;
+});
+
+function addWeekYearFormatToken (token, getter) {
+ addFormatToken(0, [token, token.length], 0, getter);
+}
+
+addWeekYearFormatToken('gggg', 'weekYear');
+addWeekYearFormatToken('ggggg', 'weekYear');
+addWeekYearFormatToken('GGGG', 'isoWeekYear');
+addWeekYearFormatToken('GGGGG', 'isoWeekYear');
+
+// ALIASES
+
+addUnitAlias('weekYear', 'gg');
+addUnitAlias('isoWeekYear', 'GG');
+
+// PARSING
+
+addRegexToken('G', matchSigned);
+addRegexToken('g', matchSigned);
+addRegexToken('GG', match1to2, match2);
+addRegexToken('gg', match1to2, match2);
+addRegexToken('GGGG', match1to4, match4);
+addRegexToken('gggg', match1to4, match4);
+addRegexToken('GGGGG', match1to6, match6);
+addRegexToken('ggggg', match1to6, match6);
+
+addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
+ week[token.substr(0, 2)] = toInt(input);
+});
+
+addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+ week[token] = hooks.parseTwoDigitYear(input);
+});
+
+// HELPERS
+
+function weeksInYear(year, dow, doy) {
+ return weekOfYear(createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
+}
+
+// MOMENTS
+
+export function getSetWeekYear (input) {
+ var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
+ return input == null ? year : this.add((input - year), 'y');
+}
+
+export function getSetISOWeekYear (input) {
+ var year = weekOfYear(this, 1, 4).year;
+ return input == null ? year : this.add((input - year), 'y');
+}
+
+export function getISOWeeksInYear () {
+ return weeksInYear(this.year(), 1, 4);
+}
+
+export function getWeeksInYear () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+}