@lou.codes/cron
Version:
⏲️ Cron Quartz and Cron UNIX expression parser
18 lines (17 loc) • 700 B
JavaScript
import { captureNamed, escape, or } from "functional-expression";
import { ALL_TOKEN } from "./tokens.js";
import { valueRangeOrListRegExp } from "./valueRangeOrListRegExp.js";
/**
* Regular expression to match a cron expression field.
*
* @category Regular Expression
* @example
* ```typescript
* fieldRegExp("example", 13); // "(?<example>\\*|(?:13(?:-13)?|(?:(?:13(?:-13)?,)+13(?:-13)?)))"
* ```
* @param name Named group name.
* @param value Possible values the expression can have.
* @returns Named group capturing the given value by itself, in a list or range.
*/
export const fieldRegExp = (name, value) =>
captureNamed(name)(or(escape(ALL_TOKEN), valueRangeOrListRegExp(value)));