PoParser 3.0.1 → 3.1.0

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