Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
// Copyright 2013 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 Functions for formatting duration values. Such as "3 days"
|
||||
* "3 hours", "14 minutes", "2 hours 45 minutes".
|
||||
*
|
||||
*/
|
||||
|
||||
goog.provide('goog.date.duration');
|
||||
|
||||
goog.require('goog.i18n.DateTimeFormat');
|
||||
goog.require('goog.i18n.MessageFormat');
|
||||
|
||||
|
||||
/**
|
||||
* Number of milliseconds in a minute.
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
goog.date.duration.MINUTE_MS_ = 60000;
|
||||
|
||||
|
||||
/**
|
||||
* Number of milliseconds in an hour.
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
goog.date.duration.HOUR_MS_ = 3600000;
|
||||
|
||||
|
||||
/**
|
||||
* Number of milliseconds in a day.
|
||||
* @type {number}
|
||||
* @private
|
||||
*/
|
||||
goog.date.duration.DAY_MS_ = 86400000;
|
||||
|
||||
|
||||
/**
|
||||
* Accepts a duration in milliseconds and outputs an absolute duration time in
|
||||
* form of "1 day", "2 hours", "20 minutes", "2 days 1 hour 15 minutes" etc.
|
||||
* @param {number} durationMs Duration in milliseconds.
|
||||
* @return {string} The formatted duration.
|
||||
*/
|
||||
goog.date.duration.format = function(durationMs) {
|
||||
var ms = Math.abs(durationMs);
|
||||
|
||||
// Handle durations shorter than 1 minute.
|
||||
if (ms < goog.date.duration.MINUTE_MS_) {
|
||||
/**
|
||||
* @desc Duration time of zero minutes.
|
||||
*/
|
||||
var MSG_ZERO_MINUTES = goog.getMsg('0 minutes');
|
||||
return MSG_ZERO_MINUTES;
|
||||
}
|
||||
|
||||
var days = Math.floor(ms / goog.date.duration.DAY_MS_);
|
||||
ms %= goog.date.duration.DAY_MS_;
|
||||
|
||||
var hours = Math.floor(ms / goog.date.duration.HOUR_MS_);
|
||||
ms %= goog.date.duration.HOUR_MS_;
|
||||
|
||||
var minutes = Math.floor(ms / goog.date.duration.MINUTE_MS_);
|
||||
|
||||
// Localized number representations.
|
||||
var daysText = goog.i18n.DateTimeFormat.localizeNumbers(days);
|
||||
var hoursText = goog.i18n.DateTimeFormat.localizeNumbers(hours);
|
||||
var minutesText = goog.i18n.DateTimeFormat.localizeNumbers(minutes);
|
||||
|
||||
// We need a space after the days if there are hours or minutes to come.
|
||||
var daysSeparator = days * (hours + minutes) ? ' ' : '';
|
||||
// We need a space after the hours if there are minutes to come.
|
||||
var hoursSeparator = hours * minutes ? ' ' : '';
|
||||
|
||||
/**
|
||||
* @desc The days part of the duration message: 1 day, 5 days.
|
||||
*/
|
||||
var MSG_DURATION_DAYS = goog.getMsg(
|
||||
'{COUNT, plural, ' +
|
||||
'=0 {}' +
|
||||
'=1 {{TEXT} day}' +
|
||||
'other {{TEXT} days}}');
|
||||
/**
|
||||
* @desc The hours part of the duration message: 1 hour, 5 hours.
|
||||
*/
|
||||
var MSG_DURATION_HOURS = goog.getMsg(
|
||||
'{COUNT, plural, ' +
|
||||
'=0 {}' +
|
||||
'=1 {{TEXT} hour}' +
|
||||
'other {{TEXT} hours}}');
|
||||
/**
|
||||
* @desc The minutes part of the duration message: 1 minute, 5 minutes.
|
||||
*/
|
||||
var MSG_DURATION_MINUTES = goog.getMsg(
|
||||
'{COUNT, plural, ' +
|
||||
'=0 {}' +
|
||||
'=1 {{TEXT} minute}' +
|
||||
'other {{TEXT} minutes}}');
|
||||
|
||||
var daysPart = goog.date.duration.getDurationMessagePart_(
|
||||
MSG_DURATION_DAYS, days, daysText);
|
||||
var hoursPart = goog.date.duration.getDurationMessagePart_(
|
||||
MSG_DURATION_HOURS, hours, hoursText);
|
||||
var minutesPart = goog.date.duration.getDurationMessagePart_(
|
||||
MSG_DURATION_MINUTES, minutes, minutesText);
|
||||
|
||||
/**
|
||||
* @desc Duration time text concatenated from the individual time unit message
|
||||
* parts. The separator will be a space (e.g. '1 day 2 hours 24 minutes') or
|
||||
* nothing in case one/two of the duration parts is empty (
|
||||
* e.g. '1 hour 30 minutes', '3 days 15 minutes', '2 hours').
|
||||
*/
|
||||
var MSG_CONCATENATED_DURATION_TEXT = goog.getMsg(
|
||||
'{$daysPart}{$daysSeparator}{$hoursPart}{$hoursSeparator}{$minutesPart}',
|
||||
{
|
||||
'daysPart': daysPart,
|
||||
'daysSeparator': daysSeparator,
|
||||
'hoursPart': hoursPart,
|
||||
'hoursSeparator': hoursSeparator,
|
||||
'minutesPart': minutesPart
|
||||
});
|
||||
|
||||
return MSG_CONCATENATED_DURATION_TEXT;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Gets a duration message part for a time unit.
|
||||
* @param {string} pattern The pattern to apply.
|
||||
* @param {number} count The number of units.
|
||||
* @param {string} text The string to use for amount of units in the message.
|
||||
* @return {string} The formatted message part.
|
||||
* @private
|
||||
*/
|
||||
goog.date.duration.getDurationMessagePart_ = function(pattern, count, text) {
|
||||
var formatter = new goog.i18n.MessageFormat(pattern);
|
||||
return formatter.format({
|
||||
'COUNT': count,
|
||||
'TEXT': text
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user