diff options
author | Mario Vavti <mario@mariovavti.com> | 2015-11-18 23:50:42 +0100 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2015-11-18 23:50:42 +0100 |
commit | e4145deeb7a72ac321113fde672e1b499ecb0d2d (patch) | |
tree | ce2fb59fd9d2ec1d13ea0960215967600098ca13 /library/moment/src/lib/units/week.js | |
parent | 68da4d90dcbda1240ae014768a66a164fd5d2b36 (diff) | |
download | volse-hubzilla-e4145deeb7a72ac321113fde672e1b499ecb0d2d.tar.gz volse-hubzilla-e4145deeb7a72ac321113fde672e1b499ecb0d2d.tar.bz2 volse-hubzilla-e4145deeb7a72ac321113fde672e1b499ecb0d2d.zip |
some events refacturing
Diffstat (limited to 'library/moment/src/lib/units/week.js')
-rw-r--r-- | library/moment/src/lib/units/week.js | 88 |
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'); +} |