class Babelish::Base2Csv
Attributes
csv_filename[RW]
default_lang[RW]
filenames[RW]
headers[RW]
Public Class Methods
new(args = {:filenames => []})
click to toggle source
# File lib/babelish/base2csv.rb, line 5 def initialize(args = {:filenames => []}) raise ArgumentError.new("No filenames given") unless args[:filenames] if args[:headers] raise ArgumentError.new("number of headers and files don't match, don't forget the constant column") unless args[:headers].size == (args[:filenames].size + 1) end @filenames = args[:filenames] @csv_filename = args[:csv_filename] || "translations.csv" @default_lang = args[:default_lang] @headers = args[:headers] || default_headers end
Public Instance Methods
convert(write_to_file = true)
click to toggle source
Process files and create csv
@param [Boolean] write_to_file create or not the csv file @return [Hash] the translations formatted if write_to_file
# File lib/babelish/base2csv.rb, line 24 def convert(write_to_file = true) strings = {} keys = nil comments = {} @filenames.each do |fname| header = fname strings[header], file_comments = load_strings(fname) keys ||= strings[header].keys comments.merge!(file_comments) end if write_to_file # Create csv file puts "Creating #{@csv_filename}" create_csv_file(keys, strings, comments) else return keys, strings end end
Protected Instance Methods
basename(file_path)
click to toggle source
Basename of given file
@param [String, read] file_path @return [String] basename
# File lib/babelish/base2csv.rb, line 71 def basename(file_path) filename = File.basename(file_path) return filename.split('.')[0].to_sym if file_path end
default_headers()
click to toggle source
Give the default headers of csv file
@return [Array] headers of csv
# File lib/babelish/base2csv.rb, line 59 def default_headers headers = ["Variables"] @filenames.each do |fname| headers << fname end headers end
load_strings(strings_filename)
click to toggle source
Load all strings of a given file
@param [String, read] strings_filename filename of file containing translations for a given language @return [Hash] the translations for a given language
# File lib/babelish/base2csv.rb, line 52 def load_strings(strings_filename) return [{}, {}] end
Private Instance Methods
create_csv_file(keys, strings, comments = nil)
click to toggle source
Create the resulting file
@param [Array] keys references of all translations @param [Array] strings translations of all languages @param [Hash] comments hash containing keys, comments related to each keys, describe the translation
# File lib/babelish/base2csv.rb, line 83 def create_csv_file(keys, strings, comments = nil) raise "csv_filename must not be nil" unless @csv_filename CSV.open(@csv_filename, "wb") do |csv| @headers << "Comments" if !comments.nil? && !comments.empty? csv << @headers keys.each do |key| line = [key] default_val = strings[@default_lang][key] if strings[@default_lang] @filenames.each do |fname| lang = fname current_val = (lang != default_lang && strings[lang][key] == default_val) ? '' : strings[lang][key] line << current_val end line << comments[key] if comments && comments[key] csv << line end puts "Done" end end