PoParser 3.0.1 → 3.1.0

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: 59e498594dd8ffa5a2798c285b7c783ba6befc1a
4
- data.tar.gz: ec33eca7c0eccef3ab3141974ea0ac953ce6c5be
3
+ metadata.gz: 529c54e8854a295bac23c8873ecb6111d85b421f
4
+ data.tar.gz: 76dfc88f971f62fc0f469835ab70e8730d8d4fbc
5
5
  SHA512:
6
- metadata.gz: a063630a9cb8ccc1e105106d3b4a95fd3705880d0a688787e736f168b82669a48b4a58eb8a0dea10511a75758bca6eb454c2c46db7e9dda0405ab026ff0d3aae
7
- data.tar.gz: e8edf326ef72caa6d612c618f2283ebeb37602bb16a36cabbc34402769e8160228d1be3fb2d41815a29919a868b48a3f73abb91a1af8d7e46d7ff1947db7889f
6
+ metadata.gz: 1cbf07f2d14cddf89616a40028c73bc4cb828b3f1b74500477fc351b1852a1612b0fcca17410335201db1a514d2aa24ab7711ff30f1d38859b31457cf1802c1a
7
+ data.tar.gz: 9c873d0bf1c394b5d0e1806938770a5c0ec494ec624f226673076890884a0cf60a7ed342ffd5b5011fab64bbb55558e3943d45d22de66c8090cd1c0bf7e8b7f0
@@ -1,3 +1,8 @@
1
+ 3.1.0 / 2017-06-04
2
+ ==================
3
+
4
+ * parse content of obsolete entries (#19)
5
+
1
6
  3.0.1 / 2017-06-01
2
7
  ==================
3
8
 
@@ -5,13 +5,16 @@ module PoParser
5
5
  def initialize(type, value)
6
6
  @type = type
7
7
  @value = value
8
+
9
+ if @type.to_s =~ /^previous_/ # these behave more like messages
10
+ remove_empty_line
11
+ end
8
12
  end
9
13
 
10
14
  def to_s(with_label = false)
11
15
  return to_str unless with_label
12
16
  if @value.is_a? Array
13
17
  if @type.to_s =~ /^previous_/ # these behave more like messages
14
- remove_empty_line
15
18
  string = ["#{COMMENTS_LABELS[@type]} \"\"\n"]
16
19
  @value.each do |str|
17
20
  string << "#| \"#{str}\"\n".gsub(/[\p{Blank}]+$/, '')
@@ -23,6 +23,13 @@ module PoParser
23
23
  # alias for backward compatibility of this typo
24
24
  self.class.send(:alias_method, :refrence, :reference)
25
25
  self.class.send(:alias_method, :refrence=, :reference=)
26
+ if self.obsolete?
27
+ obsolete_content = SimplePoParser.parse_message(obsolete.value.join("\n").gsub(/^\|/, "#|"))
28
+ obsolete_content.each do |name, value|
29
+ raise(ArgumentError, "Unknown label #{name}") if !valid_label? name
30
+ set_instance_variable(name, value)
31
+ end
32
+ end
26
33
  end
27
34
 
28
35
  # If entry doesn't have any msgid, it's probably a obsolete entry that is
@@ -86,7 +86,7 @@ module PoParser
86
86
  entry.obsolete?
87
87
  end
88
88
  end
89
- alias_method :obsolete, :obsolete
89
+ alias_method :cached, :obsolete
90
90
 
91
91
  # Count of all entries without counting obsolete entries
92
92
  #
@@ -1,3 +1,3 @@
1
1
  module PoParser
2
- VERSION = "3.0.1"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -110,7 +110,7 @@ describe PoParser::Entry do
110
110
  context 'obsolete' do
111
111
  before do
112
112
  @entry = PoParser::Entry.new
113
- @entry.obsolete = '#~ msgid "a obsolete entry"'
113
+ @entry.obsolete = ['#~ msgid "a obsolete entry"', '#~ msgstr ""']
114
114
  @entry.flag = 'Fuzzy'
115
115
  end
116
116
 
@@ -130,5 +130,21 @@ describe PoParser::Entry do
130
130
  it 'shouldn\'t mark it as fuzzy' do
131
131
  expect(@entry.fuzzy?).to be_falsy
132
132
  end
133
+
134
+ it 'should further parse the obsolete content' do
135
+ path = Pathname.new('spec/poparser/fixtures/complex_obsolete.po').realpath
136
+ @po = PoParser::Tokenizer.new.extract_entries(path)
137
+ obsolete_entry = @po.obsolete.first
138
+ expect(obsolete_entry.obsolete?).to be_truthy
139
+ expect(obsolete_entry.msgctxt.value).to eq('Context')
140
+ expect(obsolete_entry.msgid.value).to eq('msgid')
141
+ expect(obsolete_entry.msgid_plural.value).to eq(['multiline msgid_plural\n', ''])
142
+ expect(obsolete_entry.previous_msgctxt.value).to eq('previous context')
143
+ expect(obsolete_entry.previous_msgid.value).to eq(
144
+ ['multiline\n', 'previous messageid']
145
+ )
146
+ expect(obsolete_entry.previous_msgid_plural.value).to eq('previous msgid_plural')
147
+ end
148
+
133
149
  end
134
150
  end
@@ -0,0 +1,21 @@
1
+ # translator-comment
2
+ #
3
+ #. extract
4
+ #: reference1
5
+ #: reference2
6
+ #, flag
7
+ #~| msgctxt "previous context"
8
+ #~| msgid ""
9
+ #~| "multiline\n"
10
+ #~| "previous messageid"
11
+ #~| msgid_plural "previous msgid_plural"
12
+ #~ msgctxt "Context"
13
+ #~ msgid "msgid"
14
+ #~ msgid_plural ""
15
+ #~ "multiline msgid_plural\n"
16
+ #~ ""
17
+ #~ msgstr[0] "msgstr 0"
18
+ #~ msgstr[1] ""
19
+ #~ "msgstr 1 multiline 1\n"
20
+ #~ "msgstr 1 line 2\n"
21
+ #~ msgstr[2] "msgstr 2"
@@ -41,7 +41,7 @@ describe PoParser::Po do
41
41
 
42
42
  it 'returns all obsolete strings' do
43
43
  entry2, entry3 = entry.dup, entry.dup
44
- [entry2, entry3].each { |en| en[:obsolete] = 'test' }
44
+ [entry2, entry3].each { |en| en[:obsolete] = ['msgid "test"', 'msgstr "test"'] }
45
45
  @po << [entry, entry2, entry3]
46
46
  expect(@po.obsolete.size).to eq 2
47
47
  end
@@ -60,7 +60,7 @@ describe PoParser::Po do
60
60
 
61
61
  it 'shouldn\'t count obsolete entries' do
62
62
  @po << entry
63
- obsolete = { obsolete: 'sth', flag: 'Fuzzy' }
63
+ obsolete = { obsolete: ['msgid "sth"', 'msgstr "sth"'], flag: 'Fuzzy' }
64
64
  @po << obsolete
65
65
  expect(@po.size).to eq(1)
66
66
  end
@@ -124,4 +124,5 @@ describe PoParser::Po do
124
124
  }.to raise_error(RuntimeError, "Duplicate entry, header was already instantiated")
125
125
  end
126
126
  end
127
+
127
128
  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: 3.0.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arash Mousavi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_po_parser
@@ -81,6 +81,7 @@ files:
81
81
  - poparser.gemspec
82
82
  - spec/poparser/comment_spec.rb
83
83
  - spec/poparser/entry_spec.rb
84
+ - spec/poparser/fixtures/complex_obsolete.po
84
85
  - spec/poparser/fixtures/header.po
85
86
  - spec/poparser/fixtures/header_error.po
86
87
  - spec/poparser/fixtures/multiline.po
@@ -126,6 +127,7 @@ summary: A PO file parser, editor and generator.
126
127
  test_files:
127
128
  - spec/poparser/comment_spec.rb
128
129
  - spec/poparser/entry_spec.rb
130
+ - spec/poparser/fixtures/complex_obsolete.po
129
131
  - spec/poparser/fixtures/header.po
130
132
  - spec/poparser/fixtures/header_error.po
131
133
  - spec/poparser/fixtures/multiline.po