Module: I18n::Processes::Command::Commands::Preprocessing
- Includes:
- I18n::Processes::Command::Collection, Path
- Included in:
- Missing, I18n::Processes::Commands
- Defined in:
- lib/i18n/processes/command/commands/preprocessing.rb
Instance Method Summary collapse
- #changed_keys(previous, current) ⇒ Object
- #changed_keys_save(diff) ⇒ Object
- #keys_source(dic, path, locale) ⇒ Object
- #origin_file_read(file) ⇒ Object
- #preprocessing(opt = {}) ⇒ Object
Methods included from I18n::Processes::Command::Collection
Instance Method Details
#changed_keys(previous, current) ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/i18n/processes/command/commands/preprocessing.rb', line 63 def changed_keys(previous, current) previous_dic = get_dic(previous) current_dic = get_dic(current) diff = current_dic.merge(previous_dic){|k, v1, v2| {:current => v1, :previous => v2} unless v1 == v2 } diff.select!{ |k, v| v.is_a?(Hash)} print_changed_keys(diff) unless diff == {} changed_keys_save(diff) unless diff == {} end |
#changed_keys_save(diff) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/i18n/processes/command/commands/preprocessing.rb', line 72 def changed_keys_save(diff) file = 'tmp/changed_keys/changed_keys' FileUtils::mkdir_p File.dirname(file) unless Dir.exist?File.dirname(file) changed_keys = File.new(file, 'w') diff.each do |k, v| changed_keys.write "key: #{k}\n" changed_keys.write "current: #{v[:current]}" changed_keys.write "previous: #{v[:previous]}" changed_keys.write "\n" end changed_keys.close log_warn("need to update #{diff.count} keys' translation") log_warn("changed_keys save to #{file}") end |
#keys_source(dic, path, locale) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/i18n/processes/command/commands/preprocessing.rb', line 50 def keys_source(dic, path, locale) filename = path + locale previous_file = "#{path}pre_#{locale}" File.delete(previous_file) if File.exist?(previous_file) File.rename(filename, previous_file) if File.exist?(filename) local_file = File.new(filename, 'w') dic.map do |key, value| value.include?("\n") ? local_file.write("#{key}=#{value}") : local_file.write("#{key}=#{value}\n") end local_file.close changed_keys(previous_file, filename) if File.exist?(previous_file) && locale == base_locale end |
#origin_file_read(file) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/i18n/processes/command/commands/preprocessing.rb', line 33 def origin_file_read(file) {}.tap do |a| File.open(file).read.each_line do |line| next if line =~ /^#/ || line == "\n" || !line.include?('.') if line.include?('\':') line.gsub!(/'|,/, '') key = line.split(': ').first.delete(' ') value = line.split(': ').last else key = line.split('=').first.delete(' ') value = line.split('=').last end a[key] = value end end end |
#preprocessing(opt = {}) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/i18n/processes/command/commands/preprocessing.rb', line 19 def preprocessing(opt = {}) locale = opt[:locales].include?(base_locale) ? 'zh-CN' : opt[:locales].first dic = {} origin_files(locale).flatten.each do |file| # dic.merge!(origin_file_read(file)) { |key, v1, v2| fail "conflict: #{key}: #{v1}, #{v2} in #{file}" unless v1 == v2 } dic.merge!(origin_file_read(file)) end ## 对比文件默认存储路径 path = 'tmp/' keys_source(dic, path, locale) $stderr.puts Rainbow('preprocess origin data files into primitive files successfully').green if locale == base_locale end |