Как преобразовать английский язык в крон?

Я сделал некоторый поиск, но не посадил ничего, что выглядит полезным все же, но я задаюсь вопросом, знает ли кто-либо о чем-то (инструмент, lib и т.д.), который может проанализировать английские фразы и перевести их в строку крона.

Например: Every Tuesday at 15:00 преобразовывает в 0 15 * * 2

На что-то кажется, что это имело бы много глюков, и будет предпочтительно принести пользу от кого-то работе elses. Вы видите его в нескольких хороших сайтах/приложениях, которые могут разработать то, что Вы имеете в виду от простой фразы вместо того, чтобы иметь некоторый отвратительный пользовательский интерфейс.

Заранее спасибо.

6
задан Costique 4 May 2012 в 17:26
поделиться

3 ответа

Для Ruby существует «всякий раз» , который может служить отправной точкой: он переводит квази-английский (на самом деле это действительный Ruby) в строки cron.

2
ответ дан 17 December 2019 в 02:29
поделиться

Depending on how flexible you need it to be, and how willing to roll up your own sleeves you are, you could define a simple grammar for this.

Every would be a quantifier. You may need others but I can't think of any. Valid syntax might be:

Every (day-spec) AT (time)

Where day-spec could be a literal day (ie. Monday) or be a day of the month (ie. 30th Day) or some other syntax (I'd suggest fortnights but I'm not sure if Cron can represent those well).

Time could be specified using either 24 hour (16:00) or 12 hour (4:00pm) format.

Another syntax that you might want is: Every (frequency) From (time) where frequency is basically (quantity) (unit) (ie. 10 Minutes). The from time enables you to set an offset (eg. Every 30 Minutes From 01:10am).

You'd probably need to sit down and figure out these details a bit more. But a rigid grammar could be implemented relatively easily using recursive descent.

1
ответ дан 17 December 2019 в 02:29
поделиться

Hmm, about those gotchas... How about also writing one that translates the cron params back to English? That way you can see if the parser "understood" you.

0
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: