Sha256: 31b570850ddd808eea723850b1bc9043911fda49f9a03cb0c4b3079da8df4ff8

Contents?: true

Size: 1.7 KB

Versions: 19

Compression:

Stored size: 1.7 KB

Contents

import { createLocal } from '../create/local';
import { cloneWithOffset } from '../units/offset';
import isFunction from '../utils/is-function';
import { hooks } from '../utils/hooks';
import { isMomentInput } from '../utils/is-moment-input';
import isCalendarSpec from '../utils/is-calendar-spec';

export function getCalendarFormat(myMoment, now) {
    var diff = myMoment.diff(now, 'days', true);
    return diff < -6
        ? 'sameElse'
        : diff < -1
        ? 'lastWeek'
        : diff < 0
        ? 'lastDay'
        : diff < 1
        ? 'sameDay'
        : diff < 2
        ? 'nextDay'
        : diff < 7
        ? 'nextWeek'
        : 'sameElse';
}

export function calendar(time, formats) {
    // Support for single parameter, formats only overload to the calendar function
    if (arguments.length === 1) {
        if (!arguments[0]) {
            time = undefined;
            formats = undefined;
        } else if (isMomentInput(arguments[0])) {
            time = arguments[0];
            formats = undefined;
        } else if (isCalendarSpec(arguments[0])) {
            formats = arguments[0];
            time = undefined;
        }
    }
    // We want to compare the start of today, vs this.
    // Getting start-of-today depends on whether we're local/utc/offset or not.
    var now = time || createLocal(),
        sod = cloneWithOffset(now, this).startOf('day'),
        format = hooks.calendarFormat(this, sod) || 'sameElse',
        output =
            formats &&
            (isFunction(formats[format])
                ? formats[format].call(this, now)
                : formats[format]);

    return this.format(
        output || this.localeData().calendar(format, this, createLocal(now))
    );
}

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
card-mod-date-0.15.6 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.15.0 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.14.2 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.14.1 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.14.0 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.13.4 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.13.3 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.13.2 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.13.1 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.13.0 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.7 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.12.0 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.6 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.5 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.4 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.3 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.2 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.1 vendor/moment/src/lib/moment/calendar.js
card-mod-date-0.11.0 vendor/moment/src/lib/moment/calendar.js