class TmattCms::Generators::LocaleGenerator

Public Instance Methods

generate_locale() click to toggle source
# File lib/generators/tmatt_cms/locale_generator.rb, line 13
def generate_locale
  prefix_length = 45
  blank_space = ' ' * (prefix_length - 2 - ("#{key}").length)

  p "#{key} => #{zh_value} | #{en_value == '' ? key : en_value}"

  if File.readlines('config/locales/views/global/en.yml').grep(/  #{key}: /).size == 0

    File.open(File.join('config', 'locales', 'views', 'global', 'en.yml'), 'a+') do |f|
      f.puts "  #{key}:#{blank_space}\"#{en_value == '' ? key : en_value}\""
    end

    File.open(File.join('config', 'locales', 'views', 'global', 'zh.yml'), 'a+') do |f|
      f.puts "  #{key}:#{blank_space}\"#{zh_value}\""
    end

  else
    p "#{key} exists!!! Override?(y/n) [n]:"
    is_override = STDIN.gets.chomp

    is_override = is_override == 'y' ? true : false

    if is_override
      line_number_en = get_line_number('config/locales/views/global/en.yml', "  #{key}: ")
      override_line('config/locales/views/global/en.yml', line_number_en, "  #{key}:#{blank_space}\"#{en_value == '' ? key : en_value}\"")

      line_number_zh = get_line_number('config/locales/views/global/zh.yml', "  #{key}: ")
      override_line('config/locales/views/global/zh.yml', line_number_zh, "  #{key}:#{blank_space}\"#{zh_value}\"")
    end
  end
end

Private Instance Methods

get_line_number(file, word) click to toggle source
# File lib/generators/tmatt_cms/locale_generator.rb, line 47
def get_line_number(file, word)
  count = 0
  File.open(file, "r") { |f| f.each_line { |line|
    count += 1
    return count if line =~ /#{word}/
  }}
end
override_line(file_path, line_number, new_line) click to toggle source
# File lib/generators/tmatt_cms/locale_generator.rb, line 55
def override_line(file_path, line_number, new_line)
  lines = File.readlines(file_path)
  lines[line_number - 1] = new_line << $/
  File.open(file_path, 'w') { |f| f.write(lines.join) }
end