class BabelBot::TwineGenerator

Constants

COMMENT_ID
EN_LOCALE
KEY_ID

Public Class Methods

new(csv, out_path) click to toggle source
# File lib/babel_bot/twine_generator.rb, line 17
def initialize(csv, out_path)
  @csv = csv
  @out_path = out_path
  @non_english_locales = @csv.headers - [KEY_ID, COMMENT_ID, EN_LOCALE]
end

Public Instance Methods

filter_duplicate_rows() click to toggle source
# File lib/babel_bot/twine_generator.rb, line 47
def filter_duplicate_rows
  @csv.entries.uniq{|x| x[KEY_ID] }
end
generate() click to toggle source
# File lib/babel_bot/twine_generator.rb, line 23
def generate
  section = generate_section
  strings_file = generate_strings_file(section)
  strings_file.write(@out_path)
end
generate_section() click to toggle source
# File lib/babel_bot/twine_generator.rb, line 29
def generate_section
  Twine::StringsSection.new("General").tap do |section|
    valid_rows = filter_duplicate_rows
    valid_rows.sort{|a, b| a[KEY_ID] <=> b[KEY_ID] }.each do |row|
      translation_row = Twine::StringsRow.new(row[KEY_ID])

      translation_row.comment = row[COMMENT_ID]

      translation_row.translations[EN_LOCALE] = row[EN_LOCALE]
      @non_english_locales.each do |locale|
        translation_row.translations[locale] = row[locale] if row[locale]
      end

      section.rows << translation_row
    end
  end
end
generate_strings_file(section) click to toggle source
# File lib/babel_bot/twine_generator.rb, line 51
def generate_strings_file(section)
  Twine::StringsFile.new.tap do |strings_file|
    strings_file.set_developer_language_code(EN_LOCALE)

    @non_english_locales.each do |locale|
      strings_file.add_language_code(locale)
    end

    strings_file.sections << section
  end
end