Как конвертировать английский в Cron? - PullRequest
6 голосов
/ 16 декабря 2009

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 27 июля 2018

Хотя это старый вопрос, я хотел бы перечислить все библиотеки / инструменты, которые я знаю до сих пор, чтобы этот ответ мог помочь тем, кто попадает на эту страницу, искать то же самое:

JavaScript:

PHP:

Ruby:

Не стесняйтесь отвечать в комментариях, если вы знаете о любой другой библиотеке, которая не указана здесь:)

( Полное раскрытие: natural-cron.js был разработан мной и моим другом, когда ни одна другая библиотека не удовлетворила потребности нашего проекта)

2 голосов
/ 16 декабря 2009

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

1 голос
/ 16 декабря 2009

В зависимости от того, насколько вам это нужно, и от того, насколько вы готовы закатать рукава, вы можете определить для этого простую грамматику.

Каждый будет квантификатором. Возможно, вам нужны другие, но я не могу думать ни о ком. Допустимый синтаксис может быть:

Каждый (день) AT (время)

Где day-spec может быть буквальным днем ​​(т. Е. понедельник ) или днем ​​месяца (т. Е. 30-й день ) или некоторым другой синтаксис (я бы посоветовал фортнайты, но я не уверен, что Крон может хорошо их представить).

Время можно указать в формате 24 часа ( 16: 00 ) или 12 часов ( 4: 00 pm).

Другой синтаксис, который вам может понадобиться: Каждое (частота) С (время ), где частота в основном (количество) (единица измерения) ) (т.е. 10 минут ). Время от позволяет установить смещение (например, Каждые 30 минут с 01:10 утра ).

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

0 голосов
/ 16 декабря 2009

Хм, о тех гочах ... Как насчет того, чтобы написать тот, который переводит параметры хрон обратно на английский? Таким образом, вы можете увидеть, «понял» ли парсер вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...