puttext 0.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 +7 -0
- data/.codeclimate.yml +19 -0
- data/.gitattributes +17 -0
- data/.gitignore +50 -0
- data/.rspec +1 -0
- data/.rubocop.yml +26 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +68 -0
- data/LICENSE +21 -0
- data/README.md +82 -0
- data/Rakefile +8 -0
- data/bin/puttext +6 -0
- data/lib/puttext.rb +6 -0
- data/lib/puttext/cmdline.rb +71 -0
- data/lib/puttext/extractor.rb +114 -0
- data/lib/puttext/parser/base.rb +32 -0
- data/lib/puttext/parser/ruby.rb +114 -0
- data/lib/puttext/parser/slim.rb +61 -0
- data/lib/puttext/po_entry.rb +181 -0
- data/lib/puttext/po_file.rb +53 -0
- data/puttext.gemspec +37 -0
- data/spec/fixtures/extractor_fixtures/another_file.php +0 -0
- data/spec/fixtures/extractor_fixtures/file_1.rb +0 -0
- data/spec/fixtures/extractor_fixtures/file_2.rb +0 -0
- data/spec/fixtures/extractor_fixtures/random_file.txt +0 -0
- data/spec/fixtures/extractor_fixtures/subfolder/subfile.py +0 -0
- data/spec/fixtures/extractor_fixtures/subfolder/subfile_1.rb +0 -0
- data/spec/fixtures/extractor_fixtures/subfolder/subfile_2.rb +0 -0
- data/spec/fixtures/parser_base_shared_fixture.rb +3 -0
- data/spec/shared/parser_base_shared.rb +38 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/unit/extractor_spec.rb +168 -0
- data/spec/unit/parser/ruby_spec.rb +176 -0
- data/spec/unit/parser/slim_spec.rb +86 -0
- data/spec/unit/po_entry_spec.rb +327 -0
- data/spec/unit/po_file_spec.rb +53 -0
- metadata +199 -0
@@ -0,0 +1,327 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'unindent'
|
5
|
+
|
6
|
+
describe PutText::POEntry do
|
7
|
+
describe '#initialize' do
|
8
|
+
context 'creating a simple PO entry' do
|
9
|
+
let(:entry) { described_class.new(msgid: 'An error occurred!') }
|
10
|
+
|
11
|
+
it 'sets the passed msgid attribute' do
|
12
|
+
expect(entry.msgid).to eq('An error occurred!')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'sets msgid_plural to nil' do
|
16
|
+
expect(entry.msgid_plural).to be nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'sets msgctxt to nil' do
|
20
|
+
expect(entry.msgctxt).to be nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'sets references to an empty array' do
|
24
|
+
expect(entry.references).to eq([])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'creating a pluralized entry' do
|
29
|
+
let(:entry) do
|
30
|
+
described_class.new(
|
31
|
+
msgid: 'An error occurred!',
|
32
|
+
msgid_plural: '%d errors occurred!'
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'sets the passed msgid attribute' do
|
37
|
+
expect(entry.msgid).to eq('An error occurred!')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'sets the passed msgid_plural attribute' do
|
41
|
+
expect(entry.msgid_plural).to eq('%d errors occurred!')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'creating an entry with a context' do
|
46
|
+
let(:entry) do
|
47
|
+
described_class.new(
|
48
|
+
msgid: 'An error occurred!',
|
49
|
+
msgctxt: 'Error modal'
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'sets the passed msgid attribute' do
|
54
|
+
expect(entry.msgid).to eq('An error occurred!')
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'sets the passed msgctxt attribute' do
|
58
|
+
expect(entry.msgctxt).to eq('Error modal')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'creating an entry with references' do
|
63
|
+
let(:entry) do
|
64
|
+
described_class.new(
|
65
|
+
msgid: 'An error occurred!',
|
66
|
+
references: ['errors.rb:15']
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'sets the passed msgid attribute' do
|
71
|
+
expect(entry.msgid).to eq('An error occurred!')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'sets the passed msgctxt attribute' do
|
75
|
+
expect(entry.references).to eq(['errors.rb:15'])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'creating an entry with a context in msgid' do
|
80
|
+
context 'context is separated by the default separator' do
|
81
|
+
let(:entry) do
|
82
|
+
described_class.new(
|
83
|
+
msgid: 'Error modal|An error occurred!'
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'sets the correct separated msgid' do
|
88
|
+
expect(entry.msgid).to eq('An error occurred!')
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'sets the passed msgctxt attribute' do
|
92
|
+
expect(entry.msgctxt).to eq('Error modal')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'context is separated by a custom separator' do
|
97
|
+
let(:entry) do
|
98
|
+
described_class.new(
|
99
|
+
msgid: 'Error modal;;An error occurred!',
|
100
|
+
separator: ';;'
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'sets the correct separated msgid' do
|
105
|
+
expect(entry.msgid).to eq('An error occurred!')
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'sets the passed msgctxt attribute' do
|
109
|
+
expect(entry.msgctxt).to eq('Error modal')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#references?' do
|
116
|
+
context 'entry has references' do
|
117
|
+
let(:entry) do
|
118
|
+
described_class.new(
|
119
|
+
msgid: 'An error occurred!',
|
120
|
+
references: ['errors.rb:15']
|
121
|
+
)
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'returns true' do
|
125
|
+
expect(entry.references?).to be true
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'entry does not have references' do
|
130
|
+
let(:entry) { described_class.new(msgid: 'An error occurred!') }
|
131
|
+
|
132
|
+
it 'returns false' do
|
133
|
+
expect(entry.references?).to be false
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe '#plural?' do
|
139
|
+
context 'entry is a pluralized entry' do
|
140
|
+
let(:entry) do
|
141
|
+
described_class.new(
|
142
|
+
msgid: 'An error occurred!',
|
143
|
+
msgid_plural: '%d errors occurred!'
|
144
|
+
)
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'returns true' do
|
148
|
+
expect(entry.plural?).to be true
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
context 'entry is not pluralized entry' do
|
153
|
+
let(:entry) { described_class.new(msgid: 'An error occurred!') }
|
154
|
+
|
155
|
+
it 'returns false' do
|
156
|
+
expect(entry.plural?).to be false
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe '#merge' do
|
162
|
+
let(:entry) do
|
163
|
+
described_class.new(
|
164
|
+
msgid: 'An error occurred!',
|
165
|
+
references: ['errors.rb:15']
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
let(:other_entry) do
|
170
|
+
described_class.new(
|
171
|
+
msgid: 'An error occurred!',
|
172
|
+
references: [
|
173
|
+
'subfolder/random_file.rb:5',
|
174
|
+
'subfolder/another_file.rb:168'
|
175
|
+
]
|
176
|
+
)
|
177
|
+
end
|
178
|
+
|
179
|
+
let(:merged_entry) { entry.merge(other_entry) }
|
180
|
+
|
181
|
+
it 'merges references of both entries' do
|
182
|
+
expect(merged_entry.references).to eq(
|
183
|
+
[
|
184
|
+
'errors.rb:15',
|
185
|
+
'subfolder/random_file.rb:5',
|
186
|
+
'subfolder/another_file.rb:168'
|
187
|
+
]
|
188
|
+
)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
describe '#unique_key' do
|
193
|
+
let(:entry_1) { described_class.new(msgid: 'An error occurred!') }
|
194
|
+
let(:entry_2) { described_class.new(msgid: 'Another message') }
|
195
|
+
|
196
|
+
let(:ctxt_entry_1) do
|
197
|
+
described_class.new(
|
198
|
+
msgid: 'An error occurred!',
|
199
|
+
msgctxt: 'Error modal'
|
200
|
+
)
|
201
|
+
end
|
202
|
+
|
203
|
+
let(:ctxt_entry_2) do
|
204
|
+
described_class.new(
|
205
|
+
msgid: 'An error occurred!',
|
206
|
+
msgctxt: 'Error modal'
|
207
|
+
)
|
208
|
+
end
|
209
|
+
|
210
|
+
context 'comparing the key from the same entry' do
|
211
|
+
it 'returns the same key' do
|
212
|
+
expect(entry_1.unique_key).to eq(entry_1.unique_key)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
context 'comparing keys of entries with the same message and context' do
|
217
|
+
it 'returns the same key' do
|
218
|
+
expect(ctxt_entry_1.unique_key).to eq(ctxt_entry_2.unique_key)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'comparing keys of entries with different messages' do
|
223
|
+
it 'returns different keys' do
|
224
|
+
expect(entry_1.unique_key).not_to eq(entry_2.unique_key)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context 'comparing keys of entries with same message, different contexts' do
|
229
|
+
it 'returns different keys' do
|
230
|
+
expect(entry_1.unique_key).not_to eq(ctxt_entry_1.unique_key)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe '#to_s' do
|
236
|
+
context 'with a simple PO entry' do
|
237
|
+
let(:entry) { described_class.new(msgid: 'An error occurred!') }
|
238
|
+
|
239
|
+
it 'generates correct string' do
|
240
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
241
|
+
msgid "An error occurred!"
|
242
|
+
msgstr ""
|
243
|
+
PO
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
context 'with a pluralized entry' do
|
248
|
+
let(:entry) do
|
249
|
+
described_class.new(
|
250
|
+
msgid: 'An error occurred!',
|
251
|
+
msgid_plural: '%d errors occurred!'
|
252
|
+
)
|
253
|
+
end
|
254
|
+
|
255
|
+
it 'generates correct string' do
|
256
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
257
|
+
msgid "An error occurred!"
|
258
|
+
msgid_plural "%d errors occurred!"
|
259
|
+
msgstr[0] ""
|
260
|
+
msgstr[1] ""
|
261
|
+
PO
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
context 'with an entry with a context' do
|
266
|
+
let(:entry) do
|
267
|
+
described_class.new(
|
268
|
+
msgid: 'An error occurred!',
|
269
|
+
msgctxt: 'Error modal'
|
270
|
+
)
|
271
|
+
end
|
272
|
+
|
273
|
+
it 'generates correct string' do
|
274
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
275
|
+
msgctxt "Error modal"
|
276
|
+
msgid "An error occurred!"
|
277
|
+
msgstr ""
|
278
|
+
PO
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
context 'with an entry with references' do
|
283
|
+
let(:entry) do
|
284
|
+
described_class.new(
|
285
|
+
msgid: 'An error occurred!',
|
286
|
+
references: ['errors.rb:15', 'another/file.rb:168']
|
287
|
+
)
|
288
|
+
end
|
289
|
+
|
290
|
+
it 'generates correct string' do
|
291
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
292
|
+
#: errors.rb:15 another/file.rb:168
|
293
|
+
msgid "An error occurred!"
|
294
|
+
msgstr ""
|
295
|
+
PO
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
context 'with multiline msgid' do
|
300
|
+
let(:entry) do
|
301
|
+
described_class.new(
|
302
|
+
msgid: "An error occurred!\nHorrible error description"
|
303
|
+
)
|
304
|
+
end
|
305
|
+
|
306
|
+
it 'generates correct string' do
|
307
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
308
|
+
msgid ""
|
309
|
+
"An error occurred!\\n"
|
310
|
+
"Horrible error description"
|
311
|
+
msgstr ""
|
312
|
+
PO
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
context 'with characters in msgid that need to be escaped' do
|
317
|
+
let(:entry) { described_class.new(msgid: "\tAn \"error\" occurred!") }
|
318
|
+
|
319
|
+
it 'generates correct string' do
|
320
|
+
expect(entry.to_s).to eq(<<-PO.unindent)
|
321
|
+
msgid "\\tAn \\"error\\" occurred!"
|
322
|
+
msgstr ""
|
323
|
+
PO
|
324
|
+
end
|
325
|
+
end
|
326
|
+
end
|
327
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'unindent'
|
5
|
+
|
6
|
+
describe PutText::POFile do
|
7
|
+
describe '#initialize' do
|
8
|
+
let(:entry_1) { PutText::POEntry.new(msgid: 'One error occurred') }
|
9
|
+
let(:entry_2) { PutText::POEntry.new(msgid: 'Another error occurred') }
|
10
|
+
let(:file) { described_class.new([entry_1, entry_2]) }
|
11
|
+
|
12
|
+
it 'creates a POFile with the specified entries' do
|
13
|
+
expect(file.entries).to eq([entry_1, entry_2])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#to_s' do
|
18
|
+
let(:entry_1) do
|
19
|
+
PutText::POEntry.new(
|
20
|
+
msgid: 'Error #1 occurred',
|
21
|
+
references: ['error1.rb:1']
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:entry_2) do
|
26
|
+
PutText::POEntry.new(
|
27
|
+
msgid: 'Error #2 occurred',
|
28
|
+
references: ['error2.rb:2']
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
let(:entry_3) do
|
33
|
+
PutText::POEntry.new(
|
34
|
+
msgid: 'Error #2 occurred',
|
35
|
+
references: ['error2.rb:8']
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:file) { described_class.new([entry_1, entry_2, entry_3]) }
|
40
|
+
|
41
|
+
it 'generates correct string' do
|
42
|
+
expect(file.to_s).to eq(<<-PO.unindent)
|
43
|
+
#: error1.rb:1
|
44
|
+
msgid "Error #1 occurred"
|
45
|
+
msgstr ""
|
46
|
+
|
47
|
+
#: error2.rb:2 error2.rb:8
|
48
|
+
msgid "Error #2 occurred"
|
49
|
+
msgstr ""
|
50
|
+
PO
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: puttext
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mantas Norvaiša
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: parser
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.4.0.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.0.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: slim
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rspec
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3.5'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '3.5'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: unindent
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rubocop
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 0.46.0
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.46.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: simplecov
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: codeclimate-test-reporter
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.0.0
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 1.0.0
|
131
|
+
description:
|
132
|
+
email: mntnorv@gmail.com
|
133
|
+
executables:
|
134
|
+
- puttext
|
135
|
+
extensions: []
|
136
|
+
extra_rdoc_files: []
|
137
|
+
files:
|
138
|
+
- ".codeclimate.yml"
|
139
|
+
- ".gitattributes"
|
140
|
+
- ".gitignore"
|
141
|
+
- ".rspec"
|
142
|
+
- ".rubocop.yml"
|
143
|
+
- ".ruby-version"
|
144
|
+
- ".travis.yml"
|
145
|
+
- Gemfile
|
146
|
+
- Gemfile.lock
|
147
|
+
- LICENSE
|
148
|
+
- README.md
|
149
|
+
- Rakefile
|
150
|
+
- bin/puttext
|
151
|
+
- lib/puttext.rb
|
152
|
+
- lib/puttext/cmdline.rb
|
153
|
+
- lib/puttext/extractor.rb
|
154
|
+
- lib/puttext/parser/base.rb
|
155
|
+
- lib/puttext/parser/ruby.rb
|
156
|
+
- lib/puttext/parser/slim.rb
|
157
|
+
- lib/puttext/po_entry.rb
|
158
|
+
- lib/puttext/po_file.rb
|
159
|
+
- puttext.gemspec
|
160
|
+
- spec/fixtures/extractor_fixtures/another_file.php
|
161
|
+
- spec/fixtures/extractor_fixtures/file_1.rb
|
162
|
+
- spec/fixtures/extractor_fixtures/file_2.rb
|
163
|
+
- spec/fixtures/extractor_fixtures/random_file.txt
|
164
|
+
- spec/fixtures/extractor_fixtures/subfolder/subfile.py
|
165
|
+
- spec/fixtures/extractor_fixtures/subfolder/subfile_1.rb
|
166
|
+
- spec/fixtures/extractor_fixtures/subfolder/subfile_2.rb
|
167
|
+
- spec/fixtures/parser_base_shared_fixture.rb
|
168
|
+
- spec/shared/parser_base_shared.rb
|
169
|
+
- spec/spec_helper.rb
|
170
|
+
- spec/unit/extractor_spec.rb
|
171
|
+
- spec/unit/parser/ruby_spec.rb
|
172
|
+
- spec/unit/parser/slim_spec.rb
|
173
|
+
- spec/unit/po_entry_spec.rb
|
174
|
+
- spec/unit/po_file_spec.rb
|
175
|
+
homepage: https://github.com/mntnorv/puttext
|
176
|
+
licenses:
|
177
|
+
- MIT
|
178
|
+
metadata: {}
|
179
|
+
post_install_message:
|
180
|
+
rdoc_options: []
|
181
|
+
require_paths:
|
182
|
+
- lib
|
183
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 2.0.0
|
188
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
requirements: []
|
194
|
+
rubyforge_project:
|
195
|
+
rubygems_version: 2.6.11
|
196
|
+
signing_key:
|
197
|
+
specification_version: 4
|
198
|
+
summary: Extract gettext strings from Ruby source
|
199
|
+
test_files: []
|