/
githubmirror
/
dayjs
Обзор
Документация
Войти
/
githubmirror
/
dayjs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/plugin/relativeTime/index.js
92 строки
2 KB
Moshe Jonathan Gordon Radian
fix: add preParsePostFormat plugin & update Arabic [ar] locale (#1255)
02 янв 2021, 14:03
Не верифицирован
02 янв 2021, 14:03
f2e4790
Код
Авторство
О чём код?
import * as C from '../../constant' export default (o, c, d) => { o = o || {} const proto = c.prototype const relObj = { future: 'in %s', past: '%s ago', s: 'a few seconds', m: 'a minute', mm: '%d minutes', h: 'an hour', hh: '%d hours', d: 'a day', dd: '%d days', M: 'a month', MM: '%d months', y: 'a year', yy: '%d years' } d.en.relativeTime = relObj proto.fromToBase = (input, withoutSuffix, instance, isFrom, postFormat) => { const loc = instance.$locale().relativeTime || relObj const T = o.thresholds || [ { l: 's', r: 44, d: C.S }, { l: 'm', r: 89 }, { l: 'mm', r: 44, d: C.MIN }, { l: 'h', r: 89 }, { l: 'hh', r: 21, d: C.H }, { l: 'd', r: 35 }, { l: 'dd', r: 25, d: C.D }, { l: 'M', r: 45 }, { l: 'MM', r: 10, d: C.M }, { l: 'y', r: 17 }, { l: 'yy', d: C.Y } ] const Tl = T.length let result let out let isFuture for (let i = 0; i < Tl; i += 1) { let t = T[i] if (t.d) { result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true) } let abs = (o.rounding || Math.round)(Math.abs(result)) isFuture = result > 0 if (abs <= t.r || !t.r) { if (abs <= 1 && i > 0) t = T[i - 1] // 1 minutes -> a minute, 0 seconds -> 0 second const format = loc[t.l] if (postFormat) { abs = postFormat(`${abs}`) } if (typeof format === 'string') { out = format.replace('%d', abs) } else { out = format(abs, withoutSuffix, t.l, isFuture) } break } } if (withoutSuffix) return out const pastOrFuture = isFuture ? loc.future : loc.past if (typeof pastOrFuture === 'function') { return pastOrFuture(out) } return pastOrFuture.replace('%s', out) } function fromTo(input, withoutSuffix, instance, isFrom) { return proto.fromToBase(input, withoutSuffix, instance, isFrom) } proto.to = function (input, withoutSuffix) { return fromTo(input, withoutSuffix, this, true) } proto.from = function (input, withoutSuffix) { return fromTo(input, withoutSuffix, this) } const makeNow = thisDay => (thisDay.$u ? d.utc() : d()) proto.toNow = function (withoutSuffix) { return this.to(makeNow(this), withoutSuffix) } proto.fromNow = function (withoutSuffix) { return this.from(makeNow(this), withoutSuffix) } }