Brought in another asset for Ray's eye form: moment
[openemr.git] / public / assets / moment-2-13-0 / src / lib / units / week-year.js
blob29d1fec55a04e509c67134b4d7d239a0e648cbe5
1 import { addFormatToken } from '../format/format';
2 import { addUnitAlias } from './aliases';
3 import { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';
4 import { addWeekParseToken } from '../parse/token';
5 import { weekOfYear, weeksInYear, dayOfYearFromWeeks } from './week-calendar-utils';
6 import toInt from '../utils/to-int';
7 import { hooks } from '../utils/hooks';
8 import { createLocal } from '../create/local';
9 import { createUTCDate } from '../create/date-from-array';
11 // FORMATTING
13 addFormatToken(0, ['gg', 2], 0, function () {
14     return this.weekYear() % 100;
15 });
17 addFormatToken(0, ['GG', 2], 0, function () {
18     return this.isoWeekYear() % 100;
19 });
21 function addWeekYearFormatToken (token, getter) {
22     addFormatToken(0, [token, token.length], 0, getter);
25 addWeekYearFormatToken('gggg',     'weekYear');
26 addWeekYearFormatToken('ggggg',    'weekYear');
27 addWeekYearFormatToken('GGGG',  'isoWeekYear');
28 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
30 // ALIASES
32 addUnitAlias('weekYear', 'gg');
33 addUnitAlias('isoWeekYear', 'GG');
35 // PARSING
37 addRegexToken('G',      matchSigned);
38 addRegexToken('g',      matchSigned);
39 addRegexToken('GG',     match1to2, match2);
40 addRegexToken('gg',     match1to2, match2);
41 addRegexToken('GGGG',   match1to4, match4);
42 addRegexToken('gggg',   match1to4, match4);
43 addRegexToken('GGGGG',  match1to6, match6);
44 addRegexToken('ggggg',  match1to6, match6);
46 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
47     week[token.substr(0, 2)] = toInt(input);
48 });
50 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
51     week[token] = hooks.parseTwoDigitYear(input);
52 });
54 // MOMENTS
56 export function getSetWeekYear (input) {
57     return getSetWeekYearHelper.call(this,
58             input,
59             this.week(),
60             this.weekday(),
61             this.localeData()._week.dow,
62             this.localeData()._week.doy);
65 export function getSetISOWeekYear (input) {
66     return getSetWeekYearHelper.call(this,
67             input, this.isoWeek(), this.isoWeekday(), 1, 4);
70 export function getISOWeeksInYear () {
71     return weeksInYear(this.year(), 1, 4);
74 export function getWeeksInYear () {
75     var weekInfo = this.localeData()._week;
76     return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
79 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
80     var weeksTarget;
81     if (input == null) {
82         return weekOfYear(this, dow, doy).year;
83     } else {
84         weeksTarget = weeksInYear(input, dow, doy);
85         if (week > weeksTarget) {
86             week = weeksTarget;
87         }
88         return setWeekAll.call(this, input, week, weekday, dow, doy);
89     }
92 function setWeekAll(weekYear, week, weekday, dow, doy) {
93     var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
94         date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
96     this.year(date.getUTCFullYear());
97     this.month(date.getUTCMonth());
98     this.date(date.getUTCDate());
99     return this;