aigu 0.5 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -7
- data/lib/aigu/ember_exporter.rb +3 -16
- data/lib/aigu/ember_importer.rb +12 -7
- data/lib/aigu/version.rb +1 -1
- data/spec/aigu/ember_exporter_spec.rb +35 -0
- data/spec/aigu/ember_importer_spec.rb +40 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fdb5bb14cd6a7eae3740682157c4b191a4cec7e
|
4
|
+
data.tar.gz: 12e0582f9321bae273c470f63d753cf5b4454ef5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6c9afb797fdd833f2ae97f922fe2a428b4187f6ebfd63ceae744bc5f3d0ba6dd26603f2fc7c7bd56596a3eaf273bfbaeab676299d7d5eddb8bbb5917dd58834
|
7
|
+
data.tar.gz: a44afd273329859bd8896affb29ac95560470dcc7a2c9c530bb5489d795b6cd82a885ad6da7df6d501e95ee0a9141a5c298c8dc87d63a27f198fbeb0a48c4a8b
|
data/README.md
CHANGED
@@ -44,13 +44,13 @@ $ aigu <export-command> --locale=fr --input-directory=config/locales --output-fi
|
|
44
44
|
| `output-file` | The path to the JSON file that will be written by `aigu` |
|
45
45
|
| `ignore` | The patterns `aigu` will use to skip ignored files (eg. `routes.yml`) |
|
46
46
|
|
47
|
-
| Command | File format
|
48
|
-
|
49
|
-
| `rails-export` | Rails YAML
|
50
|
-
| `android-export` | Android XML
|
51
|
-
| `core-export` | Java Enum Core
|
52
|
-
| `ios-export` | iOS strings & stringsdict
|
53
|
-
| `ember-export` | Ember.js JavaScript
|
47
|
+
| Command | File format |
|
48
|
+
|-------------------|----------------------------|
|
49
|
+
| `rails-export` | Rails YAML |
|
50
|
+
| `android-export` | Android XML |
|
51
|
+
| `core-export` | Java Enum Core |
|
52
|
+
| `ios-export` | iOS strings & stringsdict |
|
53
|
+
| `ember-export` | Ember.js JavaScript |
|
54
54
|
|
55
55
|
### Importing the JSON file from Accent
|
56
56
|
|
data/lib/aigu/ember_exporter.rb
CHANGED
@@ -14,28 +14,15 @@ module Aigu
|
|
14
14
|
else
|
15
15
|
puts "Processing #{filepath}"
|
16
16
|
|
17
|
-
content =
|
18
|
-
|
17
|
+
content = File.read(file).gsub(/^export default (.*);$/m, '\1')
|
18
|
+
content = JSON.parse(content)
|
19
19
|
content = flattenize_hash(content)
|
20
|
+
|
20
21
|
@output.merge! content
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
def run_javascript_script(file)
|
26
|
-
script = "require('babel/register')({stage: 0}); console.log(JSON.stringify(require('#{file}')))"
|
27
|
-
command = "node -e \"#{script}\" 2>/dev/null"
|
28
|
-
puts "Executing `#{command}`"
|
29
|
-
content = `#{command}`
|
30
|
-
|
31
|
-
if content.empty?
|
32
|
-
puts 'There was an error when executing the command. Please make sure `node` and `babel` are installed.'
|
33
|
-
exit 0
|
34
|
-
end
|
35
|
-
|
36
|
-
content
|
37
|
-
end
|
38
|
-
|
39
26
|
def write_json_file
|
40
27
|
file_path = @output_file
|
41
28
|
puts "Generating #{file_path}"
|
data/lib/aigu/ember_importer.rb
CHANGED
@@ -37,15 +37,20 @@ module Aigu
|
|
37
37
|
|
38
38
|
@object.each_pair do |key, value|
|
39
39
|
parts = key.split('.')
|
40
|
-
hash = @blob[parts.first]
|
41
40
|
|
42
|
-
parts.
|
43
|
-
|
41
|
+
if parts.length == 1
|
42
|
+
@blob[parts.first] = value
|
43
|
+
else
|
44
|
+
hash = @blob[parts.first]
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
parts.each_with_index do |part, index|
|
47
|
+
next if index.zero?
|
48
|
+
|
49
|
+
if index + 1 < parts.length
|
50
|
+
hash = hash[part]
|
51
|
+
else
|
52
|
+
hash[part] = value
|
53
|
+
end
|
49
54
|
end
|
50
55
|
end
|
51
56
|
end
|
data/lib/aigu/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Aigu::EmberExporter do
|
4
|
+
describe :flattenize_hash do
|
5
|
+
let(:exporter) { Aigu::EmberExporter.new }
|
6
|
+
|
7
|
+
let(:flattenized_content) { exporter.send(:flattenize_hash, content) }
|
8
|
+
|
9
|
+
let(:content) do
|
10
|
+
{
|
11
|
+
'foo' => {
|
12
|
+
'bar' => 'Bar',
|
13
|
+
'baz' => 'Baz',
|
14
|
+
'nested' => {
|
15
|
+
'one' => 'One',
|
16
|
+
'two' => 'Two'
|
17
|
+
}
|
18
|
+
},
|
19
|
+
'three' => 'Three'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:expected_content) do
|
24
|
+
{
|
25
|
+
'foo.bar' => 'Bar',
|
26
|
+
'foo.baz' => 'Baz',
|
27
|
+
'foo.nested.one' => 'One',
|
28
|
+
'foo.nested.two' => 'Two',
|
29
|
+
'three' => 'Three'
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
it { expect(flattenized_content).to eql expected_content }
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Aigu::EmberImporter do
|
4
|
+
describe :build_blob do
|
5
|
+
let(:importer) { Aigu::EmberImporter.new }
|
6
|
+
|
7
|
+
before do
|
8
|
+
importer.instance_variable_set(:@object, object)
|
9
|
+
importer.send(:build_blob)
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:blob) { importer.instance_variable_get(:@blob) }
|
13
|
+
|
14
|
+
let(:object) do
|
15
|
+
{
|
16
|
+
'foo.bar' => 'Bar',
|
17
|
+
'foo.baz' => 'Baz',
|
18
|
+
'foo.nested.one' => 'One',
|
19
|
+
'foo.nested.two' => 'Two',
|
20
|
+
'three' => 'Three'
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:expected_blob) do
|
25
|
+
{
|
26
|
+
'foo' => {
|
27
|
+
'bar' => 'Bar',
|
28
|
+
'baz' => 'Baz',
|
29
|
+
'nested' => {
|
30
|
+
'one' => 'One',
|
31
|
+
'two' => 'Two'
|
32
|
+
}
|
33
|
+
},
|
34
|
+
'three' => 'Three'
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
it { expect(blob).to eql expected_blob }
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aigu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -141,6 +141,8 @@ files:
|
|
141
141
|
- spec/aigu/android_importer_spec.rb
|
142
142
|
- spec/aigu/core_exporter_spec.rb
|
143
143
|
- spec/aigu/core_importer_spec.rb
|
144
|
+
- spec/aigu/ember_exporter_spec.rb
|
145
|
+
- spec/aigu/ember_importer_spec.rb
|
144
146
|
- spec/aigu/ios_exporter_spec.rb
|
145
147
|
- spec/aigu/ios_importer_spec.rb
|
146
148
|
- spec/aigu/rails_exporter_spec.rb
|
@@ -176,6 +178,8 @@ test_files:
|
|
176
178
|
- spec/aigu/android_importer_spec.rb
|
177
179
|
- spec/aigu/core_exporter_spec.rb
|
178
180
|
- spec/aigu/core_importer_spec.rb
|
181
|
+
- spec/aigu/ember_exporter_spec.rb
|
182
|
+
- spec/aigu/ember_importer_spec.rb
|
179
183
|
- spec/aigu/ios_exporter_spec.rb
|
180
184
|
- spec/aigu/ios_importer_spec.rb
|
181
185
|
- spec/aigu/rails_exporter_spec.rb
|