UNPKG

elliptical-datetime

Version:

Elliptical phrases to handle natural language dates and times

48 lines (41 loc) 1.34 kB
/** @jsx createElement */ import { createElement } from 'elliptical'; import { DigitString } from 'elliptical-number'; 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 createElement( 'placeholder', { suppressWhen: suppressYear, label: props.label, arguments: props.phraseArguments || (props.phraseArguments ? [props.phraseArgument] : [props.label]) }, createElement( 'choice', { limit: 1 }, createElement( 'sequence', null, createElement('literal', { text: '\'', optional: true, limited: true }), createElement(DigitString, { minLength: 2, maxLength: 2, id: 'twoDigitYear', label: 'yy' }) ), createElement(DigitString, { minLength: 4, maxLength: 4, id: 'fourDigitYear', label: 'yyyy' }) ) ); } export var Year = { mapResult: mapResult, describe: describe, defaultProps: defaultProps };