babelish 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.travis.yml +2 -0
- data/README.md +3 -0
- data/babelish.gemspec +2 -3
- data/lib/babelish/android2csv.rb +10 -7
- data/lib/babelish/csv2android.rb +13 -5
- data/lib/babelish/version.rb +1 -1
- data/test/babelish/test_android2csv.rb +31 -13
- data/test/babelish/test_bins.rb +3 -3
- data/test/babelish/test_csv2android.rb +15 -4
- data/test/babelish/test_csv2base.rb +27 -30
- data/test/babelish/test_json2csv.rb +9 -10
- data/test/babelish/test_php2csv.rb +9 -10
- data/test/babelish/test_strings2csv.rb +11 -12
- data/test/data/android-en.xml +1 -0
- data/test/data/android-fr.xml +1 -0
- data/test/data/android.xml +1 -0
- data/test/data/android_special_chars.csv +8 -0
- data/test/data/android_special_chars.xml +12 -0
- data/test/data/android_special_chars_test_result.xml +10 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmI5Mjk2MTU1YmY5NTMyY2Q1ZjAxNzQxMDQ3ZWEzZTVlNTcxZTliMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
M2MyNjU2ZmIxYzNjZWI2OWJhOTAxNzhhNDczYmE5ZDJlZjA1YTE0Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2FiOTQ3MTZlZDYxNzkyNWViNGNkNGYyNDg3ZDZmZWQxOTJkYzliM2M5ZDA0
|
10
|
+
NTAxMThkZGZhM2U2MWY5OTJiNWIzYmI5Nzk1N2ZhMGQzOWZkYWM3Mjc2YzYy
|
11
|
+
ZjI1NjY2MjEzZGI5ZTg1N2ZhZjU2ODIyNjExMDU0ZDQ5Yjk0ZjE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDJhMWQxY2Q2ZTA0MTVkZmJiYTVjMzUyNjBlNTVhNGViMTFiNTI5ZDE1Y2Vm
|
14
|
+
NTkyNGU5YTE5Mjk4NjI4M2I5ZjMzNTY4ZDNkM2E2NmU1YmQ5NWQxNGQ3OWFh
|
15
|
+
NzY2OGVkYjhhZjczOTUyYWY1ZTEwNTM2NmU0ZGY3NWM4MjY0Njc=
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
[![Code Climate](https://codeclimate.com/github/netbe/Babelish.png)](https://codeclimate.com/github/netbe/Babelish)[![Coverage Status](https://coveralls.io/repos/netbe/Babelish/badge.png)](https://coveralls.io/r/netbe/Babelish)
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/babelish.svg)](http://badge.fury.io/rb/babelish)
|
4
4
|
|
5
|
+
|
5
6
|
**Babelish : Chaotically confused, like Babel**
|
6
7
|
|
7
8
|
Originally created to deal with localizedStrings files (aka *CSV-to-iOS-Localizable.strings-converter*), this command tool now converts a csv file of translations into the below file formats and vice-versa:
|
@@ -18,6 +19,8 @@ It can also fetch the csv file from GoogleDrive.
|
|
18
19
|
|
19
20
|
Requires Ruby 1.9.3 or above.
|
20
21
|
|
22
|
+
Or download [Latest Release](https://github.com/netbe/Babelish/releases/latest).
|
23
|
+
|
21
24
|
# Usage
|
22
25
|
|
23
26
|
```
|
data/babelish.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'babelish/version'
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'babelish'
|
8
8
|
s.version = Babelish::VERSION
|
9
|
-
s.date = '2015-
|
9
|
+
s.date = '2015-11-09'
|
10
10
|
s.summary = "CSV converter for localization files"
|
11
11
|
s.description = "This set of commands converts a CSV file to the following formats:
|
12
12
|
- .strings (iOS)
|
@@ -21,11 +21,10 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency "thor"
|
22
22
|
|
23
23
|
s.add_dependency "google_drive", "~> 1.0.1"
|
24
|
+
s.add_dependency "nokogiri"
|
24
25
|
# google_drive dependency to ask for mail and password
|
25
26
|
s.add_dependency "highline"
|
26
27
|
|
27
|
-
# android support
|
28
|
-
s.add_dependency "xml-simple"
|
29
28
|
# json support
|
30
29
|
s.add_dependency "json"
|
31
30
|
|
data/lib/babelish/android2csv.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Babelish
|
2
|
-
require
|
2
|
+
require "nokogiri"
|
3
3
|
class Android2CSV < Base2Csv
|
4
4
|
|
5
5
|
def initialize(args = {:filenames => []})
|
@@ -8,16 +8,19 @@ module Babelish
|
|
8
8
|
|
9
9
|
def load_strings(strings_filename)
|
10
10
|
strings = {}
|
11
|
-
|
11
|
+
xml_file = File.open(strings_filename)
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
parser = Nokogiri::XML(xml_file) do |config|
|
14
|
+
config.strict.noent
|
15
|
+
end
|
16
|
+
parser.xpath("//string").each do |node|
|
17
|
+
if !node.nil? && !node["name"].nil?
|
18
|
+
strings.merge!(node["name"] => node.inner_html)
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
22
|
+
xml_file.close
|
23
|
+
|
21
24
|
[strings, {}]
|
22
25
|
end
|
23
26
|
|
data/lib/babelish/csv2android.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Babelish
|
2
2
|
class CSV2Android < Csv2Base
|
3
|
-
require 'xmlsimple'
|
4
|
-
|
5
3
|
attr_accessor :file_path
|
6
4
|
|
7
5
|
def initialize(filename, langs, args = {})
|
@@ -16,19 +14,29 @@ module Babelish
|
|
16
14
|
return filepath ? [filepath] : []
|
17
15
|
end
|
18
16
|
|
17
|
+
def process_value(row_value, default_value)
|
18
|
+
value = super(row_value, default_value)
|
19
|
+
# if the value begins and ends with a quote we must leave them unescapted
|
20
|
+
if value.size > 4 && value[0, 2] == "\\\"" && value[value.size - 2, value.size] == "\\\""
|
21
|
+
value[0, 2] = "\""
|
22
|
+
value[value.size - 2, value.size] = "\""
|
23
|
+
end
|
24
|
+
value.to_utf8
|
25
|
+
end
|
26
|
+
|
19
27
|
def get_row_format(row_key, row_value, comment = nil, indentation = 0)
|
20
|
-
|
28
|
+
"\t<string name=\"#{row_key}\">#{row_value}</string>\n"
|
21
29
|
end
|
22
30
|
|
23
31
|
def hash_to_output(content = {})
|
24
32
|
output = ''
|
25
33
|
if content && content.size > 0
|
26
|
-
output += "<?xml version=\"1.0\" encoding=\"
|
34
|
+
output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
|
27
35
|
output += "<resources>\n"
|
28
36
|
content.each do |key, value|
|
29
37
|
output += get_row_format(key, value)
|
30
38
|
end
|
31
|
-
output += "</resources
|
39
|
+
output += "</resources>\n"
|
32
40
|
end
|
33
41
|
return output
|
34
42
|
end
|
data/lib/babelish/version.rb
CHANGED
@@ -15,21 +15,39 @@ class TestAndroid2CSV < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
def test_initialize
|
17
17
|
csv_filename = "file.csv"
|
18
|
-
filenames = %w{
|
19
|
-
headers = %w{
|
20
|
-
converter = Babelish::Android2CSV.new(
|
18
|
+
filenames = %w{french.strings english.strings}
|
19
|
+
headers = %w{constants french english}
|
20
|
+
converter = Babelish::Android2CSV.new(
|
21
21
|
:csv_filename => csv_filename,
|
22
22
|
:headers => headers,
|
23
|
-
:filenames => filenames
|
24
|
-
})
|
23
|
+
:filenames => filenames)
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
assert_equal csv_filename, converter.csv_filename
|
26
|
+
assert_equal headers, converter.headers
|
27
|
+
assert_equal filenames, converter.filenames
|
28
|
+
end
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
def test_initialize_with_default_values
|
31
|
+
converter = Babelish::Android2CSV.new
|
32
|
+
assert_not_nil converter.csv_filename
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_special_chars
|
36
|
+
csv_filename = "./android_special_chars_output.csv"
|
37
|
+
filenames = "test/data/android_special_chars.xml"
|
38
|
+
headers = %w{variables german}
|
39
|
+
|
40
|
+
converter = Babelish::Android2CSV.new(
|
41
|
+
:csv_filename => csv_filename,
|
42
|
+
:headers => headers,
|
43
|
+
:filenames => [filenames])
|
44
|
+
|
45
|
+
converter.convert
|
46
|
+
|
47
|
+
assert File.exist?(converter.csv_filename)
|
48
|
+
assert_equal File.read("test/data/android_special_chars.csv"), File.read(csv_filename)
|
49
|
+
|
50
|
+
# clean up
|
51
|
+
system("rm -rf ./" + csv_filename)
|
35
52
|
end
|
53
|
+
end
|
data/test/babelish/test_bins.rb
CHANGED
@@ -6,7 +6,7 @@ class TestBins < Test::Unit::TestCase
|
|
6
6
|
assert_nothing_raised do
|
7
7
|
system("./bin/babelish csv2strings --fetch --filename my_strings --langs English:en")
|
8
8
|
end
|
9
|
-
assert_equal $?.exitstatus
|
9
|
+
assert_equal 0, $?.exitstatus
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_csv2strings_with_google_doc_missing_langs
|
@@ -14,7 +14,7 @@ class TestBins < Test::Unit::TestCase
|
|
14
14
|
assert_nothing_raised do
|
15
15
|
system("./bin/babelish csv2strings --fetch --filename my_strings")
|
16
16
|
end
|
17
|
-
assert_equal $?.exitstatus
|
17
|
+
assert_equal 1, $?.exitstatus
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_csv2strings_with_config_file
|
@@ -23,7 +23,7 @@ class TestBins < Test::Unit::TestCase
|
|
23
23
|
assert_nothing_raised NameError do
|
24
24
|
system("./bin/babelish csv2strings")
|
25
25
|
end
|
26
|
-
assert_equal $?.exitstatus
|
26
|
+
assert_equal 0, $?.exitstatus
|
27
27
|
end
|
28
28
|
|
29
29
|
def teardown
|
@@ -5,12 +5,23 @@ class TestCSV2Android < Test::Unit::TestCase
|
|
5
5
|
csv_file = "test/data/test_data.csv"
|
6
6
|
converter = Babelish::CSV2Android.new(csv_file, 'English' => "en")
|
7
7
|
converter.convert
|
8
|
-
assert File.
|
8
|
+
assert File.exist?("values-en/strings.xml"), "the ouptut file does not exist"
|
9
9
|
|
10
|
-
#clean up
|
10
|
+
# clean up
|
11
11
|
system("rm -rf ./values-en")
|
12
12
|
end
|
13
13
|
|
14
|
+
def test_converting_csv_with_special_chars
|
15
|
+
csv_file = "test/data/android_special_chars.csv"
|
16
|
+
converter = Babelish::CSV2Android.new(csv_file, "german" => "de")
|
17
|
+
converter.convert
|
18
|
+
assert File.exist?("values-de/strings.xml"), "the ouptut file does not exist"
|
19
|
+
assert_equal File.read("test/data/android_special_chars_test_result.xml"), File.read("values-de/strings.xml")
|
20
|
+
|
21
|
+
# clean up
|
22
|
+
system("rm -rf ./values-de")
|
23
|
+
end
|
24
|
+
|
14
25
|
def test_converting_csv_to_dotstrings_one_output_option
|
15
26
|
csv_file = "test/data/test_data.csv"
|
16
27
|
single_file = 'myApp.xml'
|
@@ -19,9 +30,9 @@ class TestCSV2Android < Test::Unit::TestCase
|
|
19
30
|
:output_basename => 'myApp',
|
20
31
|
:ignore_lang_path => true)
|
21
32
|
converter.convert
|
22
|
-
assert File.
|
33
|
+
assert File.exist?(single_file), "the ouptut file does not exist"
|
23
34
|
|
24
|
-
#clean up
|
35
|
+
# clean up
|
25
36
|
system("rm -rf ./" + single_file)
|
26
37
|
end
|
27
38
|
end
|
@@ -9,39 +9,36 @@ class TestCsv2Base < Test::Unit::TestCase
|
|
9
9
|
converter = Babelish::Csv2Base.new(csv_filename, {"English" => ["en"]}, {
|
10
10
|
:excluded_states => excluded_states,
|
11
11
|
:state_column => state_column,
|
12
|
-
:keys_column => keys_column
|
13
|
-
})
|
12
|
+
:keys_column => keys_column })
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
assert_equal csv_filename, converter.csv_filename
|
15
|
+
assert_equal excluded_states, converter.excluded_states
|
16
|
+
assert_equal state_column, converter.state_column
|
17
|
+
assert_equal keys_column, converter.keys_column
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
def test_initialize_with_custom_separator
|
27
|
-
converter = Babelish::Csv2Base.new("file.csv", {"English" => ["en"]}, {
|
28
|
-
:csv_separator => ";"
|
29
|
-
})
|
30
|
-
assert_not_nil converter.csv_filename
|
31
|
-
end
|
20
|
+
def test_initialize_with_default_values
|
21
|
+
converter = Babelish::Csv2Base.new("file.csv", "English" => ["en"])
|
22
|
+
assert_not_nil converter.csv_filename
|
23
|
+
end
|
32
24
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
def test_initialize_with_custom_separator
|
26
|
+
converter = Babelish::Csv2Base.new("file.csv", { "English" => ["en"] }, { :csv_separator => ";" })
|
27
|
+
assert_not_nil converter.csv_filename
|
28
|
+
end
|
37
29
|
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
def test_create_file_from_path
|
31
|
+
test_file = "test_file.txt"
|
32
|
+
Babelish::Csv2Base.new("file.csv", "English" => ["en"]).create_file_from_path test_file
|
33
|
+
assert File.exist?(test_file)
|
34
|
+
|
35
|
+
# clean up
|
36
|
+
system("rm -rf ./" + test_file)
|
37
|
+
end
|
41
38
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
39
|
+
def test_get_row_format
|
40
|
+
expected_output = "\"test_key\" = \"test_value\""
|
41
|
+
output = Babelish::Csv2Base.new("file.csv", "English" => ["en"]).get_row_format("test_key", "test_value")
|
42
|
+
assert_equal expected_output, output
|
47
43
|
end
|
44
|
+
end
|
@@ -20,16 +20,15 @@ class JSON2CSVTest < Test::Unit::TestCase
|
|
20
20
|
converter = Babelish::JSON2CSV.new({
|
21
21
|
:csv_filename => csv_filename,
|
22
22
|
:headers => headers,
|
23
|
-
:filenames => filenames
|
24
|
-
})
|
23
|
+
:filenames => filenames })
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
assert_equal csv_filename, converter.csv_filename
|
26
|
+
assert_equal headers, converter.headers
|
27
|
+
assert_equal filenames, converter.filenames
|
28
|
+
end
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
30
|
+
def test_initialize_with_default_values
|
31
|
+
converter = Babelish::JSON2CSV.new
|
32
|
+
assert_not_nil converter.csv_filename
|
35
33
|
end
|
34
|
+
end
|
@@ -59,16 +59,15 @@ class TestPhp2CSV < Test::Unit::TestCase
|
|
59
59
|
converter = Babelish::Php2CSV.new({
|
60
60
|
:csv_filename => csv_filename,
|
61
61
|
:headers => headers,
|
62
|
-
:filenames => filenames
|
63
|
-
})
|
62
|
+
:filenames => filenames })
|
64
63
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
64
|
+
assert_equal csv_filename, converter.csv_filename
|
65
|
+
assert_equal headers, converter.headers
|
66
|
+
assert_equal filenames, converter.filenames
|
67
|
+
end
|
69
68
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
69
|
+
def test_initialize_with_default_values
|
70
|
+
converter = Babelish::Php2CSV.new
|
71
|
+
assert_not_nil converter.csv_filename
|
74
72
|
end
|
73
|
+
end
|
@@ -8,7 +8,7 @@ class TestStrings2CSV < Test::Unit::TestCase
|
|
8
8
|
expected_output = ["MY_CONSTANT","This is ok"]
|
9
9
|
|
10
10
|
output = Babelish::Strings2CSV.new.parse_dotstrings_line input
|
11
|
-
assert_equal expected_output, output
|
11
|
+
assert_equal expected_output, output
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_parse_dotstrings_line_with_single_quote
|
@@ -68,13 +68,13 @@ class TestStrings2CSV < Test::Unit::TestCase
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_load_strings_with_spaces
|
71
|
-
expected_output = [{"name"=>"definition",
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
},{}]
|
71
|
+
expected_output = [{ "name" => "definition",
|
72
|
+
"name1" => "definition1",
|
73
|
+
"name2" => "definition2",
|
74
|
+
"name3" => "definition3",
|
75
|
+
"name4" => "definition4",
|
76
|
+
"this is a name" => "a definition"
|
77
|
+
}, {}]
|
78
78
|
output = Babelish::Strings2CSV.new.load_strings "test/data/test_space.strings"
|
79
79
|
assert_equal expected_output, output
|
80
80
|
end
|
@@ -127,13 +127,12 @@ class TestStrings2CSV < Test::Unit::TestCase
|
|
127
127
|
|
128
128
|
def test_initialize
|
129
129
|
csv_filename = "file.csv"
|
130
|
-
filenames = %w{
|
131
|
-
headers = %w{
|
130
|
+
filenames = %w{french.strings english.strings}
|
131
|
+
headers = %w{constants french english}
|
132
132
|
converter = Babelish::Strings2CSV.new({
|
133
133
|
:csv_filename => csv_filename,
|
134
134
|
:headers => headers,
|
135
|
-
:filenames => filenames
|
136
|
-
})
|
135
|
+
:filenames => filenames })
|
137
136
|
|
138
137
|
assert_equal csv_filename, converter.csv_filename
|
139
138
|
assert_equal headers, converter.headers
|
data/test/data/android-en.xml
CHANGED
data/test/data/android-fr.xml
CHANGED
data/test/data/android.xml
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
variables,german
|
2
|
+
good_example_1,This\'ll work
|
3
|
+
good_example_2,"This is a \""good string\""."
|
4
|
+
good_example_3,"""This'll also work"""
|
5
|
+
welcome_messages_1,"Hello, %1$s! You have %2$d new messages."
|
6
|
+
welcome_messages_2,"Hello, %1$s! You have <b>%2$d new messages</b>."
|
7
|
+
ANOTHER_STRING,"text <b>with</b> html and \' special # chars ` ´ !""§$%/()==?{[]}"
|
8
|
+
title,"Title of <a href=""asd"">File</a>"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<resources>
|
3
|
+
|
4
|
+
<string name="good_example_1">This\'ll work</string>
|
5
|
+
<string name="good_example_2">This is a \"good string\".</string>
|
6
|
+
<string name="good_example_3">"This'll also work"</string>
|
7
|
+
<string name="welcome_messages_1">Hello, %1$s! You have %2$d new messages.</string>
|
8
|
+
<string name="welcome_messages_2">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
|
9
|
+
<string name="ANOTHER_STRING">text <b>with</b> html and \' special # chars ` ´ !"§$%/()==?{[]}</string>
|
10
|
+
<string name="title">Title of <a href="asd">File</a></string>
|
11
|
+
|
12
|
+
</resources>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<resources>
|
3
|
+
<string name="good_example_1">This\'ll work</string>
|
4
|
+
<string name="good_example_2">This is a \"good string\".</string>
|
5
|
+
<string name="good_example_3">"This'll also work"</string>
|
6
|
+
<string name="welcome_messages_1">Hello, %1$s! You have %2$d new messages.</string>
|
7
|
+
<string name="welcome_messages_2">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
|
8
|
+
<string name="ANOTHER_STRING">text <b>with</b> html and \' special # chars ` ´ !\"§$%/()==?{[]}</string>
|
9
|
+
<string name="title">Title of <a href=\"asd\">File</a></string>
|
10
|
+
</resources>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babelish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- François Benaiteau
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 1.0.1
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: nokogiri
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: highline
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ! '>='
|
@@ -194,6 +194,9 @@ files:
|
|
194
194
|
- test/data/android-en.xml
|
195
195
|
- test/data/android-fr.xml
|
196
196
|
- test/data/android.xml
|
197
|
+
- test/data/android_special_chars.csv
|
198
|
+
- test/data/android_special_chars.xml
|
199
|
+
- test/data/android_special_chars_test_result.xml
|
197
200
|
- test/data/genstrings.strings
|
198
201
|
- test/data/json.json
|
199
202
|
- test/data/php_lang.php
|