aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/date/daterange.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/date/daterange.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/date/daterange.js413
1 files changed, 0 insertions, 413 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/date/daterange.js b/contexts/data/lib/closure-library/closure/goog/date/daterange.js
deleted file mode 100644
index ac14c8e..0000000
--- a/contexts/data/lib/closure-library/closure/goog/date/daterange.js
+++ /dev/null
@@ -1,413 +0,0 @@
-// Copyright 2008 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Date range data structure. Based loosely on
- * com.google.common.util.DateRange.
- *
- */
-
-goog.provide('goog.date.DateRange');
-goog.provide('goog.date.DateRange.Iterator');
-goog.provide('goog.date.DateRange.StandardDateRangeKeys');
-
-goog.require('goog.date.Date');
-goog.require('goog.date.Interval');
-goog.require('goog.iter.Iterator');
-goog.require('goog.iter.StopIteration');
-
-
-
-/**
- * Constructs a date range.
- * @constructor
- * @param {goog.date.Date} startDate The first date in the range.
- * @param {goog.date.Date} endDate The last date in the range.
- */
-goog.date.DateRange = function(startDate, endDate) {
- /**
- * The first date in the range.
- * @type {goog.date.Date}
- * @private
- */
- this.startDate_ = startDate;
-
- /**
- * The last date in the range.
- * @type {goog.date.Date}
- * @private
- */
- this.endDate_ = endDate;
-};
-
-
-/**
- * The first possible day, as far as this class is concerned.
- * @type {goog.date.Date}
- */
-goog.date.DateRange.MINIMUM_DATE = new goog.date.Date(0000, 0, 1);
-
-
-/**
- * The last possible day, as far as this class is concerned.
- * @type {goog.date.Date}
- */
-goog.date.DateRange.MAXIMUM_DATE = new goog.date.Date(9999, 11, 31);
-
-
-/**
- * @return {goog.date.Date} The first date in the range.
- */
-goog.date.DateRange.prototype.getStartDate = function() {
- return this.startDate_;
-};
-
-
-/**
- * @return {goog.date.Date} The last date in the range.
- */
-goog.date.DateRange.prototype.getEndDate = function() {
- return this.endDate_;
-};
-
-
-/**
- * @return {goog.iter.Iterator} An iterator over the date range.
- */
-goog.date.DateRange.prototype.iterator = function() {
- return new goog.date.DateRange.Iterator(this);
-};
-
-
-/**
- * Tests two {@link goog.date.DateRange} objects for equality.
- * @param {goog.date.DateRange} a A date range.
- * @param {goog.date.DateRange} b A date range.
- * @return {boolean} Whether |a| is the same range as |b|.
- */
-goog.date.DateRange.equals = function(a, b) {
- // Test for same object reference; type conversion is irrelevant.
- if (a === b) {
- return true;
- }
-
- if (a == null || b == null) {
- return false;
- }
-
- return a.startDate_.equals(b.startDate_) && a.endDate_.equals(b.endDate_);
-};
-
-
-/**
- * Calculates a date that is a number of days after a date. Does not modify its
- * input.
- * @param {goog.date.Date} date The input date.
- * @param {number} offset Number of days.
- * @return {goog.date.Date} The date that is |offset| days after |date|.
- * @private
- */
-goog.date.DateRange.offsetInDays_ = function(date, offset) {
- var newDate = date.clone();
- newDate.add(new goog.date.Interval(goog.date.Interval.DAYS, offset));
- return newDate;
-};
-
-
-/**
- * Calculates the Monday before a date. If the input is a Monday, returns the
- * input. Does not modify its input.
- * @param {goog.date.Date} date The input date.
- * @return {goog.date.Date} If |date| is a Monday, return |date|; otherwise
- * return the Monday before |date|.
- * @private
- */
-goog.date.DateRange.currentOrLastMonday_ = function(date) {
- var newDate = date.clone();
- newDate.add(new goog.date.Interval(goog.date.Interval.DAYS,
- -newDate.getIsoWeekday()));
- return newDate;
-};
-
-
-/**
- * Calculates a date that is a number of months after the first day in the
- * month that contains its input. Does not modify its input.
- * @param {goog.date.Date} date The input date.
- * @param {number} offset Number of months.
- * @return {goog.date.Date} The date that is |offset| months after the first
- * day in the month that contains |date|.
- * @private
- */
-goog.date.DateRange.offsetInMonths_ = function(date, offset) {
- var newDate = date.clone();
- newDate.setDate(1);
- newDate.add(new goog.date.Interval(goog.date.Interval.MONTHS, offset));
- return newDate;
-};
-
-
-/**
- * Returns the range from yesterday to yesterday.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that includes only yesterday.
- */
-goog.date.DateRange.yesterday = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- var yesterday = goog.date.DateRange.offsetInDays_(today, -1);
- return new goog.date.DateRange(yesterday, yesterday);
-};
-
-
-/**
- * Returns the range from today to today.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that includes only today.
- */
-goog.date.DateRange.today = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- return new goog.date.DateRange(today, today);
-};
-
-
-/**
- * Returns the range that includes the seven days that end yesterday.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that includes the seven days that
- * end yesterday.
- */
-goog.date.DateRange.last7Days = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- var yesterday = goog.date.DateRange.offsetInDays_(today, -1);
- return new goog.date.DateRange(goog.date.DateRange.offsetInDays_(today, -7),
- yesterday);
-};
-
-
-/**
- * Returns the range that starts the first of this month and ends the last day
- * of this month.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that starts the first of this month
- * and ends the last day of this month.
- */
-goog.date.DateRange.thisMonth = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- return new goog.date.DateRange(
- goog.date.DateRange.offsetInMonths_(today, 0),
- goog.date.DateRange.offsetInDays_(
- goog.date.DateRange.offsetInMonths_(today, 1),
- -1));
-};
-
-
-/**
- * Returns the range that starts the first of last month and ends the last day
- * of last month.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that starts the first of last month
- * and ends the last day of last month.
- */
-goog.date.DateRange.lastMonth = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- return new goog.date.DateRange(
- goog.date.DateRange.offsetInMonths_(today, -1),
- goog.date.DateRange.offsetInDays_(
- goog.date.DateRange.offsetInMonths_(today, 0),
- -1));
-};
-
-
-/**
- * Returns the seven-day range that starts on the first day of the week
- * (see {@link goog.i18n.DateTimeSymbols.FIRSTDAYOFWEEK}) on or before today.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that starts the Monday on or before
- * today and ends the Sunday on or after today.
- */
-goog.date.DateRange.thisWeek = function(opt_today) {
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- var iso = today.getIsoWeekday();
- var firstDay = today.getFirstDayOfWeek();
- var i18nFirstDay = (iso >= firstDay) ? iso - firstDay : iso + (7 - firstDay);
- var start = goog.date.DateRange.offsetInDays_(today, -i18nFirstDay);
- var end = goog.date.DateRange.offsetInDays_(start, 6);
- return new goog.date.DateRange(start, end);
-};
-
-
-/**
- * Returns the seven-day range that ends the day before the first day of
- * the week (see {@link goog.i18n.DateTimeSymbols.FIRSTDAYOFWEEK}) that
- * contains today.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that starts seven days before the
- * Monday on or before today and ends the Sunday on or before yesterday.
- */
-goog.date.DateRange.lastWeek = function(opt_today) {
- var thisWeek = goog.date.DateRange.thisWeek(opt_today);
- var start = goog.date.DateRange.offsetInDays_(thisWeek.getStartDate(), -7);
- var end = goog.date.DateRange.offsetInDays_(thisWeek.getEndDate(), -7);
- return new goog.date.DateRange(start, end);
-};
-
-
-/**
- * Returns the range that starts seven days before the Monday on or before
- * today and ends the Friday before today.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that starts seven days before the
- * Monday on or before today and ends the Friday before today.
- */
-goog.date.DateRange.lastBusinessWeek = function(opt_today) {
- // TODO(user): should be i18nized.
- var today = goog.date.DateRange.cloneOrCreate_(opt_today);
- var start = goog.date.DateRange.offsetInDays_(today,
- - 7 - today.getIsoWeekday());
- var end = goog.date.DateRange.offsetInDays_(start, 4);
- return new goog.date.DateRange(start, end);
-};
-
-
-/**
- * Returns the range that includes all days between January 1, 1900 and
- * December 31, 9999.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The range that includes all days between
- * January 1, 1900 and December 31, 9999.
- */
-goog.date.DateRange.allTime = function(opt_today) {
- return new goog.date.DateRange(
- goog.date.DateRange.MINIMUM_DATE,
- goog.date.DateRange.MAXIMUM_DATE);
-};
-
-
-/**
- * Standard date range keys. Equivalent to the enum IDs in
- * DateRange.java http://go/datarange.java
- *
- * @enum {string}
- */
-goog.date.DateRange.StandardDateRangeKeys = {
- YESTERDAY: 'yesterday',
- TODAY: 'today',
- LAST_7_DAYS: 'last7days',
- THIS_MONTH: 'thismonth',
- LAST_MONTH: 'lastmonth',
- THIS_WEEK: 'thisweek',
- LAST_WEEK: 'lastweek',
- LAST_BUSINESS_WEEK: 'lastbusinessweek',
- ALL_TIME: 'alltime'
-};
-
-
-/**
- * @param {string} dateRangeKey A standard date range key.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {goog.date.DateRange} The date range that corresponds to that key.
- * @throws {Error} If no standard date range with that key exists.
- */
-goog.date.DateRange.standardDateRange = function(dateRangeKey, opt_today) {
- switch (dateRangeKey) {
- case goog.date.DateRange.StandardDateRangeKeys.YESTERDAY:
- return goog.date.DateRange.yesterday(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.TODAY:
- return goog.date.DateRange.today(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.LAST_7_DAYS:
- return goog.date.DateRange.last7Days(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.THIS_MONTH:
- return goog.date.DateRange.thisMonth(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.LAST_MONTH:
- return goog.date.DateRange.lastMonth(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.THIS_WEEK:
- return goog.date.DateRange.thisWeek(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.LAST_WEEK:
- return goog.date.DateRange.lastWeek(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.LAST_BUSINESS_WEEK:
- return goog.date.DateRange.lastBusinessWeek(opt_today);
-
- case goog.date.DateRange.StandardDateRangeKeys.ALL_TIME:
- return goog.date.DateRange.allTime(opt_today);
-
- default:
- throw Error('no such date range key: ' + dateRangeKey);
- }
-};
-
-
-/**
- * Clones or creates new.
- * @param {goog.date.Date=} opt_today The date to consider today.
- * Defaults to today.
- * @return {!goog.date.Date} cloned or new.
- * @private
- */
-goog.date.DateRange.cloneOrCreate_ = function(opt_today) {
- return opt_today ? opt_today.clone() : new goog.date.Date();
-};
-
-
-
-/**
- * Creates an iterator over the dates in a {@link goog.date.DateRange}.
- * @constructor
- * @extends {goog.iter.Iterator}
- * @param {goog.date.DateRange} dateRange The date range to iterate.
- */
-goog.date.DateRange.Iterator = function(dateRange) {
- /**
- * The next date.
- * @type {goog.date.Date}
- * @private
- */
- this.nextDate_ = dateRange.getStartDate().clone();
-
- /**
- * The end date, expressed as an integer: YYYYMMDD.
- * @type {number}
- * @private
- */
- this.endDate_ = Number(dateRange.getEndDate().toIsoString());
-};
-goog.inherits(goog.date.DateRange.Iterator, goog.iter.Iterator);
-
-
-/** @override */
-goog.date.DateRange.Iterator.prototype.next = function() {
- if (Number(this.nextDate_.toIsoString()) > this.endDate_) {
- throw goog.iter.StopIteration;
- }
-
- var rv = this.nextDate_.clone();
- this.nextDate_.add(new goog.date.Interval(goog.date.Interval.DAYS, 1));
- return rv;
-};