UNPKG

@parsify/timezone

Version:

Parsify plugin for time zone conversion

23 lines (22 loc) 1.36 kB
import { byLocation, byZone } from './utils/get-time-zone.js'; export default ({ key, prefersLong = false, locale = 'en-US', fetcher }) => async (expression) => { const expressionArray = expression.split(' '); if (/time|now|pm|am/i.test(expression)) { if (expressionArray.length === 1 && /time/i.test(expressionArray[0] ?? '')) { return new Date().toLocaleTimeString(locale, { hour: 'numeric', minute: 'numeric' }); } if (expressionArray.length === 1 && /date|now/i.test(expressionArray[0] ?? '')) { return new Date().toLocaleDateString(); } if (/time/i.test(expressionArray[0] ?? '') && expressionArray[1] === 'in' && expressionArray[2]) { return byLocation({ key, location: expressionArray.slice(2).join(' '), prefersLong: prefersLong ?? false, locale, fetcher }); } if (expressionArray[0] !== expressionArray[0]?.toUpperCase() && /time/i.test(expressionArray.slice(-1)[0] ?? '')) { return byLocation({ key, location: expressionArray.slice(0, -1).join(' '), prefersLong: prefersLong ?? false, locale, fetcher }); } if (expressionArray[0] === expressionArray[0]?.toUpperCase() && /time/i.test(expressionArray.slice(-1)[0] ?? '')) { return byZone(expressionArray[0] ?? '', locale); } } return expression; };