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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 839ed2d8b43387b11ebee0094af10a6f6e164e51
4
- data.tar.gz: 2d1da0390af32f7b1ce6a0b21f78869d6b915013
3
+ metadata.gz: 9b3b3b754a563da373fb40d8e901d4a4124eb0b2
4
+ data.tar.gz: 7eec9bfd122d8c8b8fcb00978b098a1d06d3c21f
5
5
  SHA512:
6
- metadata.gz: 4205546fbc30d74e7a4091536a61f198d95c4f347d2166cff0a145475717789e1a79796542c457ece7eb945993d0fc4f88e48d1cf54fc8bc90cbcee61088b773
7
- data.tar.gz: 01c7dabb307b9eeba663a0a3ea884d6c01e18886e5d5304a0b6f0bca1c0e36fa127212e5091661de9ce2fc87527af90acade4952f5bdf08470ae926d7b82ceba
6
+ metadata.gz: 20e9febb7b8c5318e571fd38c21763514ed1ad3d04876991c2f7953af0d25c315e576c3fc62e63b444bcb50c6af4c873217803dcb6ee432f21d0a602c18add67
7
+ data.tar.gz: a6bf0c4b73d1dfa215981ee77227e95d1786370e9c20996b13c4bd0602383575d9edf19f2ed89c837715e8f8a2ded95c326542c6d702c362492cb37b7a5ef218
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  bundler_args: --without development
2
2
  language: ruby
3
+ sudo: false
3
4
  rvm:
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1.0
7
- - 2.2.2
5
+ - 2.1.9
6
+ - 2.2.5
7
+ - 2.3.1
8
8
  script: bundle exec rspec spec
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## Version 1.0.2
2
+ * Update dependencies
3
+ * Handle empty lines in .po file (thanks to @roland9)
4
+ * Fix translated strings stats
5
+
6
+ ## Version 1.0.1
7
+
8
+ * Update dependencies and tests
9
+
1
10
  ## Version 1.0.0
2
11
 
3
12
  * add support for header entry
data/Gemfile CHANGED
@@ -2,8 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  group :test do
4
4
  gem 'coveralls', :require => false
5
- gem 'pry-byebug', :platforms => :ruby_20
6
- gem 'rspec', '~> 3.3.0'
5
+ gem 'pry-byebug', :platforms => :mri
6
+ gem 'rspec', '~> 3.5.0'
7
7
  gem 'awesome_print'
8
8
  end
9
9
 
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 of property of the `Entry`:
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 = "This entry is translated" # or `msgstr=` alias
134
+ entry.translate("This entry is translated") # or `msgstr=` alias
134
135
  entry.msgstr.to_s
135
136
  #=> "This entry is translated"
136
137
  ```
@@ -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 = translated.size
111
- fuzzy_size = fuzzy.size
110
+ translated_size = translated.size
111
+ fuzzy_size = fuzzy.size
112
112
 
113
113
  {
114
- translated: percentage(translated_size - fuzzy_size),
114
+ translated: percentage(translated_size),
115
115
  untranslated: percentage(untranslated_size),
116
- fuzzy: percentage(fuzzy_size)
116
+ fuzzy: percentage(fuzzy_size)
117
117
  }
118
118
  end
119
119
 
@@ -12,7 +12,7 @@ module PoParser
12
12
  File.open(path, 'r') do |f|
13
13
  f.each_line do |line|
14
14
  if line.match(/^\n$/)
15
- @po << parse_block(block)
15
+ @po << parse_block(block) if block != ''
16
16
  block = ''
17
17
  elsif f.eof?
18
18
  block += line
@@ -1,3 +1,3 @@
1
1
  module PoParser
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
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", "~> 1.10"
26
- spec.add_development_dependency "rake", "~> 10.4"
25
+ spec.add_development_dependency "bundler", ">= 0"
26
+ spec.add_development_dependency "rake", ">= 0"
27
27
  end
@@ -0,0 +1,8 @@
1
+
2
+ #: templates:105
3
+ msgid "Afrikaans"
4
+ msgstr "آفریقایی"
5
+
6
+ #, fuzzy
7
+ msgid "Afrikaans"
8
+ msgstr "آفریقایی"
@@ -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
- ap @po.stats
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.1
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: 2015-09-18 00:00:00.000000000 Z
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: '1.10'
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: '1.10'
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: '10.4'
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: '10.4'
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.6
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