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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/poparser/comment.rb +4 -1
- data/lib/poparser/entry.rb +7 -0
- data/lib/poparser/po.rb +1 -1
- data/lib/poparser/version.rb +1 -1
- data/spec/poparser/entry_spec.rb +17 -1
- data/spec/poparser/fixtures/complex_obsolete.po +21 -0
- data/spec/poparser/po_spec.rb +3 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 529c54e8854a295bac23c8873ecb6111d85b421f
|
4
|
+
data.tar.gz: 76dfc88f971f62fc0f469835ab70e8730d8d4fbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cbf07f2d14cddf89616a40028c73bc4cb828b3f1b74500477fc351b1852a1612b0fcca17410335201db1a514d2aa24ab7711ff30f1d38859b31457cf1802c1a
|
7
|
+
data.tar.gz: 9c873d0bf1c394b5d0e1806938770a5c0ec494ec624f226673076890884a0cf60a7ed342ffd5b5011fab64bbb55558e3943d45d22de66c8090cd1c0bf7e8b7f0
|
data/CHANGELOG.md
CHANGED
data/lib/poparser/comment.rb
CHANGED
@@ -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}]+$/, '')
|
data/lib/poparser/entry.rb
CHANGED
@@ -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
|
data/lib/poparser/po.rb
CHANGED
data/lib/poparser/version.rb
CHANGED
data/spec/poparser/entry_spec.rb
CHANGED
@@ -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"
|
data/spec/poparser/po_spec.rb
CHANGED
@@ -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
|
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-
|
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
|