2009-12-16 11 views
5

Ho fatto qualche ricerca ma non ho trovato niente di utile ma mi chiedo se qualcuno sa qualcosa (strumento, lib, ecc.) Che può analizzare frasi inglesi e tradurle in una stringa di cron.Come convertire Inglese in Cron?

Per esempio: Every Tuesday at 15:00 converte in 0 15 * * 2

Sembra qualcosa che avrebbe un sacco di trucchi e sarebbe preferibile beneficiare di qualcuno lavoro elses. Lo vedi in alcuni bei siti/app che possono capire cosa intendi con una semplice frase piuttosto che avere un'interfaccia utente orribile.

Grazie in anticipo.

+0

Sembra che tu stia cercando un programma esistente, rendendo questa una domanda ServerFault, non una domanda di programmazione. –

+0

Non con tag come "nlp" e "parser" e "parse". Sicuramente una domanda di programmazione. – Thomas

+0

tool, library, framework - Non sono schizzinoso.Per lo sfondo mi piacerebbe che generi stringhe di cron per cron e alla fine Quartz. –

risposta

2

Per Ruby c'è "Whenever" che potrebbe fornire un punto di partenza: traduce quasi-inglese (in realtà è Ruby valido) in string cron.

+0

Dal tuo post sono stato ispirato da Whenever e ho fatto una piccola libreria PHP: https://github.com/bpolaszek/natural-cron-expression – user4994579

1

A seconda di quanto flessibile sia necessario, e di quanto sia disposto a rimboccarsi le maniche, è possibile definire una semplice grammatica per questo.

Ogni sarebbe un quantificatore. Potresti aver bisogno di altri ma non riesco a pensare a nessuno. sintassi valida potrebbe essere:

Ogni(giorno-spec)AT(tempo)

Dove giorno-spec potrebbe essere una giornata letterale (. es Lunedi) o essere un giorno del mese (ad esempio 30th Day) o qualche altra sintassi (suggerirei le quindici ma non sono sicuro che Cron possa rappresentarle bene).

tempo potrebbe essere specificato utilizzando 24 ore (16:00 ) o 12 ore in formato (16:00).

Un'altra sintassi che si potrebbe desiderare è: Ogni(frequenza)Da(tempo), dove la frequenza è sostanzialmente (quantità)(unità) (cioè 10 Minuti.). Il fuso orario consente di impostare un offset (ad esempio ogni 30 minuti dalle 01:10 al).

Probabilmente dovresti sederti e capire un po 'di più questi dettagli. Ma una grammatica rigida potrebbe essere implementata in modo relativamente semplice usando recursive descent.

+0

Definire una grammatica per questo sarebbe esagerato. Non c'è niente di ricorsivo in questa grammatica. Fare una piccola macchina statica è la via più veloce – Toad

+1

@reinier Non sarebbe così se non ci fosse il "roll your own hammer" per "come rompere una noce?" domanda. :) –

0

Hmm, a proposito di quei trucchi ... Che ne dici di scriverne uno che traduce i parametri cron indietro in inglese? In questo modo puoi vedere se il parser ha "capito" te.

+0

Ho visto un sacco di cose che traducono cron in inglese durante la ricerca e hanno avuto il stesso pensiero Ovviamente non torneresti sempre lo stesso inglese dall'altra parte, dato che ci sono molti a uno dall'inglese a cron. Comunque una bella idea Piuttosto mi ricorda il divertimento che si può avere traducendo frasi da e verso le lingue straniere usando google traduttore. –