rubocop-i18n 1.1.0 → 1.2.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: 3e4f819b3b4f5bc73ec0b02ee1bd567ab2d3a40e
4
- data.tar.gz: 4d0ec4a7cc1e6046d32421c9253c97a117e74b57
3
+ metadata.gz: e23a0dde90c58003d524a1baeca709a66c900822
4
+ data.tar.gz: 1ddec0669b48c044937bcc2b9c52eeb551eb3651
5
5
  SHA512:
6
- metadata.gz: 2b7502eadea26d2982e80cf6c9e49926656cd1c572f12ec1fe8213279ffbf603d222841f522620d77f33a847a1acf365fb661eb59315e0ab70e377d09e2fccde
7
- data.tar.gz: 9fca0a7581cf5cd57ca7741826d558463bef5e641aa1c96053ee2e3d0b6facaf4da6bb77a21b6bab9b6ff18b77042689a61f9d7ca18848c2b2038d0864c1cc12
6
+ metadata.gz: 855e9c7119359d442e3fc9b0833afaaa0adcb6f72de12403d4b4b3cab1e0cc3dea733b82cd001ca7c8bb9728302d3417fa8deae0056f0f56686e62b24737422f
7
+ data.tar.gz: 26b98a062a7634ca03c17037f46c7864cdc9bd31e95b2f9a6fd85ed9f8ed381053f36c6449fa95130da881f9afcebe7334c9dc6ead5ee20f2e3c566d362d3d21
@@ -0,0 +1 @@
1
+ inherit_from: .rubocop_todo.yml
@@ -0,0 +1,69 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2017-10-13 16:58:50 -0700 using RuboCop version 0.49.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+ # Offense count: 4
9
+ Metrics/AbcSize:
10
+ Max: 31
11
+
12
+ # Offense count: 5
13
+ # Configuration parameters: CountComments, ExcludedMethods.
14
+ Metrics/BlockLength:
15
+ Max: 68
16
+
17
+ # Offense count: 1
18
+ # Configuration parameters: CountComments.
19
+ Metrics/ClassLength:
20
+ Max: 106
21
+
22
+ # Offense count: 3
23
+ Metrics/CyclomaticComplexity:
24
+ Max: 8
25
+
26
+ # Offense count: 86
27
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
28
+ # URISchemes: http, https
29
+ Metrics/LineLength:
30
+ Max: 174
31
+
32
+ # Offense count: 6
33
+ # Configuration parameters: CountComments.
34
+ Metrics/MethodLength:
35
+ Max: 26
36
+
37
+ # Offense count: 2
38
+ Metrics/PerceivedComplexity:
39
+ Max: 8
40
+
41
+ # Offense count: 2
42
+ Style/Documentation:
43
+ Exclude:
44
+ - 'spec/**/*'
45
+ - 'test/**/*'
46
+ - 'lib/rubocop/cop/i18n/gettext.rb'
47
+ - 'lib/rubocop/cop/i18n/gettext/decorate_function_message.rb'
48
+
49
+ # Offense count: 1
50
+ # Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
51
+ # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
52
+ Style/FileName:
53
+ Exclude:
54
+ - 'lib/rubocop-i18n.rb'
55
+
56
+ # Offense count: 7
57
+ # Configuration parameters: SupportedStyles.
58
+ # SupportedStyles: annotated, template
59
+ Style/FormatStringToken:
60
+ EnforcedStyle: template
61
+
62
+ # Offense count: 4
63
+ # Configuration parameters: MinBodyLength.
64
+ Style/GuardClause:
65
+ Exclude:
66
+ - 'lib/rubocop/cop/i18n/gettext/decorate_function_message.rb'
67
+ - 'lib/rubocop/cop/i18n/gettext/decorate_string.rb'
68
+ - 'lib/rubocop/cop/i18n/gettext/decorate_string_formatting_using_interpolation.rb'
69
+ - 'lib/rubocop/cop/i18n/gettext/decorate_string_formatting_using_percent.rb'
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ * Updated DecorateString to look for sentences using a regular expression that should be decorated. This limits the number of strings that it finds to things that look like a sentence.
6
+ * Code restructure (no API changes)
7
+ * RuboCop lint fixes
8
+
5
9
  ### 1.1.0
6
10
 
7
11
  * Added support for DecorateStringFormattingUsingPercent
data/README.md CHANGED
@@ -26,7 +26,7 @@ require:
26
26
  - rubocop-i18n
27
27
  ...
28
28
  GetText/DecorateString:
29
- Enabled: false
29
+ Enabled: true
30
30
  GetText/DecorateFunctionMessage:
31
31
  Enabled: true
32
32
  GetText/DecorateStringFormattingUsingInterpolation
@@ -37,6 +37,36 @@ GetText/DecorateStringFormattingUsingPercent
37
37
 
38
38
  ## Cops
39
39
 
40
+ ### GetText/DecorateString
41
+
42
+ This cop is looks for strings that appear to be sentences but are not decorated.
43
+ Sentences are determined by the STRING_REGEXP.
44
+
45
+ ##### Error message thrown
46
+
47
+ ```
48
+ decorator is missing around sentence
49
+ ```
50
+
51
+ ##### Bad
52
+
53
+ ``` ruby
54
+ "Result is bad."
55
+ ```
56
+
57
+ ##### Good
58
+
59
+ ``` ruby
60
+ _("Result is good.")
61
+ ```
62
+
63
+ ##### Ignored
64
+ ``` ruby
65
+ "string"
66
+ "A string with out a punctuation at the end"
67
+ "a string that doesn't start with a capital letter."
68
+ ```
69
+
40
70
  ### GetText/DecorateFunctionMessage
41
71
 
42
72
  This cop looks for any raise or fail functions and checks that the user visible message is using gettext decoration with the _() function.
@@ -207,8 +237,9 @@ raise(_("Warning is %{value}") % { value: 'bad' })
207
237
 
208
238
  It may be necessary to ignore a cop for a particular piece of code. We follow standard rubocop idioms.
209
239
  ``` ruby
210
- raise("We don't want this translated") # rubocop:disable GetText/DecorateFunctionMessage
211
- raise(_("We don't want this translated #{crazy}") # rubocop:disable GetText/DecorateStringFormattingUsingInterpolation)
240
+ raise("We don't want this translated.") # rubocop:disable GetText/DecorateString
241
+ raise("We don't want this translated") # rubocop:disable GetText/DecorateFunctionMessage
242
+ raise(_("We don't want this translated #{crazy}") # rubocop:disable GetText/DecorateStringFormattingUsingInterpolation)
212
243
  raise(_("We don't want this translated %s") % ['crazy'] # rubocop:disable GetText/DecorateStringFormattingUsingPercent)
213
244
  ```
214
245
 
data/Rakefile CHANGED
@@ -1,6 +1,12 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :test
7
+
8
+ task test: %i[rubocop spec]
9
+
10
+ task :rubocop do
11
+ sh 'rubocop -P'
12
+ end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "rubocop/i18n"
3
+ require 'bundler/setup'
4
+ require 'rubocop/i18n'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "rubocop/i18n"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -4,6 +4,41 @@ module RuboCop
4
4
  module Cop
5
5
  module I18n
6
6
  module GetText
7
+ def self.supported_methods
8
+ %w[raise fail]
9
+ end
10
+
11
+ # Supports decorators from
12
+ # * mutoh/gettext https://github.com/mutoh/gettext/blob/master/lib/gettext.rb
13
+ # * grosser/fast_gettext https://github.com/grosser/fast_gettext/blob/master/lib/fast_gettext/translation.rb
14
+ def self.supported_decorators
15
+ %w[
16
+ _
17
+ n_
18
+ np_
19
+ ns_
20
+ N_
21
+ Nn_
22
+ D_
23
+ Dn_
24
+ Ds_
25
+ Dns_
26
+ d_
27
+ dn_
28
+ ds_
29
+ dns_
30
+ p_
31
+ s_
32
+ ]
33
+ end
34
+
35
+ def self.supported_method?(method_name)
36
+ supported_methods.include?(method_name)
37
+ end
38
+
39
+ def self.supported_decorator?(decorator_name)
40
+ supported_decorators.include?(decorator_name)
41
+ end
7
42
  end
8
43
  end
9
44
  end
@@ -3,19 +3,16 @@ module RuboCop
3
3
  module I18n
4
4
  module GetText
5
5
  class DecorateFunctionMessage < Cop
6
- SUPPORTED_METHODS = ['raise', 'fail']
7
- SUPPORTED_DECORATORS = ['_', 'n_', 'N_']
8
-
9
6
  def on_send(node)
10
7
  method_name = node.loc.selector.source
11
- return if !supported_method_name?(method_name)
8
+ return unless GetText.supported_method?(method_name)
12
9
  _, method_name, *arg_nodes = *node
13
10
  if !arg_nodes.empty? && !already_decorated?(node) && (contains_string?(arg_nodes) || string_constant?(arg_nodes))
14
- if string_constant?(arg_nodes)
15
- message_section = arg_nodes[1]
16
- else
17
- message_section = arg_nodes[0]
18
- end
11
+ message_section = if string_constant?(arg_nodes)
12
+ arg_nodes[1]
13
+ else
14
+ arg_nodes[0]
15
+ end
19
16
 
20
17
  detect_and_report(node, message_section, method_name)
21
18
  end
@@ -23,15 +20,11 @@ module RuboCop
23
20
 
24
21
  private
25
22
 
26
- def supported_method_name?(method_name)
27
- SUPPORTED_METHODS.include?(method_name)
28
- end
29
-
30
23
  def already_decorated?(node, parent = nil)
31
24
  parent ||= node
32
25
 
33
26
  if node.respond_to?(:loc) && node.loc.respond_to?(:selector)
34
- return true if SUPPORTED_DECORATORS.include?(node.loc.selector.source)
27
+ return true if GetText.supported_decorator?(node.loc.selector.source)
35
28
  end
36
29
 
37
30
  return false unless node.respond_to?(:children)
@@ -44,10 +37,10 @@ module RuboCop
44
37
  end
45
38
 
46
39
  def contains_string?(nodes)
47
- nodes[0].inspect.include?(":str") || nodes[0].inspect.include?(":dstr")
40
+ nodes[0].inspect.include?(':str') || nodes[0].inspect.include?(':dstr')
48
41
  end
49
42
 
50
- def detect_and_report(node, message_section, method_name)
43
+ def detect_and_report(_node, message_section, method_name)
51
44
  errors = how_bad_is_it(message_section)
52
45
  return if errors.empty?
53
46
  error_message = "'#{method_name}' function, "
@@ -68,7 +61,7 @@ module RuboCop
68
61
  errors.push :multiline if message_section.multiline?
69
62
  errors.push :concatenation if concatenation_offense?(message_section)
70
63
  errors.push :interpolation if interpolation_offense?(message_section)
71
- errors.push :no_decoration if !already_decorated?(message_section)
64
+ errors.push :no_decoration unless already_decorated?(message_section)
72
65
 
73
66
  # only display no_decoration, if that is the only problem.
74
67
  if errors.size > 1 && errors.include?(:no_decoration)
@@ -92,7 +85,7 @@ module RuboCop
92
85
  def interpolation_offense?(node, parent = nil)
93
86
  parent ||= node
94
87
 
95
- return true if node.class == RuboCop::AST::Node && node.dstr_type?
88
+ return true if node.class == RuboCop::AST::Node && node.dstr_type?
96
89
 
97
90
  return false unless node.respond_to?(:children)
98
91
 
@@ -103,52 +96,51 @@ module RuboCop
103
96
  if node.str_type?
104
97
  single_string_correct(node)
105
98
  elsif interpolation_offense?(node)
106
- # interpolation_correct(node)
99
+ # interpolation_correct(node)
107
100
  end
108
101
  end
109
102
 
110
103
  def single_string_correct(node)
111
- ->(corrector) {
112
- corrector.insert_before(node.source_range , "_(")
113
- corrector.insert_after(node.source_range , ")") }
104
+ lambda { |corrector|
105
+ corrector.insert_before(node.source_range, '_(')
106
+ corrector.insert_after(node.source_range, ')')
107
+ }
114
108
  end
115
109
 
116
110
  def interpolation_correct(node)
117
- interpolated_values_string = ""
111
+ interpolated_values_string = ''
118
112
  count = 0
119
- ->(corrector) {
113
+ lambda { |corrector|
120
114
  node.children.each do |child|
121
115
  # dstrs are split into "str" segments and other segments.
122
116
  # The "other" segments are the interpolated values.
123
- if child.type == :begin
124
- value = child.children[0]
125
- hash_key = "value"
126
- if value.type == :lvar
127
- # Use the variable's name as the format key
128
- hash_key = value.loc.name.source
129
- else
130
- # These are placeholders that will manually need to be given
131
- # a descriptive name
132
- hash_key << "#{count}"
133
- count += 1
134
- end
135
- if interpolated_values_string.empty?
136
- interpolated_values_string << "{ "
137
- end
138
- interpolated_values_string << "#{hash_key}: #{value.loc.expression.source}, "
139
-
140
- # Replace interpolation with format string
141
- corrector.replace(child.loc.expression, "%{#{hash_key}}")
117
+ next unless child.type == :begin
118
+ value = child.children[0]
119
+ hash_key = 'value'
120
+ if value.type == :lvar
121
+ # Use the variable's name as the format key
122
+ hash_key = value.loc.name.source
123
+ else
124
+ # These are placeholders that will manually need to be given
125
+ # a descriptive name
126
+ hash_key << count.to_s
127
+ count += 1
128
+ end
129
+ if interpolated_values_string.empty?
130
+ interpolated_values_string << '{ '
142
131
  end
132
+ interpolated_values_string << "#{hash_key}: #{value.loc.expression.source}, "
133
+
134
+ # Replace interpolation with format string
135
+ corrector.replace(child.loc.expression, "%{#{hash_key}}")
143
136
  end
144
- if !interpolated_values_string.empty?
145
- interpolated_values_string << "}"
137
+ unless interpolated_values_string.empty?
138
+ interpolated_values_string << '}'
146
139
  end
147
140
  corrector.insert_before(node.source_range, '_(')
148
141
  corrector.insert_after(node.source_range, ") % #{interpolated_values_string}")
149
142
  }
150
143
  end
151
-
152
144
  end
153
145
  end
154
146
  end
@@ -4,35 +4,70 @@ module RuboCop
4
4
  module Cop
5
5
  module I18n
6
6
  module GetText
7
- # This cop checks for butt or ass,
8
- # which is redundant.
7
+ # This cop is looks for strings that appear to be sentences but are not decorated.
8
+ # Sentences are determined by the STRING_REGEXP. (Upper case character, at least one space,
9
+ # and sentence punctuation at the end)
9
10
  #
10
11
  # @example
11
12
  #
12
13
  # # bad
13
14
  #
14
- # "result is #{something.to_s}"
15
+ # "Result is bad."
15
16
  #
16
17
  # @example
17
18
  #
18
19
  # # good
19
20
  #
20
- # "result is #{something}"
21
+ # _("Result is good.")
21
22
  class DecorateString < Cop
23
+ STRING_REGEXP = /^\s*[[:upper:]][[:alpha:]]*[[:blank:]]+.*[.!?]$/
24
+
25
+ def on_dstr(node)
26
+ check_for_parent_decorator(node) if dstr_contains_sentence?(node)
27
+ end
28
+
22
29
  def on_str(node)
23
- str = node.children[0]
24
- #ignore strings with no whitespace - are typically keywords or interpolation statements and cover the above commented-out statements
25
- if str !~ /^\S*$/
26
- add_offense(node, :expression, "decorator is missing around sentence") if node.loc.respond_to?(:begin)
30
+ return unless sentence?(node)
31
+
32
+ parent = node.parent
33
+ if parent.respond_to?(:type)
34
+ return if parent.type == :regexp || parent.type == :dstr
27
35
  end
36
+
37
+ check_for_parent_decorator(node)
28
38
  end
29
39
 
30
40
  private
31
41
 
32
- def message(node)
33
- node.receiver ? MSG_DEFAULT : MSG_SELF
42
+ def sentence?(node)
43
+ child = node.children[0]
44
+ if child.is_a?(String)
45
+ if child.valid_encoding?
46
+ child.encode(Encoding::UTF_8).chomp =~ STRING_REGEXP
47
+ else
48
+ false
49
+ end
50
+ elsif child.respond_to?(:type) && child.type == :str
51
+ sentence?(child)
52
+ else
53
+ false
54
+ end
55
+ end
56
+
57
+ def dstr_contains_sentence?(node)
58
+ node.children.any? { |child| sentence?(child) }
34
59
  end
35
60
 
61
+ def check_for_parent_decorator(node)
62
+ parent = node.parent
63
+ if parent.respond_to?(:type) && parent.type == :send
64
+ method_name = parent.loc.selector.source
65
+ return if GetText.supported_decorator?(method_name)
66
+ elsif parent.respond_to?(:method_name) && parent.method_name == :[]
67
+ return
68
+ end
69
+ add_offense(node, :expression, 'decorator is missing around sentence')
70
+ end
36
71
  end
37
72
  end
38
73
  end
@@ -3,8 +3,9 @@ module RuboCop
3
3
  module I18n
4
4
  module GetText
5
5
  # When using an decorated string to support I18N, any strings inside the decoration should not contain
6
- # the '#{}' interpolation string as this makes it hard to translate the strings. This cop checks the
7
- # decorators listed in SUPPORTED_DECORATORS
6
+ # the '#{}' interpolation string as this makes it hard to translate the strings.
7
+ #
8
+ # Check GetText.supported_decorators for a list of decorators that can be used.
8
9
  #
9
10
  # @example
10
11
  #
@@ -20,12 +21,9 @@ module RuboCop
20
21
  # _("result is %{detail}" % {detail: message})
21
22
  #
22
23
  class DecorateStringFormattingUsingInterpolation < Cop
23
-
24
- SUPPORTED_DECORATORS = ['_', 'n_', 'N_']
25
-
26
24
  def on_send(node)
27
25
  decorator_name = node.loc.selector.source
28
- return if !supported_decorator_name?(decorator_name)
26
+ return unless GetText.supported_decorator?(decorator_name)
29
27
  _, method_name, *arg_nodes = *node
30
28
  if !arg_nodes.empty? && contains_string_formatting_with_interpolation?(arg_nodes)
31
29
  message_section = arg_nodes[0]
@@ -35,10 +33,6 @@ module RuboCop
35
33
 
36
34
  private
37
35
 
38
- def supported_decorator_name?(decorator_name)
39
- SUPPORTED_DECORATORS.include?(decorator_name)
40
- end
41
-
42
36
  def string_contains_interpolation_format?(str)
43
37
  str.match(/\#{[^}]+}/)
44
38
  end
@@ -49,7 +43,7 @@ module RuboCop
49
43
  end
50
44
 
51
45
  if node.respond_to?(:type)
52
- if node.type == :str or node.type == :dstr
46
+ if node.type == :str || node.type == :dstr
53
47
  return string_contains_interpolation_format?(node.source)
54
48
  end
55
49
  end
@@ -57,9 +51,8 @@ module RuboCop
57
51
  if node.respond_to?(:children)
58
52
  return node.children.any? { |child| contains_string_formatting_with_interpolation?(child) }
59
53
  end
60
- return false
54
+ false
61
55
  end
62
-
63
56
  end
64
57
  end
65
58
  end
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module GetText
5
5
  # When using a decorated string to support I18N, any strings inside the decoration should not contain sprintf
6
6
  # style formatting as this makes it hard to translate the string. This cop checks the decorators listed in
7
- # SUPPORTED_DECORATORS and checks for each of the formats in SUPPORTED_FORMATS. NOTE: this cop does not
7
+ # GetText.supported_decorators and checks for each of the formats in SUPPORTED_FORMATS. NOTE: this cop does not
8
8
  # check for all possible sprintf formats.
9
9
  #
10
10
  # @example
@@ -22,13 +22,11 @@ module RuboCop
22
22
  # _("result is %{detail}" % {detail: message})
23
23
  #
24
24
  class DecorateStringFormattingUsingPercent < Cop
25
-
26
- SUPPORTED_DECORATORS = ['_', 'n_', 'N_']
27
- SUPPORTED_FORMATS = %w[b B d i o u x X e E f g G a A c p s]
25
+ SUPPORTED_FORMATS = %w[b B d i o u x X e E f g G a A c p s].freeze
28
26
 
29
27
  def on_send(node)
30
28
  decorator_name = node.loc.selector.source
31
- return if !supported_decorator_name?(decorator_name)
29
+ return unless GetText.supported_decorator?(decorator_name)
32
30
  _, method_name, *arg_nodes = *node
33
31
  if !arg_nodes.empty? && contains_string_with_percent_format?(arg_nodes)
34
32
  message_section = arg_nodes[0]
@@ -38,10 +36,6 @@ module RuboCop
38
36
 
39
37
  private
40
38
 
41
- def supported_decorator_name?(decorator_name)
42
- SUPPORTED_DECORATORS.include?(decorator_name)
43
- end
44
-
45
39
  def string_contains_percent_format?(str)
46
40
  SUPPORTED_FORMATS.any? { |format| str.match(/%([-+])?[0-9]*(\.[0-9]*)?#{format}/) }
47
41
  end
@@ -52,7 +46,7 @@ module RuboCop
52
46
  end
53
47
 
54
48
  if node.respond_to?(:type)
55
- if node.type == :str or node.type == :dstr
49
+ if node.type == :str || node.type == :dstr
56
50
  return string_contains_percent_format?(node.source)
57
51
  end
58
52
  end
@@ -62,7 +56,6 @@ module RuboCop
62
56
  end
63
57
  false
64
58
  end
65
-
66
59
  end
67
60
  end
68
61
  end
@@ -1,29 +1,32 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ rubocop_version = '~> 0.49.0'
4
6
 
5
7
  Gem::Specification.new do |spec|
6
- spec.name = "rubocop-i18n"
7
- spec.version = '1.1.0'
8
- spec.authors = ["Puppet", "Brandon High", "TP Honey", "Helen Campbell"]
9
- spec.email = ["team-modules@puppet.com", "brandon.high@puppet.com", "tp@puppet.com", "helen@puppet.com"]
8
+ spec.name = 'rubocop-i18n'
9
+ spec.version = '1.2.0'
10
+ spec.authors = ['Puppet', 'Brandon High', 'TP Honey', 'Helen Campbell']
11
+ spec.email = ['team-modules@puppet.com', 'brandon.high@puppet.com', 'tp@puppet.com', 'helen@puppet.com']
10
12
 
11
- spec.summary = %q{RuboCop rules for i18n}
12
- spec.description = %q{RuboCop rules for detecting and autocorrecting undecorated strings for i18n}
13
- spec.homepage = "https://github.com/puppetlabs/rubocop-i18n"
13
+ spec.summary = 'RuboCop rules for i18n'
14
+ spec.description = 'RuboCop rules for detecting and autocorrecting undecorated strings for i18n'
15
+ spec.homepage = 'https://github.com/puppetlabs/rubocop-i18n'
14
16
  spec.license = 'Apache-2'
15
17
 
16
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
19
  f.match(%r{^(test|spec|features)/})
18
20
  end
19
- spec.bindir = "exe"
21
+ spec.bindir = 'exe'
20
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
23
+ spec.require_paths = ['lib']
22
24
 
23
- spec.add_development_dependency "bundler", "~> 1.14"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
26
- spec.add_development_dependency "rb-readline"
27
- spec.add_development_dependency "pry"
28
- spec.add_runtime_dependency "rubocop", "~> 0.49"
25
+ spec.add_development_dependency 'bundler', '~> 1.14'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ spec.add_development_dependency 'rb-readline'
29
+ spec.add_development_dependency 'pry'
30
+ spec.add_development_dependency 'rubocop', rubocop_version
31
+ spec.add_runtime_dependency 'rubocop', rubocop_version
29
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2017-10-13 00:00:00.000000000 Z
14
+ date: 2017-10-17 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -89,14 +89,28 @@ dependencies:
89
89
  requirements:
90
90
  - - "~>"
91
91
  - !ruby/object:Gem::Version
92
- version: '0.49'
92
+ version: 0.49.0
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 0.49.0
100
+ - !ruby/object:Gem::Dependency
101
+ name: rubocop
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: 0.49.0
93
107
  type: :runtime
94
108
  prerelease: false
95
109
  version_requirements: !ruby/object:Gem::Requirement
96
110
  requirements:
97
111
  - - "~>"
98
112
  - !ruby/object:Gem::Version
99
- version: '0.49'
113
+ version: 0.49.0
100
114
  description: RuboCop rules for detecting and autocorrecting undecorated strings for
101
115
  i18n
102
116
  email:
@@ -109,6 +123,8 @@ extensions: []
109
123
  extra_rdoc_files: []
110
124
  files:
111
125
  - ".gitignore"
126
+ - ".rubocop.yml"
127
+ - ".rubocop_todo.yml"
112
128
  - ".travis.yml"
113
129
  - CHANGELOG.md
114
130
  - CODE_OF_CONDUCT.md