PoParser 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile +2 -2
- data/README.md +4 -3
- data/lib/poparser/parser.rb +1 -1
- data/lib/poparser/po.rb +4 -4
- data/lib/poparser/tokenizer.rb +1 -1
- data/lib/poparser/version.rb +1 -1
- data/poparser.gemspec +2 -2
- data/spec/poparser/fixtures/tokenizer_empty_line.po +8 -0
- data/spec/poparser/po_spec.rb +8 -3
- data/spec/poparser/tokenizer_spec.rb +7 -0
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b3b3b754a563da373fb40d8e901d4a4124eb0b2
|
4
|
+
data.tar.gz: 7eec9bfd122d8c8b8fcb00978b098a1d06d3c21f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20e9febb7b8c5318e571fd38c21763514ed1ad3d04876991c2f7953af0d25c315e576c3fc62e63b444bcb50c6af4c873217803dcb6ee432f21d0a602c18add67
|
7
|
+
data.tar.gz: a6bf0c4b73d1dfa215981ee77227e95d1786370e9c20996b13c4bd0602383575d9edf19f2ed89c837715e8f8a2ded95c326542c6d702c362492cb37b7a5ef218
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Add this line to your application's Gemfile:
|
|
15
15
|
|
16
16
|
And then execute:
|
17
17
|
|
18
|
-
$ bundle
|
18
|
+
$ bundle install
|
19
19
|
|
20
20
|
Or install it yourself as:
|
21
21
|
|
@@ -26,6 +26,7 @@ Or install it yourself as:
|
|
26
26
|
Working with the GEM is pretty easy:
|
27
27
|
|
28
28
|
```ruby
|
29
|
+
require 'poparser'
|
29
30
|
path = Pathname.new('example.po')
|
30
31
|
po = PoParser.parse(path)
|
31
32
|
=> <PoParser::Po, Translated: 68.1% Untranslated: 20.4% Fuzzy: 11.5%>
|
@@ -125,12 +126,12 @@ entry.plural?
|
|
125
126
|
#=> false
|
126
127
|
```
|
127
128
|
|
128
|
-
You can get or edit each
|
129
|
+
You can get or edit each property of the `Entry`:
|
129
130
|
|
130
131
|
```ruby
|
131
132
|
entry.msgid.to_s
|
132
133
|
#=> "This is an msgid that needs to get translated"
|
133
|
-
entry.translate
|
134
|
+
entry.translate("This entry is translated") # or `msgstr=` alias
|
134
135
|
entry.msgstr.to_s
|
135
136
|
#=> "This entry is translated"
|
136
137
|
```
|
data/lib/poparser/parser.rb
CHANGED
@@ -33,7 +33,7 @@ module PoParser
|
|
33
33
|
rule(:multiline) { str('"').present? >> msg_text_line.repeat.maybe }
|
34
34
|
rule(:msgid) { spaced('msgid') >> msg_text_line >> multiline.repeat }
|
35
35
|
rule(:msgid_plural) { spaced('msgid_plural') >> msg_text_line >> multiline.repeat }
|
36
|
-
|
36
|
+
|
37
37
|
rule(:msgstr) { spaced('msgstr') >> msg_text_line >> multiline.repeat }
|
38
38
|
rule(:msgstr_plural){ str('msgstr') >> bracketed(match["[0-9]"].as(:plural_id)) >> space? >> msg_text_line >> multiline.repeat }
|
39
39
|
rule(:msgctxt) { spaced('msgctxt') >> msg_text_line >> multiline.repeat }
|
data/lib/poparser/po.rb
CHANGED
@@ -107,13 +107,13 @@ module PoParser
|
|
107
107
|
# @return [Hash] a hash of translated, untranslated and fuzzy percentages
|
108
108
|
def stats
|
109
109
|
untranslated_size = untranslated.size
|
110
|
-
translated_size
|
111
|
-
fuzzy_size
|
110
|
+
translated_size = translated.size
|
111
|
+
fuzzy_size = fuzzy.size
|
112
112
|
|
113
113
|
{
|
114
|
-
translated:
|
114
|
+
translated: percentage(translated_size),
|
115
115
|
untranslated: percentage(untranslated_size),
|
116
|
-
fuzzy:
|
116
|
+
fuzzy: percentage(fuzzy_size)
|
117
117
|
}
|
118
118
|
end
|
119
119
|
|
data/lib/poparser/tokenizer.rb
CHANGED
data/lib/poparser/version.rb
CHANGED
data/poparser.gemspec
CHANGED
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_runtime_dependency "parslet", "~> 1.7"
|
23
23
|
|
24
24
|
# Development deps
|
25
|
-
spec.add_development_dependency "bundler", "
|
26
|
-
spec.add_development_dependency "rake", "
|
25
|
+
spec.add_development_dependency "bundler", ">= 0"
|
26
|
+
spec.add_development_dependency "rake", ">= 0"
|
27
27
|
end
|
data/spec/poparser/po_spec.rb
CHANGED
@@ -40,10 +40,15 @@ describe PoParser::Po do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'shows stats' do
|
43
|
-
entry2, entry3 = entry.dup, entry.dup
|
43
|
+
entry2, entry3, entry4 = entry.dup, entry.dup, entry.dup
|
44
44
|
[entry2, entry3].each { |en| en[:msgstr] = '' }
|
45
|
-
@po << [entry, entry2, entry3]
|
46
|
-
|
45
|
+
@po << [entry, entry2, entry3, entry4]
|
46
|
+
@po.entries.last.flag_as_fuzzy
|
47
|
+
result = @po.stats
|
48
|
+
|
49
|
+
expect(result[:translated]).to eq 25
|
50
|
+
expect(result[:untranslated]).to eq 50
|
51
|
+
expect(result[:fuzzy]).to eq 25
|
47
52
|
end
|
48
53
|
|
49
54
|
it 'shouldn\'t count cached entries' do
|
@@ -4,6 +4,7 @@ require "spec_helper.rb"
|
|
4
4
|
describe PoParser::Tokenizer do
|
5
5
|
let(:token) { PoParser::Tokenizer.new }
|
6
6
|
let(:po_file){ Pathname.new('spec/poparser/fixtures/tokenizer.po').realpath }
|
7
|
+
let(:po_file_empty_line){ Pathname.new('spec/poparser/fixtures/tokenizer_empty_line.po').realpath }
|
7
8
|
let(:result) { [{:refrence=>"templates:105", :msgid=>"Afrikaans", :msgstr=>"آفریقایی"}, {:flag=>"fuzzy", :msgid=>"Afrikaans", :msgstr=>"آفریقایی" }] }
|
8
9
|
|
9
10
|
it 'should be able to extracts entries' do
|
@@ -11,4 +12,10 @@ describe PoParser::Tokenizer do
|
|
11
12
|
token.extract_entries(po_file).to_h
|
12
13
|
).to eq(result)
|
13
14
|
end
|
15
|
+
|
16
|
+
it 'should gracefully handle empty lines at the beginning' do
|
17
|
+
expect(
|
18
|
+
token.extract_entries(po_file_empty_line).to_h
|
19
|
+
).to eq(result)
|
20
|
+
end
|
14
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: PoParser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arash Mousavi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parslet
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
description: A PO file parser, editor and generator. PO files are translation files
|
56
56
|
generated by GNU/Gettext tool.
|
57
57
|
email:
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- spec/poparser/fixtures/plural.po
|
90
90
|
- spec/poparser/fixtures/test.po
|
91
91
|
- spec/poparser/fixtures/tokenizer.po
|
92
|
+
- spec/poparser/fixtures/tokenizer_empty_line.po
|
92
93
|
- spec/poparser/header_spec.rb
|
93
94
|
- spec/poparser/message_spec.rb
|
94
95
|
- spec/poparser/parser_spec.rb
|
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
118
|
version: '0'
|
118
119
|
requirements: []
|
119
120
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.4
|
121
|
+
rubygems_version: 2.6.4
|
121
122
|
signing_key:
|
122
123
|
specification_version: 4
|
123
124
|
summary: A PO file parser, editor and generator.
|
@@ -130,6 +131,7 @@ test_files:
|
|
130
131
|
- spec/poparser/fixtures/plural.po
|
131
132
|
- spec/poparser/fixtures/test.po
|
132
133
|
- spec/poparser/fixtures/tokenizer.po
|
134
|
+
- spec/poparser/fixtures/tokenizer_empty_line.po
|
133
135
|
- spec/poparser/header_spec.rb
|
134
136
|
- spec/poparser/message_spec.rb
|
135
137
|
- spec/poparser/parser_spec.rb
|