Class: CsvPatch::Revision

Inherits:
Operation show all
Defined in:
lib/csv_patch/revision.rb

Instance Method Summary collapse

Methods inherited from Operation

#csv_line, #csv_values

Constructor Details

#initialize(changes, output_stream, id_column = nil) ⇒ Revision

Returns a new instance of Revision.



7
8
9
10
11
12
13
# File 'lib/csv_patch/revision.rb', line 7

def initialize changes, output_stream, id_column = nil
  @output_stream  = output_stream
  @changes        = changes
  @id_column      = id_column

  header_line([])
end

Instance Method Details

#add_new_linesObject



28
29
30
31
32
33
34
35
36
# File 'lib/csv_patch/revision.rb', line 28

def add_new_lines
  @changes
    .values
    .reject { |change| change.nil? }
    .reject { |change| change[:applied] }
    .each do |addition|
      emit generate_new_row(addition)
    end
end

#column_metadataObject



38
39
40
# File 'lib/csv_patch/revision.rb', line 38

def 
  { columns: @columns, empty_columns: @empty_columns }
end

#header_line(line) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/csv_patch/revision.rb', line 15

def header_line line
  return unless line

  @columns          = line
  @id_column_index  = @columns.find_index(@id_column)

  mark_all_columns_empty
end

#replace_line(line) ⇒ Object



24
25
26
# File 'lib/csv_patch/revision.rb', line 24

def replace_line line
  emit replacement_line_for(line)
end