class Applocale::CompareStringFiles

Attributes

applocale_file1[R]
applocale_file2[R]
langpath_comparison_list[R]
platform[R]
result_file[R]
setting1[R]
setting2[R]

Public Class Methods

new(platform, applocale_file1, applocale_file2, setting1, setting2, result_file) click to toggle source
# File lib/applocale/Core/CompareStringFile/compare_string_files.rb, line 30
def initialize(platform, applocale_file1, applocale_file2, setting1, setting2, result_file)
  @platform = platform
  @applocale_file1 = applocale_file1
  @applocale_file2 = applocale_file2
  @setting1 = setting1
  @setting2 = setting2
  @result_file = result_file
  @langpath_comparison_list = @setting1.lang_path_list.map do |lang_path_obj|
    file1 = lang_path_obj.filepath
    file2 = @setting2.lang_path_list.detect { |e| e.lang == lang_path_obj.lang }&.filepath
    Applocale::Config::LangPathComparison.new(platform, lang_path_obj.lang, file1,  file2)
  end
  compare_all
end

Public Instance Methods

compare_all() click to toggle source
# File lib/applocale/Core/CompareStringFile/compare_string_files.rb, line 10
def compare_all
  results = @langpath_comparison_list.map do |langpath_comparison|
    lang = langpath_comparison.lang
    file1 = langpath_comparison.filepath1
    file2 = langpath_comparison.filepath2
    if file1.nil? or file2.nil?
      Applocale::Config::LangPathComparisonResult.new(langpath_comparison, "Warning: [#{lang}] missing files for comparison!!!!!")
    else
      Applocale::CompareStringFile.compare(langpath_comparison)
    end
  end
  results.each {| result |
    unless result.warning.nil?
      puts result.warning.yellow
    end
  }
  write_result_to_csv(results)
  puts "Comparison Finished, output: #{result_file} !!!".green
end
write_result_to_csv(results) click to toggle source
# File lib/applocale/Core/CompareStringFile/compare_string_files.rb, line 45
def write_result_to_csv(results)
  filtered_results = results.select do | result |
    result.warning.nil?
  end
  columns = filtered_results
              .map { |result| result.lang }
              .flat_map do | lang |
    ["notSame", "duplicateKey", "mismatch", "missingKeyIn1st", "missingkeyIn2nd"].map { |column| "#{lang}: #{column}" }
  end
  values =  filtered_results.flat_map { |result|
    [result.not_same,
    result.duplicate_key,
    result.mismatch,
    result.missing_in_1,
    result.missing_in_2]
  }
  values_max_length = values.max { |a,b| a.length <=> b.length }.length
  _first_value, *other_values = values
  first_value = values_max_length.times.collect { |i| _first_value[i] }
  csv_values = first_value.zip(*other_values)
  CSV.open(@result_file, "w") do | csv |
    csv << columns
    csv_values.each { | row |  csv << row }
  end
end