@parsify/timezone
Version:
Parsify plugin for time zone conversion
23 lines (22 loc) • 1.36 kB
JavaScript
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;
};