Sha256: 1267270cc8d3e4e3e43bcd65e191a3da90b6bba7e13d28add033c766050b1e89

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

module Aigu
  class Unmergeer
    UNMERGE_REGEX = /^@(?<file_name>\w+)@__(?<key>.+)$/

    def initialize(opts = {})
      @output_directory = opts[:'output-directory']
      @input_file = opts[:'input-file']
    end

    def process!
      puts "Unmerging Accent json file `#{@input_file}` to `#{@output_directory}` directory"

      puts '---'

      parse_json
      write_json_files

      puts '---'
      puts 'Done'
    end

  protected

    def parse_json
      @object = {}

      json = JSON.parse(File.read(@input_file))

      json.each_pair do |key, value|
        match_data = key.match(UNMERGE_REGEX)
        if match_data
          @object[match_data[:file_name]] ||= {}
          @object[match_data[:file_name]][match_data[:key]] = value
        else
          @object['DEFAULT'] ||= {}
          @object['DEFAULT'][key] = value
        end
      end

      @object
    end

    def write_json_files
      @object.each_pair do |file_name, json|
        file_path = File.join(@output_directory, "#{file_name.downcase}.json")
        puts "Generating #{file_path}"
        FileUtils.mkdir_p(File.dirname(file_path))

        File.open(file_path, 'w+') do |file|
          file << JSON.pretty_generate(JSON.parse(json.to_json))
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
aigu-0.4.5 lib/aigu/unmergeer.rb
aigu-0.4.4 lib/aigu/unmergeer.rb
aigu-0.4.3 lib/aigu/unmergeer.rb
aigu-0.4.2 lib/aigu/unmergeer.rb
aigu-0.4.1 lib/aigu/unmergeer.rb
aigu-0.4 lib/aigu/unmergeer.rb