PoParser 1.0.1 → 1.0.2

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.
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