/pack-rat/003_pack_rat/pack-rat/node_modules/moment/src/lib/duration/humanize.js |
@@ -0,0 +1,85 @@ |
import { createDuration } from './create'; |
|
var round = Math.round; |
var thresholds = { |
ss: 44, // a few seconds to seconds |
s : 45, // seconds to minute |
m : 45, // minutes to hour |
h : 22, // hours to day |
d : 26, // days to month |
M : 11 // months to year |
}; |
|
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize |
function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { |
return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); |
} |
|
function relativeTime (posNegDuration, withoutSuffix, locale) { |
var duration = createDuration(posNegDuration).abs(); |
var seconds = round(duration.as('s')); |
var minutes = round(duration.as('m')); |
var hours = round(duration.as('h')); |
var days = round(duration.as('d')); |
var months = round(duration.as('M')); |
var years = round(duration.as('y')); |
|
var a = seconds <= thresholds.ss && ['s', seconds] || |
seconds < thresholds.s && ['ss', seconds] || |
minutes <= 1 && ['m'] || |
minutes < thresholds.m && ['mm', minutes] || |
hours <= 1 && ['h'] || |
hours < thresholds.h && ['hh', hours] || |
days <= 1 && ['d'] || |
days < thresholds.d && ['dd', days] || |
months <= 1 && ['M'] || |
months < thresholds.M && ['MM', months] || |
years <= 1 && ['y'] || ['yy', years]; |
|
a[2] = withoutSuffix; |
a[3] = +posNegDuration > 0; |
a[4] = locale; |
return substituteTimeAgo.apply(null, a); |
} |
|
// This function allows you to set the rounding function for relative time strings |
export function getSetRelativeTimeRounding (roundingFunction) { |
if (roundingFunction === undefined) { |
return round; |
} |
if (typeof(roundingFunction) === 'function') { |
round = roundingFunction; |
return true; |
} |
return false; |
} |
|
// This function allows you to set a threshold for relative time strings |
export function getSetRelativeTimeThreshold (threshold, limit) { |
if (thresholds[threshold] === undefined) { |
return false; |
} |
if (limit === undefined) { |
return thresholds[threshold]; |
} |
thresholds[threshold] = limit; |
if (threshold === 's') { |
thresholds.ss = limit - 1; |
} |
return true; |
} |
|
export function humanize (withSuffix) { |
if (!this.isValid()) { |
return this.localeData().invalidDate(); |
} |
|
var locale = this.localeData(); |
var output = relativeTime(this, !withSuffix, locale); |
|
if (withSuffix) { |
output = locale.pastFuture(+this, output); |
} |
|
return locale.postformat(output); |
} |