class Renogen::ChangeLog::Writer

Writes out the change log

Attributes

formatter[R]

Public Class Methods

new(formatter) click to toggle source
# File lib/renogen/change_log/writer.rb, line 5
def initialize(formatter)
  @formatter = formatter
end

Public Instance Methods

write!(changelog) click to toggle source

Writes out the change log

@param changelog [ChangeLog::Model]

# File lib/renogen/change_log/writer.rb, line 12
def write!(changelog)
  puts formatter.write_header(formatter.header(changelog)) unless formatter.write_header(formatter.header(changelog)).nil?
  if formatter.table_formatter?
    write_by_table!(changelog)
  else
    write_by_group!(changelog)
  end
  puts formatter.write_footer(changelog) unless formatter.write_footer(changelog).nil?
end
write_by_group!(changelog) click to toggle source

Writes out the change log by group

@param changelog [ChangeLog::Model]

# File lib/renogen/change_log/writer.rb, line 25
def write_by_group!(changelog)
  output_groups(changelog.groups)
end
write_by_table!(changelog) click to toggle source

Writes out the change log by item

@param changelog [ChangeLog::Model]

# File lib/renogen/change_log/writer.rb, line 32
def write_by_table!(changelog)
  changelog.tickets.each do |_, ticket|
    puts formatter.write_change(ticket)
  end
end

Protected Instance Methods

deduped_changes(changes) click to toggle source
# File lib/renogen/change_log/writer.rb, line 58
def deduped_changes(changes)
  return changes unless config.remove_duplicates

  changes.uniq { |c| c.to_s }
end
output_change(change) click to toggle source
# File lib/renogen/change_log/writer.rb, line 42
def output_change(change)
  if change.list?
    change.each { |item| puts formatter.write_change(item) }
  else
    puts formatter.write_change(change.to_s) if change.to_s.size > 0
  end
end
output_groups(groups) click to toggle source
# File lib/renogen/change_log/writer.rb, line 50
def output_groups(groups)
  groups.each do |group, changes|
    puts formatter.write_group(group)
    deduped_changes(changes).each { |change| output_change(change) }
    puts formatter.write_group_end
  end
end

Private Instance Methods

config() click to toggle source
# File lib/renogen/change_log/writer.rb, line 66
def config
  Config.instance
end