Class: Crontab

Inherits:
Object
  • Object
show all
Defined in:
lib/crontab.rb,
lib/crontab/entry.rb,
lib/crontab/schedule.rb

Overview

A class which represents crontab(5) content.

Defined Under Namespace

Classes: Entry, Schedule

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entries, env) ⇒ Crontab

Returns a new instance of Crontab.



29
30
31
32
# File 'lib/crontab.rb', line 29

def initialize(entries, env)
  @entries = entries.dup.freeze
  @env = env.dup.freeze
end

Instance Attribute Details

#entriesObject (readonly)

Returns the value of attribute entries.



33
34
35
# File 'lib/crontab.rb', line 33

def entries
  @entries
end

#envObject (readonly)

Returns the value of attribute env.



33
34
35
# File 'lib/crontab.rb', line 33

def env
  @env
end

Class Method Details

.parse(src) ⇒ Object

Parses a crontab(5) text.

  • src string in crontab(5) format



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/crontab.rb', line 10

def parse(src)
  entries = []
  env = {}
  src.lines.each do |line|
    line.strip!
    case line
    when /\A[\d*]/
      entries << Crontab::Entry.parse(line)
    when /\A([A-Z][A-Z0-9_]*)\s*=\s*/, /\A"([A-Z][A-Z0-9_]*)"\s*=\s*/, /\A'([A-Z][A-Z0-9_]*)'\s*=\s*/
      name = $1
      value = $'
      value = $1 if /\A'(.*)'\z/ =~ value or /\A"(.*)"\z/ =~ value
      env[name] = value
    end
  end
  new(entries, env)
end