lib/aigu/importer.rb in aigu-0.4.5 vs lib/aigu/importer.rb in aigu-0.5

- old
+ new

@@ -1,98 +1,7 @@ -module Aigu - class Importer - ARRAY_REGEX = /___KEY___(?<index>\d+)$/ - - def initialize(opts = {}) - @input_file = opts[:'input-file'] - @output_directory = opts[:'output-directory'] - @locale = opts[:locale] - end - - def process! - puts "Generating YAML files in `#{@output_directory}` based on Accent-generated `#{@input_file}` file" - puts '---' - - parse_json - build_blob - write_yaml_files - - puts '---' - puts 'Done' - end - - protected - - def parse_json - json = File.read(@input_file) - @object = JSON.parse(json) - @object = expand_content_values(@object) - @object = localize_content_keys(@object) - end - - def write_yaml_files - @blob.each_pair do |file_name, hash| - file_path = File.join(@output_directory, "#{file_name}.yml") - puts "Generating #{file_path}" - FileUtils.mkdir_p(File.dirname(file_path)) - - File.open(file_path, 'w+') do |file| - file << hash.to_yaml(line_width: 100_000_000) - end - end - end - - def build_blob - @blob = Hash.recursive - - @object.each_pair do |key, value| - filename, flat_key = key.split('|') - - parts = flat_key.split('.') - hash = @blob[filename] - - parts.each_with_index do |part, index| - if index + 1 < parts.length - hash = hash[part] - else - hash[part] = value - end - end - end - end - - def localize_content_keys(content) - content.reduce({}) do |memo, (key, value)| - localized_key = key.gsub(/^([^|]+)\|/, "\\1.#{@locale}|#{@locale}.") - memo.merge localized_key => value - end - end - - def expand_content_values(content) - content.each_with_object({}) do |(key, value), memo| - match_data = key.match(ARRAY_REGEX) - - if match_data - canonical_key = key.gsub(ARRAY_REGEX, '') - value_index = match_data[:index].to_i - memo[canonical_key] ||= [] - memo[canonical_key][value_index] = sanitize_string_to_value(value) - else - memo[key] = sanitize_string_to_value(value) - end - end - end - - def sanitize_string_to_value(string) - case string - when '___TRUE___' - true - when '___FALSE___' - false - when '___NULL___' - nil - else - string - end - end +class Importer + def initialize(opts = {}) + @input_file = opts[:'input-file'] + @output_directory = opts[:'output-directory'] + @locale = opts[:locale] end end