module Fugit::Cron::Parser
Constants
- DOW_REX
- MONTHS
- MONTH_REX
- WEEKDAYS
- WEEKDS
Public Instance Methods
_dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 657 def _dom(i); seq(nil, i, :hyphen, :dom); end
_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 659 def _dow(i); seq(nil, i, :hyphen, :dow); end
_hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 656 def _hou(i); seq(nil, i, :hyphen, :hou); end
_mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 658 def _mon(i); seq(nil, i, :hyphen, :mon); end
_mos(i)
click to toggle source
# File lib/fugit/cron.rb, line 655 def _mos(i); seq(nil, i, :hyphen, :mos); end
_tz(i)
click to toggle source
# File lib/fugit/cron.rb, line 716 def _tz(i); alt(:tz, i, :_tz_delta, :_tz_name); end
_tz_delta(i)
click to toggle source
# File lib/fugit/cron.rb, line 713 def _tz_delta(i) rex(nil, i, / +[-+]([01][0-9]|2[0-4]):?(00|15|30|45)/) end
_tz_name(i)
click to toggle source
# File lib/fugit/cron.rb, line 710 def _tz_name(i) rex(nil, i, / +[A-Z][a-zA-Z0-9+\-]+(\/[A-Z][a-zA-Z0-9+\-_]+){0,2}/) end
classic_cron(i)
click to toggle source
# File lib/fugit/cron.rb, line 718 def classic_cron(i) seq(:ccron, i, :lmin_, :lhou_, :ldom_, :lmon_, :ldow, :_tz, '?') end
comma(i)
click to toggle source
# File lib/fugit/cron.rb, line 643 def comma(i); str(nil, i, ','); end
cron(i)
click to toggle source
# File lib/fugit/cron.rb, line 725 def cron(i) alt(:cron, i, :second_cron, :classic_cron) end
dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 649 def dom(i); rex(:dom, i, /(-?(3[01]|[12][0-9]|0?[1-9])|last|l)/i); end
dom_elt(i)
click to toggle source
# File lib/fugit/cron.rb, line 685 def dom_elt(i); alt(:elt, i, :slash, :sorws_dom); end
dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 651 def dow(i); rex(:dow, i, DOW_REX); end
dow_elt(i)
click to toggle source
# File lib/fugit/cron.rb, line 687 def dow_elt(i); alt(:elt, i, :slash, :sorws_dow); end
dow_elt_(i)
click to toggle source
# File lib/fugit/cron.rb, line 694 def dow_elt_(i); alt(nil, i, :h_dow, :mod_dow, :dow_elt); end
dow_hash(i)
click to toggle source
# File lib/fugit/cron.rb, line 653 def dow_hash(i); rex(:hash, i, /#(-?[1-5]|last|l)/i); end
h_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 692 def h_dow(i); seq(:elt, i, :dow, :dow_hash); end
hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 648 def hou(i); rex(:hou, i, /(2[0-4]|[01]?[0-9])/); end
hou_elt(i)
click to toggle source
# File lib/fugit/cron.rb, line 684 def hou_elt(i); alt(:elt, i, :slash, :sorws_hou); end
hyphen(i)
click to toggle source
# File lib/fugit/cron.rb, line 642 def hyphen(i); str(nil, i, '-'); end
ldom_(i)
click to toggle source
# File lib/fugit/cron.rb, line 706 def ldom_(i); seq(nil, i, :list_dom, :s); end
lhou_(i)
click to toggle source
# File lib/fugit/cron.rb, line 705 def lhou_(i); seq(nil, i, :list_hou, :s); end
list_dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 699 def list_dom(i); jseq(:dom, i, :dom_elt, :comma); end
list_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 701 def list_dow(i); jseq(:dow, i, :dow_elt_, :comma); end
Also aliased as: ldow
list_hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 698 def list_hou(i); jseq(:hou, i, :hou_elt, :comma); end
list_min(i)
click to toggle source
# File lib/fugit/cron.rb, line 697 def list_min(i); jseq(:min, i, :mos_elt, :comma); end
list_mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 700 def list_mon(i); jseq(:mon, i, :mon_elt, :comma); end
list_sec(i)
click to toggle source
# File lib/fugit/cron.rb, line 696 def list_sec(i); jseq(:sec, i, :mos_elt, :comma); end
lmin_(i)
click to toggle source
# File lib/fugit/cron.rb, line 704 def lmin_(i); seq(nil, i, :list_min, :s); end
lmon_(i)
click to toggle source
# File lib/fugit/cron.rb, line 707 def lmon_(i); seq(nil, i, :list_mon, :s); end
lsec_(i)
click to toggle source
# File lib/fugit/cron.rb, line 703 def lsec_(i); seq(nil, i, :list_sec, :s); end
mod(i)
click to toggle source
# File lib/fugit/cron.rb, line 689 def mod(i); rex(:mod, i, /%\d+(\+\d+)?/); end
mod_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 691 def mod_dow(i); seq(:elt, i, :dow, :mod); end
mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 650 def mon(i); rex(:mon, i, MONTH_REX); end
mon_elt(i)
click to toggle source
# File lib/fugit/cron.rb, line 686 def mon_elt(i); alt(:elt, i, :slash, :sorws_mon); end
mos(i)
click to toggle source
# File lib/fugit/cron.rb, line 647 def mos(i); rex(:mos, i, /[0-5]?\d/); end
mos_elt(i)
click to toggle source
ssws: slash or sorws
# File lib/fugit/cron.rb, line 683 def mos_elt(i); alt(:elt, i, :slash, :sorws_mos); end
r_dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 664 def r_dom(i); seq(nil, i, :dom, :_dom, '?'); end
r_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 666 def r_dow(i); seq(nil, i, :dow, :_dow, '?'); end
r_hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 663 def r_hou(i); seq(nil, i, :hou, :_hou, '?'); end
r_mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 665 def r_mon(i); seq(nil, i, :mon, :_mon, '?'); end
r_mos(i)
click to toggle source
r: range
# File lib/fugit/cron.rb, line 662 def r_mos(i); seq(nil, i, :mos, :_mos, '?'); end
rewrite_bound(k, t)
click to toggle source
rewriting the parsed tree
# File lib/fugit/cron.rb, line 731 def rewrite_bound(k, t) s = t.string.downcase (k == :mon && MONTHS.index(s)) || (k == :dow && WEEKDS.index(s)) || ((k == :dom) && s[0, 1] == 'l' && -1) || # L, l, last s.to_i end
rewrite_cron(t)
click to toggle source
# File lib/fugit/cron.rb, line 792 def rewrite_cron(t) st = t .sublookup(nil) # go to :ccron or :scron return nil unless st hcron = st .subgather(nil) # list min, hou, mon, ... .inject({}) { |h, tt| h[tt.name] = tt.name == :tz ? rewrite_tz(tt) : rewrite_entry(tt) h } z, tz = hcron[:tz]; return nil if z && ! tz hcron end
rewrite_elt(k, t)
click to toggle source
# File lib/fugit/cron.rb, line 749 def rewrite_elt(k, t) at, zt, slt, hat, mot = nil; t.subgather(nil).each do |tt| case tt.name when :slash then slt = tt when :hash then hat = tt when :mod then mot = tt else if at; zt ||= tt; else; at = tt; end end end sl = slt ? slt.string[1..-1].to_i : nil ha = hat ? hat.string[1..-1] : nil ha = -1 if ha && ha.upcase[0, 1] == 'L' ha = ha.to_i if ha mo = mot ? rewrite_mod(k, mot) : nil a = at ? rewrite_bound(k, at) : nil z = zt ? rewrite_bound(k, zt) : nil #a, z = z, a if a && z && a > z # handled downstream since gh-27 [ a, z, sl, ha, mo ] end
rewrite_entry(t)
click to toggle source
# File lib/fugit/cron.rb, line 777 def rewrite_entry(t) t .subgather(:elt) .collect { |et| rewrite_elt(t.name, et) } end
rewrite_mod(k, t)
click to toggle source
# File lib/fugit/cron.rb, line 741 def rewrite_mod(k, t) mod, plus = t.string .split(/[%+]/).reject(&:empty?).collect(&:to_i) [ mod, plus || 0 ] end
rewrite_tz(t)
click to toggle source
# File lib/fugit/cron.rb, line 784 def rewrite_tz(t) s = t.strim z = EtOrbi.get_tzone(s) [ s, z ] end
s(i)
click to toggle source
piece parsers bottom to top
# File lib/fugit/cron.rb, line 640 def s(i); rex(nil, i, /[ \t]+/); end
second_cron(i)
click to toggle source
# File lib/fugit/cron.rb, line 721 def second_cron(i) seq(:scron, i, :lsec_, :lmin_, :lhou_, :ldom_, :lmon_, :ldow, :_tz, '?') end
slash(i)
click to toggle source
# File lib/fugit/cron.rb, line 645 def slash(i); rex(:slash, i, /\/\d\d?/); end
sor_dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 671 def sor_dom(i); alt(nil, i, :star, :r_dom); end
sor_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 673 def sor_dow(i); alt(nil, i, :star, :r_dow); end
sor_hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 670 def sor_hou(i); alt(nil, i, :star, :r_hou); end
sor_mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 672 def sor_mon(i); alt(nil, i, :star, :r_mon); end
sor_mos(i)
click to toggle source
sor: star or range
# File lib/fugit/cron.rb, line 669 def sor_mos(i); alt(nil, i, :star, :r_mos); end
sorws_dom(i)
click to toggle source
# File lib/fugit/cron.rb, line 678 def sorws_dom(i); seq(nil, i, :sor_dom, :slash, '?'); end
sorws_dow(i)
click to toggle source
# File lib/fugit/cron.rb, line 680 def sorws_dow(i); seq(nil, i, :sor_dow, :slash, '?'); end
sorws_hou(i)
click to toggle source
# File lib/fugit/cron.rb, line 677 def sorws_hou(i); seq(nil, i, :sor_hou, :slash, '?'); end
sorws_mon(i)
click to toggle source
# File lib/fugit/cron.rb, line 679 def sorws_mon(i); seq(nil, i, :sor_mon, :slash, '?'); end
sorws_mos(i)
click to toggle source
sorws: star or range with slash
# File lib/fugit/cron.rb, line 676 def sorws_mos(i); seq(nil, i, :sor_mos, :slash, '?'); end
star(i)
click to toggle source
# File lib/fugit/cron.rb, line 641 def star(i); str(nil, i, '*'); end