Class: DOST::Data

Inherits:
Object
  • Object
show all
Defined in:
lib/dost.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lines:, headers_delimiters:, values_delimiters:, key_modifier: nil) ⇒ Data

Returns a new instance of Data.



5
6
7
8
9
10
# File 'lib/dost.rb', line 5

def initialize(lines:, headers_delimiters:, values_delimiters:, key_modifier: nil)
  @lines = lines.map(&:chomp)
  @headers_delimiters = headers_delimiters
  @values_delimiters = values_delimiters
  @key_modifier = key_modifier
end

Instance Attribute Details

#headers_delimitersObject (readonly)

Returns the value of attribute headers_delimiters.



3
4
5
# File 'lib/dost.rb', line 3

def headers_delimiters
  @headers_delimiters
end

#key_modifierObject (readonly)

Returns the value of attribute key_modifier.



3
4
5
# File 'lib/dost.rb', line 3

def key_modifier
  @key_modifier
end

#linesObject (readonly)

Returns the value of attribute lines.



3
4
5
# File 'lib/dost.rb', line 3

def lines
  @lines
end

#values_delimitersObject (readonly)

Returns the value of attribute values_delimiters.



3
4
5
# File 'lib/dost.rb', line 3

def values_delimiters
  @values_delimiters
end

Instance Method Details

#dynamic_offseted_values(left_dynamic_bound_headers = []) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/dost.rb', line 20

def dynamic_offseted_values(left_dynamic_bound_headers = [])
  values_lines.map do |line|
    headers.reverse.map do |(name, range)|
      is_dynamic = left_dynamic_bound_headers.include?(name)
      str = line[range]
      if is_dynamic && range.first > 0
        i = range.first - 1
        while present?(line[i]) && i >= 0 do
          str.prepend(line[i])
          line[i] = ' '
          i -= 1
        end
      end
      [name, str.strip]
    end.reverse.to_h
  end
end

#headersObject



12
13
14
# File 'lib/dost.rb', line 12

def headers
  @headers ||= parse_headers
end

#valuesObject



16
17
18
# File 'lib/dost.rb', line 16

def values
  @values ||= parse_values
end