UNPKG

rte-moment

Version:
61 lines (60 loc) 2.21 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; return t; }; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * moment binder */ var moment_1 = __importDefault(require("moment")); var relative_time_expression_1 = require("relative-time-expression"); var period_edge_1 = require("period-edge"); __export(require("relative-time-expression")); function startOf(m, p) { if (p.number > 1) { return moment_1.default(period_edge_1.startOf(m.toDate(), p.number + p.unit)); } return m.startOf(p.unit); } function endOf(m, p) { if (p.number > 1) { return moment_1.default(period_edge_1.endOf(m.toDate(), p.number + p.unit)); } return m.endOf(p.unit); } function parseToMoment(exp, options) { if (options === void 0) { options = {}; } var forceEnd = options.forceEnd, _a = options.base, base = _a === void 0 ? moment_1.default() : _a, parseOptions = __rest(options, ["forceEnd", "base"]); var ast = relative_time_expression_1.parse(exp, parseOptions); return ast.body.reduce(function (moment, m) { if (m.type === 'Offset') { if (m.op === '+') { return moment.add(m.number, m.unit); } else { return moment.subtract(m.number, m.unit); } } else { if (m.op === '/' && !forceEnd) { return startOf(moment, m); } else { return endOf(moment, m); } } }, base); } exports.default = parseToMoment;