lib/aigu.rb in aigu-0.1 vs lib/aigu.rb in aigu-0.1.1
- old
+ new
@@ -5,81 +5,10 @@
require 'json'
require 'yaml'
require 'aigu/extensions/hash'
require 'aigu/cli'
+require 'aigu/importer'
+require 'aigu/exporter'
module Aigu
- PUBLIC_COMMANDS = %w(import export)
-
- def self.import(input_file: nil, output_directory: nil)
- puts "Generating YAML files in `#{output_directory}` based on Accent-generated `#{input_file}` file"
- puts '---'
- json = File.read(input_file)
- object = JSON.parse(json)
- 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
-
- 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
-
- puts '---'
- puts 'Done'
- end
-
- def self.export(output_file: nil, input_directory: nil)
- puts "Generating Accent JSON file `#{output_file}` based on YAML localization files in `#{input_directory}` directory"
- puts '---'
-
- output = {}
-
- Dir[File.join(input_directory, '**', '*.yml')].each do |file|
- content = YAML.load_file(file)
- base_key = file.gsub(input_directory, '').gsub(/^\/*/, '').gsub(/\.yml$/, '|')
-
- output.merge! flattenize_hash(content, base_key)
- end
-
- file_path = output_file
- puts "Generating #{file_path}"
- FileUtils.mkdir_p(File.dirname(file_path))
-
- File.open(file_path, 'w+') do |file|
- file << output.to_json
- end
-
- puts '---'
- puts 'Done'
- end
-
- def self.flattenize_hash(hash, base_key = '')
- if hash.is_a?(Hash)
- hash.reduce({}) do |memo, (key, value)|
- new_base_key = [base_key, key].join('.').sub('|.', '|')
- memo.merge! flattenize_hash(value, new_base_key)
- end
- else
- { base_key => hash }
- end
- end
end