apfel 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +29 -0
- data/Gemfile.lock +15 -15
- data/Rakefile +0 -5
- data/lib/apfel.rb +1 -1
- data/lib/apfel/reader.rb +7 -5
- data/lib/apfel/version.rb +1 -1
- data/spec/apfel_spec.rb +134 -4
- data/spec/fixtures/ascii.strings +9 -0
- data/spec/fixtures/utf8.strings +8 -0
- data/spec/parsed_dot_strings_spec.rb +1 -1
- data/spec/reader_spec.rb +2 -2
- data/spec/spec_helper.rb +6 -5
- metadata +10 -5
data/.gitignore
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
vendor
|
10
|
+
coverage
|
11
|
+
doc/
|
12
|
+
lib/bundler/man
|
13
|
+
pkg
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
19
|
+
|
20
|
+
# JetBrains
|
21
|
+
.idea
|
22
|
+
|
23
|
+
# mac
|
24
|
+
.DS_Store
|
25
|
+
__MACOSX
|
26
|
+
|
27
|
+
# emacs turds
|
28
|
+
(.*/)?\#[^/]*\#$
|
29
|
+
|
data/Gemfile.lock
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
apfel (0.0.
|
4
|
+
apfel (0.0.5)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
coderay (1.0.
|
10
|
-
diff-lcs (1.
|
9
|
+
coderay (1.0.9)
|
10
|
+
diff-lcs (1.2.2)
|
11
11
|
method_source (0.8.1)
|
12
|
-
pry (0.9.
|
12
|
+
pry (0.9.12)
|
13
13
|
coderay (~> 1.0.5)
|
14
14
|
method_source (~> 0.8)
|
15
|
-
slop (~> 3.
|
16
|
-
rake (0.
|
17
|
-
rspec (2.
|
18
|
-
rspec-core (~> 2.
|
19
|
-
rspec-expectations (~> 2.
|
20
|
-
rspec-mocks (~> 2.
|
21
|
-
rspec-core (2.
|
22
|
-
rspec-expectations (2.
|
23
|
-
diff-lcs (
|
24
|
-
rspec-mocks (2.
|
25
|
-
slop (3.
|
15
|
+
slop (~> 3.4)
|
16
|
+
rake (10.0.4)
|
17
|
+
rspec (2.13.0)
|
18
|
+
rspec-core (~> 2.13.0)
|
19
|
+
rspec-expectations (~> 2.13.0)
|
20
|
+
rspec-mocks (~> 2.13.0)
|
21
|
+
rspec-core (2.13.1)
|
22
|
+
rspec-expectations (2.13.0)
|
23
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
24
|
+
rspec-mocks (2.13.1)
|
25
|
+
slop (3.4.4)
|
26
26
|
|
27
27
|
PLATFORMS
|
28
28
|
ruby
|
data/Rakefile
CHANGED
@@ -6,11 +6,6 @@ rescue LoadError
|
|
6
6
|
end
|
7
7
|
Bundler::GemHelper.install_tasks
|
8
8
|
|
9
|
-
require 'rspec/core/rake_task'
|
10
|
-
RSpec::Core::RakeTask.new do |t|
|
11
|
-
t.rspec_opts = ["--color", '--order rand']
|
12
|
-
end
|
13
|
-
|
14
9
|
desc "Run all tests and documentation checks"
|
15
10
|
task :qa => [:spec]
|
16
11
|
|
data/lib/apfel.rb
CHANGED
data/lib/apfel/reader.rb
CHANGED
@@ -4,14 +4,16 @@ module Apfel
|
|
4
4
|
# Reads in a file and returns an array consisting of each line of input
|
5
5
|
# cleaned of new line characters
|
6
6
|
def self.read(file)
|
7
|
-
File.open(file,
|
8
|
-
|
9
|
-
|
10
|
-
content.
|
7
|
+
File.open(file, 'r') do |f|
|
8
|
+
content = f.read.force_encoding('UTF-8')
|
9
|
+
# remove the BOM that can be found at char 0 in UTF8 strings files
|
10
|
+
if content.chars.first == "\xEF\xBB\xBF".force_encoding('UTF-8')
|
11
|
+
content.slice!(0)
|
12
|
+
end
|
13
|
+
content.each_line.inject([]) do |content_array, line|
|
11
14
|
line.gsub!("\n","")
|
12
15
|
content_array.push(line)
|
13
16
|
end
|
14
|
-
content_array
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
data/lib/apfel/version.rb
CHANGED
data/spec/apfel_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require 'apfel/parsed_dot_strings'
|
|
4
4
|
|
5
5
|
describe Apfel do
|
6
6
|
describe '::parse_file' do
|
7
|
-
context 'when given
|
7
|
+
context 'when given an ASCII DotStrings file'do
|
8
8
|
|
9
9
|
let(:parsed_file) do
|
10
10
|
Apfel.parse(valid_file)
|
@@ -13,16 +13,43 @@ describe Apfel do
|
|
13
13
|
it 'returns a ParsedDotStrings object' do
|
14
14
|
parsed_file.should be_a(Apfel::ParsedDotStrings)
|
15
15
|
end
|
16
|
+
|
17
|
+
it 'should have the correct keys' do
|
18
|
+
parsed_file.keys.should include 'key_number_one'
|
19
|
+
parsed_file.keys.should include 'key_number_two'
|
20
|
+
parsed_file.keys.should include 'key_number_three'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should have the correct values' do
|
24
|
+
parsed_file.values.should include 'value number one'
|
25
|
+
parsed_file.values.should include 'value number two'
|
26
|
+
parsed_file.values.should include 'value number three'
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'should have the correct comments' do
|
30
|
+
it 'should have the correct comment for first' do
|
31
|
+
parsed_file.comments(with_keys: false).should include 'This is the first comment'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should have the correct comment for second' do
|
35
|
+
parsed_file.comments['key_number_two'].should == 'This is a multiline comment'
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
it 'should have the correct comment for third' do
|
40
|
+
parsed_file.comments(with_keys: false).should include 'This is comment number 3'
|
41
|
+
end
|
42
|
+
end
|
16
43
|
end
|
17
44
|
|
18
45
|
context 'when given an invalid strings file' do
|
19
46
|
context 'missing a semicolon' do
|
20
47
|
|
21
48
|
let(:invalid_file_semicolon) do
|
22
|
-
create_temp_file( <<-EOS
|
49
|
+
create_temp_file('ascii', <<-EOS
|
23
50
|
/* This is the first comment */
|
24
51
|
"key_number_one" = "value number one"
|
25
|
-
|
52
|
+
EOS
|
26
53
|
)
|
27
54
|
end
|
28
55
|
|
@@ -35,7 +62,7 @@ describe Apfel do
|
|
35
62
|
|
36
63
|
context 'not closed comment' do
|
37
64
|
let(:invalid_file_comment) do
|
38
|
-
create_temp_file(<<-EOS
|
65
|
+
create_temp_file('ascii', <<-EOS
|
39
66
|
/* This is the first comment
|
40
67
|
"key_number_one" = "value number one";
|
41
68
|
|
@@ -54,5 +81,108 @@ multiline comment */
|
|
54
81
|
end
|
55
82
|
end
|
56
83
|
end
|
84
|
+
|
85
|
+
context 'when given a file in us-ascii encoding'do
|
86
|
+
|
87
|
+
let(:ascii_file) do
|
88
|
+
'./spec/fixtures/ascii.strings'
|
89
|
+
end
|
90
|
+
it 'the file should be ascii' do
|
91
|
+
|
92
|
+
# use unix file instead of File.open because
|
93
|
+
# File.open(file, 'r') <==> File.open(file, 'r:UTF-8')
|
94
|
+
file_info = `file -I #{ascii_file}`
|
95
|
+
file_info.should include('charset=us-ascii')
|
96
|
+
end
|
97
|
+
|
98
|
+
let(:parsed_file) do
|
99
|
+
Apfel.parse(ascii_file)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'returns a ParsedDotStrings object' do
|
103
|
+
parsed_file.should be_a(Apfel::ParsedDotStrings)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'should have the correct keys' do
|
107
|
+
parsed_file.keys[0].should == 'avoided social event'
|
108
|
+
parsed_file.keys[1].should == 'binged'
|
109
|
+
parsed_file.keys[2].should == 'called a friend'
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'should have the correct values' do
|
113
|
+
parsed_file.values[0].should == 'vermieden soziales Ereignis'
|
114
|
+
parsed_file.values[1].should == 'gegessen exzessiv'
|
115
|
+
parsed_file.values[2].should == 'Telefon ein Freund'
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'should have the correct comments' do
|
119
|
+
it 'should have the correct comment for avoided social event' do
|
120
|
+
parsed_file.comments['avoided social event'].should == 'like a hack-a-thon'
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'should have the correct comment for binged' do
|
124
|
+
parsed_file.comments['binged'].should == 'one too many lieb kochen'
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should have the correct comment for called a friend' do
|
128
|
+
parsed_file.comments['called a friend'].should == 'or maybe you just skyped'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'when given a UTF8 .strings file'do
|
134
|
+
|
135
|
+
let(:utf8_file) do
|
136
|
+
'./spec/fixtures/utf8.strings'
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'the file should be utf-8' do
|
140
|
+
# use unix file instead of File.open because
|
141
|
+
# File.open(file, 'r') <==> File.open(file, 'r:UTF-8')
|
142
|
+
file_info = `file -I #{utf8_file}`
|
143
|
+
file_info.should include('charset=utf-8')
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'the file should have the BOM as the 0 char' do
|
147
|
+
File.open(utf8_file, 'r') do |f|
|
148
|
+
content = f.read.force_encoding('UTF-8')
|
149
|
+
content.chars.first == "\xEF\xBB\xBF".force_encoding('UTF-8')
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
let(:parsed_file) do
|
154
|
+
Apfel.parse(utf8_file)
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'returns a ParsedDotStrings object' do
|
158
|
+
parsed_file.should be_a(Apfel::ParsedDotStrings)
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'should have the correct keys' do
|
162
|
+
parsed_file.keys[0].should == 'anger'
|
163
|
+
parsed_file.keys[1].should == 'anxiety'
|
164
|
+
parsed_file.keys[2].should == 'boredom'
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'should have the correct values' do
|
168
|
+
parsed_file.values[0].should == 'Zorn'
|
169
|
+
parsed_file.values[1].should == 'Sorge'
|
170
|
+
parsed_file.values[2].should == 'Langeweile'
|
171
|
+
end
|
172
|
+
|
173
|
+
describe 'should have the correct comments' do
|
174
|
+
it 'should have the correct comment for anger' do
|
175
|
+
parsed_file.comments['anger'].should == 'when the toast falls butter-side down'
|
176
|
+
end
|
177
|
+
|
178
|
+
it 'should have the correct comment for anxiety' do
|
179
|
+
parsed_file.comments['anxiety'].should == 'when you realize you left the oven on'
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'should have the correct comment for boredom' do
|
183
|
+
parsed_file.comments['boredom'].should == 'ennui'
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
57
187
|
end
|
58
188
|
end
|
data/spec/reader_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'reader'
|
2
|
+
require 'apfel/reader'
|
3
3
|
|
4
4
|
module Apfel
|
5
5
|
describe Reader do
|
6
6
|
describe '#read' do
|
7
7
|
let(:temp_file) do
|
8
|
-
create_temp_file(<<-EOS
|
8
|
+
create_temp_file('ascii', <<-EOS
|
9
9
|
This is a file with some lines.
|
10
10
|
Roses are red, violets are blue.
|
11
11
|
This text is really boring,
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
require 'tempfile'
|
2
2
|
require 'json'
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
def create_temp_file(encoding, string)
|
5
|
+
temp_file = Tempfile.new([encoding, 'temp'])
|
5
6
|
temp_file << string
|
6
7
|
temp_file.flush
|
7
8
|
end
|
8
9
|
|
9
|
-
def valid_file
|
10
|
-
create_temp_file(<<-EOS
|
10
|
+
def valid_file(encoding='ascii')
|
11
|
+
create_temp_file(encoding, <<-EOS
|
11
12
|
/* This is the first comment */
|
12
13
|
"key_number_one" = "value number one";
|
13
14
|
|
@@ -18,6 +19,6 @@ multiline comment */
|
|
18
19
|
"key_number_two" = "value number two";
|
19
20
|
/* This is comment number 3 */
|
20
21
|
"key_number_three" = " value number three ";
|
21
|
-
|
22
|
+
EOS
|
22
23
|
)
|
23
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apfel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -66,6 +66,7 @@ executables: []
|
|
66
66
|
extensions: []
|
67
67
|
extra_rdoc_files: []
|
68
68
|
files:
|
69
|
+
- .gitignore
|
69
70
|
- Gemfile
|
70
71
|
- Gemfile.lock
|
71
72
|
- LICENSE
|
@@ -80,6 +81,8 @@ files:
|
|
80
81
|
- lib/apfel/reader.rb
|
81
82
|
- lib/apfel/version.rb
|
82
83
|
- spec/apfel_spec.rb
|
84
|
+
- spec/fixtures/ascii.strings
|
85
|
+
- spec/fixtures/utf8.strings
|
83
86
|
- spec/parsed_dot_strings_spec.rb
|
84
87
|
- spec/reader_spec.rb
|
85
88
|
- spec/spec_helper.rb
|
@@ -97,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
100
|
version: '0'
|
98
101
|
segments:
|
99
102
|
- 0
|
100
|
-
hash:
|
103
|
+
hash: 2059895837407952673
|
101
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
105
|
none: false
|
103
106
|
requirements:
|
@@ -106,15 +109,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
109
|
version: '0'
|
107
110
|
segments:
|
108
111
|
- 0
|
109
|
-
hash:
|
112
|
+
hash: 2059895837407952673
|
110
113
|
requirements: []
|
111
114
|
rubyforge_project: apfel
|
112
|
-
rubygems_version: 1.8.
|
115
|
+
rubygems_version: 1.8.23
|
113
116
|
signing_key:
|
114
117
|
specification_version: 3
|
115
118
|
summary: Simple parser for DotStrings Files
|
116
119
|
test_files:
|
117
120
|
- spec/apfel_spec.rb
|
121
|
+
- spec/fixtures/ascii.strings
|
122
|
+
- spec/fixtures/utf8.strings
|
118
123
|
- spec/parsed_dot_strings_spec.rb
|
119
124
|
- spec/reader_spec.rb
|
120
125
|
- spec/spec_helper.rb
|