UNPKG

elliptical-datetime

Version:

Elliptical phrases to handle natural language dates and times

56 lines (46 loc) 1.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Year = undefined; var _elliptical = require('elliptical'); var _ellipticalNumber = require('elliptical-number'); /** @jsx createElement */ function suppressYear(input) { return (/^('\d|\d|\d{3})$/.test(input) ); } function mapResult(result) { if (result.twoDigitYear) { var decade = parseInt(result.twoDigitYear, 10); var year = decade < 29 ? 2000 + decade : 1900 + decade; return { year: year, _ambiguousCentury: true }; } else if (result.fourDigitYear) { return { year: parseInt(result.fourDigitYear, 10) }; } } var defaultProps = { label: 'year' }; function describe(_ref) { var props = _ref.props; return (0, _elliptical.createElement)( 'placeholder', { suppressWhen: suppressYear, label: props.label, arguments: props.phraseArguments || (props.phraseArguments ? [props.phraseArgument] : [props.label]) }, (0, _elliptical.createElement)( 'choice', { limit: 1 }, (0, _elliptical.createElement)( 'sequence', null, (0, _elliptical.createElement)('literal', { text: '\'', optional: true, limited: true }), (0, _elliptical.createElement)(_ellipticalNumber.DigitString, { minLength: 2, maxLength: 2, id: 'twoDigitYear', label: 'yy' }) ), (0, _elliptical.createElement)(_ellipticalNumber.DigitString, { minLength: 4, maxLength: 4, id: 'fourDigitYear', label: 'yyyy' }) ) ); } var Year = exports.Year = { mapResult: mapResult, describe: describe, defaultProps: defaultProps };