Module: Timezone::Parser::Rule

Defined in:
lib/timezone/parser/rule/on_rules.rb,
lib/timezone/parser/rule.rb,
lib/timezone/parser/rule/on.rb,
lib/timezone/parser/rule/entry.rb

Overview

A simple DSL for definining rules to parse the “ON” field in TZData rules.

Defined Under Namespace

Classes: Entry, On

Constant Summary collapse

RULE =

Format: Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Example: Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S

/Rule\s+([\w-]+?)\s+(\d+?)\s+([^\s]+?)\s+([^\s]+?)\s+(\s*\w+?)\s+([\d\w\=\>\<]+?)\s+([\d:us]+?)\s+([\d:]+?)\s+([\w-]+)/
END_YEAR =

The actual value for the “to” field when set to “max”.

2050
@@rules =

Rules are stored in a hash of arrays that are referenced by rule name.

Hash.new{ |h, k| h[k] = [] }

Class Method Summary collapse

Class Method Details

.generate(line) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/timezone/parser/rule.rb', line 29

def generate(line)
  name, from, to, *values = *line.match(RULE)[1..-1]

  years(from, to).each do |year|
    @@rules[name] << Entry.new(name, year, *values)
  end
end

.on(*args) ⇒ Object



5
# File 'lib/timezone/parser/rule/on.rb', line 5

def self.on(*args) ; On.new(*args) ; end

.rulesObject



26
# File 'lib/timezone/parser/rule.rb', line 26

def self.rules ; @@rules ; end