class GemsBond::Printers::Printer

Prints HTML file

Constants

DIRECTORY_PATH

Public Class Methods

new(gems) click to toggle source

Initializes an instance @param gems [Array<GemsBond::Gem>] @return [GemsBond::Printers]

# File lib/gems_bond/printers/printer.rb, line 14
def initialize(gems)
  @gems = gems
end

Public Instance Methods

call() click to toggle source

Manages print @return [void]

# File lib/gems_bond/printers/printer.rb, line 20
def call
  format = self.class.name.split("::").last
  puts "\nPreparing data for printing results into #{format} file..."
  create_directory
  print
  puts "Open file gems_bond/spy.#{format.downcase} to display the results."
end

Private Instance Methods

create_directory() click to toggle source

Creates the “gems_bond” directory if absent

# File lib/gems_bond/printers/printer.rb, line 37
def create_directory
  return if File.directory?(DIRECTORY_PATH)

  FileUtils.mkdir_p(DIRECTORY_PATH)
end
print() click to toggle source

Prints data into a file @return [void]

sorted_gems() click to toggle source

Returns gems sorted by the average_score @return [Array<GemsBond::Gem>] @note gems with no average_score are put at the end

# File lib/gems_bond/printers/printer.rb, line 46
def sorted_gems
  # sort with putting gems without average_score at the end
  @gems.sort do |a, b|
    if a.average_score && b.average_score
      a.average_score <=> b.average_score
    else
      a.average_score ? -1 : 1
    end
  end
end