Sha256: deaa7d9733eb3c860eb53e744060580ddd27855eb1d239fff70a2f969c462d2a

Contents?: true

Size: 1.3 KB

Versions: 10

Compression:

Stored size: 1.3 KB

Contents

module Aigu
  class EmberImporter < Importer
    def process!
      puts "Generating JavaScript file in `#{@output_directory}` based on Accent-generated `#{@input_file}` file"
      puts '---'

      parse_json
      build_blob
      write_javascript_file

      puts '---'
      puts 'Done'
    end

  protected

    def parse_json
      json = File.read(@input_file)
      @object = JSON.parse(json).sort_with_keys
    end

    def write_javascript_file
      file_path = File.join(@output_directory, "#{@locale}/translations.js")
      puts "Generating #{file_path}"
      FileUtils.mkdir_p(File.dirname(file_path))

      javascript_object = JSON.pretty_generate(@blob)
      content = "export default #{javascript_object};\n"

      File.open(file_path, 'w+') do |file|
        file << content
      end
    end

    def build_blob
      @blob = Hash.recursive

      @object.each_pair do |key, value|
        parts = key.split('.')

        if parts.length == 1
          @blob[parts.first] = value
        else
          hash = @blob[parts.first]

          parts.each_with_index do |part, index|
            next if index.zero?

            if index + 1 < parts.length
              hash = hash[part]
            else
              hash[part] = value
            end
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
aigu-1.2 lib/aigu/ember_importer.rb
aigu-1.1.1 lib/aigu/ember_importer.rb
aigu-1.1 lib/aigu/ember_importer.rb
aigu-1.0.3 lib/aigu/ember_importer.rb
aigu-1.0.2 lib/aigu/ember_importer.rb
aigu-1.0.1 lib/aigu/ember_importer.rb
aigu-1.0 lib/aigu/ember_importer.rb
aigu-0.7 lib/aigu/ember_importer.rb
aigu-0.6.1 lib/aigu/ember_importer.rb
aigu-0.6 lib/aigu/ember_importer.rb