Module: A0::TZMigration

Defined in:
lib/a0/tzmigration/config.rb,
lib/a0/tzmigration/version.rb,
lib/a0/tzmigration/tzversion.rb,
lib/a0/tzmigration/range_list.rb,
lib/a0/tzmigration/data_generator.rb,
lib/a0/tzmigration/data_generator/git.rb,
lib/a0/tzmigration/data_generator/save.rb,
lib/a0/tzmigration/data_generator/process.rb

Defined Under Namespace

Classes: DataGenerator, DefaultConfig, TZVersion

Constant Summary collapse

VERSION =
'0.1.1'

Class Method Summary collapse

Class Method Details

.compact_range_list!(range_list) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/a0/tzmigration/range_list.rb', line 5

def self.compact_range_list!(range_list) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  index = 0

  while index < range_list.count
    curr_range = range_list[index]
    next_range = range_list[index + 1]

    if next_range && curr_range[:fin] == next_range[:ini] && curr_range[:off] == next_range[:off]
      curr_range[:fin] = next_range[:fin]
      range_list.delete_at(index + 1)
    else
      index += 1
    end
  end

  range_list
end

.configObject



18
19
20
# File 'lib/a0/tzmigration/config.rb', line 18

def self.config
  @config || configure
end

.configure {|@config| ... } ⇒ Object

Yields:



12
13
14
15
16
# File 'lib/a0/tzmigration/config.rb', line 12

def self.configure
  @config = DefaultConfig.new
  yield(@config) if block_given?
  @config
end

.next_index(index, range_list, timestamp) ⇒ Object



23
24
25
26
27
# File 'lib/a0/tzmigration/range_list.rb', line 23

def self.next_index(index, range_list, timestamp)
  index += 1 while range_list[index + 1] && range_list[index][:ini] < timestamp && range_list[index][:fin] <= timestamp

  index
end

.split_range_list!(range_list, timestamps) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/a0/tzmigration/range_list.rb', line 42

def self.split_range_list!(range_list, timestamps) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  index = next_index(0, range_list, timestamps.first)

  timestamps.each_with_index do |timestamp, timestamp_index|
    range = range_list[index]

    if timestamp > range[:ini] && timestamp < range[:fin] && index < range_list.count
      range_list.insert index + 1, range.merge(ini: timestamp)
      range_list[index][:fin] = timestamp
    end

    next_timestamp = timestamps[timestamp_index + 1]

    index = next_index(index, range_list, next_timestamp) if next_timestamp
  end

  range_list
end

.timestamp_range_list!(range_list) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/a0/tzmigration/range_list.rb', line 33

def self.timestamp_range_list!(range_list)
  range_list.each do |range|
    range[:utc_ini] = timestamp_to_utc(range[:ini])
    range[:utc_fin] = timestamp_to_utc(range[:fin])
  end

  range_list
end

.timestamp_to_utc(timestamp) ⇒ Object



29
30
31
# File 'lib/a0/tzmigration/range_list.rb', line 29

def self.timestamp_to_utc(timestamp)
  Time.at(timestamp).utc if timestamp && timestamp != Float::INFINITY && timestamp != -Float::INFINITY
end