puttext 0.2.1 → 0.3.2

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: 30ea19d0b5142d39af84debf1a5554e54cd7b28e
4
- data.tar.gz: 7e5b71ded6723ffc5a5eab512b871baedb1fe9ce
3
+ metadata.gz: 0c7e0324ec2fadafc1532c4a71ff53f526b45251
4
+ data.tar.gz: 912c93608cc1f8a5b534c0a0cb9a9ed50989873b
5
5
  SHA512:
6
- metadata.gz: c31494729c4e056cdd9eb79f983a232e99f0840ea0786bac4cab16f60b5322ad66d8af1f17e06a00e49c10f2076e4ef9c17f9e396480c8aa6a31dd84558aac3c
7
- data.tar.gz: 8d30e26ee2bbbf93ea71260094f23859459fbb6f99723dc0d185111c3fe8a50ecbe7f177425e1028cfd9a0764f5b1a6aa2532cfee4c4ee027ba99070e2cfba10
6
+ metadata.gz: 2bbf61f00429e95b98f21882dd3bd7093852d45bc2a08bb9b6143aa0341cf27e9bf5ff60fde4c7c4ccabbd3007966ea9181592028de35f4e381019d72fb0dbdf
7
+ data.tar.gz: 13da779357b574a70f9bc6b7ef80904287ac81c4f07a325533c27984ea8001d77d7052795b5ab6300ab723ac0af2ab369c7c7b6855424ff09a7d8b93a2d40067
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puttext (0.2.1)
4
+ puttext (0.3.2)
5
5
  parser (>= 2.4.0.0, < 3.0)
6
6
  unindent
7
7
 
@@ -4,9 +4,6 @@ require_relative '../po_entry'
4
4
 
5
5
  module PutText
6
6
  module Parser
7
- # Thrown when any error parsing a file occurs
8
- class ParseError < StandardError; end
9
-
10
7
  class Base
11
8
  # Parse gettext strings from a file in the path.
12
9
  # @param [String] path the path of the file to parse.
@@ -15,8 +15,10 @@ module PutText
15
15
  METHODS = {
16
16
  gettext: :regular,
17
17
  _: :regular,
18
+ N_: :regular,
18
19
  ngettext: :plural,
19
20
  n_: :plural,
21
+ Nn_: :plural,
20
22
  sgettext: :context_sep,
21
23
  s_: :context_sep,
22
24
  nsgettext: :context_sep_plural,
@@ -62,17 +64,11 @@ module PutText
62
64
  case ast_node.type
63
65
  when :str
64
66
  ast_node.children[0]
65
- else
66
- raise ParseError,
67
- format('unsupported AST node type: %s', ast_node.type)
68
67
  end
69
68
  end
70
69
 
71
70
  def po_entry_from_ast_node(ast_node, type)
72
- filename = ast_node.location.expression.source_buffer.name
73
- line = ast_node.location.line
74
-
75
- entry_attrs = { references: ["#{filename}:#{line}"] }
71
+ entry_attrs = { references: [ast_node_location(ast_node)] }
76
72
 
77
73
  PARAMS[type].each_with_index do |name, index|
78
74
  next if name == :_ # skip parameters named _
@@ -81,7 +77,14 @@ module PutText
81
77
  entry_attrs[name] = param if param
82
78
  end
83
79
 
84
- PutText::POEntry.new(entry_attrs)
80
+ PutText::POEntry.new(entry_attrs) if entry_attrs[:msgid]
81
+ end
82
+
83
+ def ast_node_location(ast_node)
84
+ filename = ast_node.location.expression.source_buffer.name
85
+ line = ast_node.location.line
86
+
87
+ "#{filename}:#{line}"
85
88
  end
86
89
 
87
90
  def find_strings_in_ast(ast_node)
@@ -96,7 +99,7 @@ module PutText
96
99
  entries += find_strings_in_each_ast(ast_node.children)
97
100
  end
98
101
 
99
- entries
102
+ entries.compact
100
103
  end
101
104
 
102
105
  def find_strings_in_each_ast(ast_nodes)
@@ -4,7 +4,7 @@ require 'date'
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'puttext'
7
- s.version = '0.2.1'
7
+ s.version = '0.3.2'
8
8
  s.date = Date.today.to_s
9
9
  s.summary = 'Extract gettext strings from Ruby source'
10
10
  s.authors = ['Mantas Norvaiša']
@@ -15,8 +15,10 @@ describe PutText::Parser::Ruby do
15
15
  [
16
16
  gettext('gettext'),
17
17
  _('underscore'),
18
+ N_('nothing underscore'),
18
19
  ngettext('1 ngettext', '%d ngettexts', 5),
19
20
  n_('1 underscore', '%d underscores', 5),
21
+ Nn_('1 nothing', '%d nothings', 5),
20
22
  sgettext('context|sgettext'),
21
23
  s_('context---s underscore', '---'),
22
24
  nsgettext('context|1 nsgettext', '%d nsgettexts', 5),
@@ -45,7 +47,7 @@ describe PutText::Parser::Ruby do
45
47
  end
46
48
 
47
49
  it 'extracts the correct number of strings' do
48
- expect(PutText::POEntry).to have_received(:new).exactly(12).times
50
+ expect(PutText::POEntry).to have_received(:new).exactly(14).times
49
51
  end
50
52
 
51
53
  it 'correctly extracts string from gettext calls' do
@@ -62,11 +64,18 @@ describe PutText::Parser::Ruby do
62
64
  )
63
65
  end
64
66
 
67
+ it 'correctly extracts string from N_ calls' do
68
+ expect(PutText::POEntry).to have_received(:new).with(
69
+ msgid: 'nothing underscore',
70
+ references: ['test.rb:13']
71
+ )
72
+ end
73
+
65
74
  it 'correctly extracts string from ngettext calls' do
66
75
  expect(PutText::POEntry).to have_received(:new).with(
67
76
  msgid: '1 ngettext',
68
77
  msgid_plural: '%d ngettexts',
69
- references: ['test.rb:13']
78
+ references: ['test.rb:14']
70
79
  )
71
80
  end
72
81
 
@@ -74,14 +83,22 @@ describe PutText::Parser::Ruby do
74
83
  expect(PutText::POEntry).to have_received(:new).with(
75
84
  msgid: '1 underscore',
76
85
  msgid_plural: '%d underscores',
77
- references: ['test.rb:14']
86
+ references: ['test.rb:15']
87
+ )
88
+ end
89
+
90
+ it 'correctly extracts string from Nn_ calls' do
91
+ expect(PutText::POEntry).to have_received(:new).with(
92
+ msgid: '1 nothing',
93
+ msgid_plural: '%d nothings',
94
+ references: ['test.rb:16']
78
95
  )
79
96
  end
80
97
 
81
98
  it 'correctly extracts string from sgettext calls' do
82
99
  expect(PutText::POEntry).to have_received(:new).with(
83
100
  msgid: 'context|sgettext',
84
- references: ['test.rb:15']
101
+ references: ['test.rb:17']
85
102
  )
86
103
  end
87
104
 
@@ -89,7 +106,7 @@ describe PutText::Parser::Ruby do
89
106
  expect(PutText::POEntry).to have_received(:new).with(
90
107
  msgid: 'context---s underscore',
91
108
  separator: '---',
92
- references: ['test.rb:16']
109
+ references: ['test.rb:18']
93
110
  )
94
111
  end
95
112
 
@@ -97,7 +114,7 @@ describe PutText::Parser::Ruby do
97
114
  expect(PutText::POEntry).to have_received(:new).with(
98
115
  msgid: 'context|1 nsgettext',
99
116
  msgid_plural: '%d nsgettexts',
100
- references: ['test.rb:17']
117
+ references: ['test.rb:19']
101
118
  )
102
119
  end
103
120
 
@@ -106,7 +123,7 @@ describe PutText::Parser::Ruby do
106
123
  msgid: 'context---1 ns underscore',
107
124
  msgid_plural: '%d ns underscores',
108
125
  separator: '---',
109
- references: ['test.rb:18']
126
+ references: ['test.rb:20']
110
127
  )
111
128
  end
112
129
 
@@ -114,7 +131,7 @@ describe PutText::Parser::Ruby do
114
131
  expect(PutText::POEntry).to have_received(:new).with(
115
132
  msgctxt: 'context',
116
133
  msgid: 'pgettext',
117
- references: ['test.rb:19']
134
+ references: ['test.rb:21']
118
135
  )
119
136
  end
120
137
 
@@ -122,7 +139,7 @@ describe PutText::Parser::Ruby do
122
139
  expect(PutText::POEntry).to have_received(:new).with(
123
140
  msgctxt: 'context',
124
141
  msgid: 'p underscore',
125
- references: ['test.rb:20']
142
+ references: ['test.rb:22']
126
143
  )
127
144
  end
128
145
 
@@ -131,7 +148,7 @@ describe PutText::Parser::Ruby do
131
148
  msgctxt: 'context',
132
149
  msgid: '1 npgettext',
133
150
  msgid_plural: '%d npgettexts',
134
- references: ['test.rb:21']
151
+ references: ['test.rb:23']
135
152
  )
136
153
  end
137
154
 
@@ -140,7 +157,7 @@ describe PutText::Parser::Ruby do
140
157
  msgctxt: 'context',
141
158
  msgid: '1 np underscore',
142
159
  msgid_plural: '%d np underscores',
143
- references: ['test.rb:22']
160
+ references: ['test.rb:24']
144
161
  )
145
162
  end
146
163
  end
@@ -166,10 +183,8 @@ describe PutText::Parser::Ruby do
166
183
  RUBY
167
184
  end
168
185
 
169
- it 'throws a PutText::Parser::ParseError error' do
170
- expect { subject.strings_from_source(ruby_code) }.to raise_error(
171
- PutText::Parser::ParseError
172
- )
186
+ it 'skips the entry, returns an empty array' do
187
+ expect(subject.strings_from_source(ruby_code)).to eq([])
173
188
  end
174
189
  end
175
190
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puttext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mantas Norvaiša
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-05 00:00:00.000000000 Z
11
+ date: 2017-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser