tailor 1.3.1 → 1.4.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/.travis.yml +1 -0
- data/Gemfile.lock +27 -25
- data/History.md +36 -0
- data/README.md +10 -4
- data/Rakefile +6 -6
- data/features/support/env.rb +2 -2
- data/features/support/legacy/bad_ternary_colon_spacing.rb +1 -1
- data/features/support/legacy/long_file_with_indentation.rb +2 -2
- data/features/support/world.rb +1 -1
- data/features/valid_ruby.feature +1 -1
- data/lib/tailor/cli/options.rb +19 -1
- data/lib/tailor/configuration.rb +2 -2
- data/lib/tailor/configuration/style.rb +6 -0
- data/lib/tailor/lexed_line.rb +2 -2
- data/lib/tailor/lexer/lexer_constants.rb +1 -0
- data/lib/tailor/lexer/token.rb +2 -2
- data/lib/tailor/logger.rb +2 -2
- data/lib/tailor/rake_task.rb +2 -2
- data/lib/tailor/ruler.rb +0 -1
- data/lib/tailor/rulers/allow_camel_case_methods_ruler.rb +0 -1
- data/lib/tailor/rulers/allow_conditional_parentheses.rb +65 -0
- data/lib/tailor/rulers/allow_unnecessary_double_quotes_ruler.rb +61 -0
- data/lib/tailor/rulers/allow_unnecessary_interpolation_ruler.rb +87 -0
- data/lib/tailor/rulers/indentation_spaces_ruler.rb +40 -50
- data/lib/tailor/rulers/indentation_spaces_ruler/argument_alignment.rb +63 -0
- data/lib/tailor/rulers/indentation_spaces_ruler/ast_xml.rb +89 -0
- data/lib/tailor/rulers/indentation_spaces_ruler/indentation_manager.rb +2 -14
- data/lib/tailor/rulers/indentation_spaces_ruler/line_continuations.rb +58 -0
- data/lib/tailor/rulers/max_code_lines_in_class_ruler.rb +3 -3
- data/lib/tailor/rulers/max_code_lines_in_method_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_after_comma_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_after_conditional_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_after_lbrace_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_after_lbracket_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_after_lparen_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_before_comma_ruler.rb +3 -3
- data/lib/tailor/rulers/spaces_before_rbrace_ruler.rb +2 -2
- data/lib/tailor/rulers/spaces_in_empty_braces_ruler.rb +2 -2
- data/lib/tailor/tailorrc.erb +28 -0
- data/lib/tailor/version.rb +1 -1
- data/spec/functional/conditional_parentheses_spec.rb +325 -0
- data/spec/functional/conditional_spacing_spec.rb +66 -42
- data/spec/functional/configuration_spec.rb +1 -1
- data/spec/functional/horizontal_spacing/braces_spec.rb +10 -9
- data/spec/functional/horizontal_spacing/hard_tabs_spec.rb +4 -4
- data/spec/functional/horizontal_spacing_spec.rb +5 -5
- data/spec/functional/indentation_spacing/argument_alignment_spec.rb +511 -0
- data/spec/functional/indentation_spacing/line_continuations_spec.rb +181 -0
- data/spec/functional/indentation_spacing_spec.rb +17 -0
- data/spec/functional/string_interpolation_spec.rb +117 -0
- data/spec/functional/string_quoting_spec.rb +97 -0
- data/spec/functional/vertical_spacing/class_length_spec.rb +1 -1
- data/spec/spec_helper.rb +8 -2
- data/spec/support/argument_alignment_cases.rb +93 -0
- data/spec/support/bad_indentation_cases.rb +20 -20
- data/spec/support/conditional_parentheses_cases.rb +60 -0
- data/spec/support/good_indentation_cases.rb +31 -31
- data/spec/support/horizontal_spacing_cases.rb +1 -1
- data/spec/support/line_indentation_cases.rb +71 -0
- data/spec/support/string_interpolation_cases.rb +45 -0
- data/spec/support/string_quoting_cases.rb +25 -0
- data/spec/unit/tailor/configuration/file_set_spec.rb +3 -3
- data/spec/unit/tailor/configuration/style_spec.rb +24 -21
- data/spec/unit/tailor/configuration_spec.rb +4 -1
- data/spec/unit/tailor/formatter_spec.rb +10 -10
- data/spec/unit/tailor/reporter_spec.rb +0 -1
- data/spec/unit/tailor/rulers/indentation_spaces_ruler/indentation_manager_spec.rb +0 -11
- data/spec/unit/tailor/rulers/indentation_spaces_ruler_spec.rb +1 -1
- data/spec/unit/tailor/version_spec.rb +1 -1
- data/tailor.gemspec +1 -0
- metadata +72 -33
- data/.infinity_test +0 -4
@@ -0,0 +1,89 @@
|
|
1
|
+
class Tailor
|
2
|
+
module Rulers
|
3
|
+
class IndentationSpacesRuler < Tailor::Ruler
|
4
|
+
|
5
|
+
# XXX: Reproducing the ast querying functions from foodcritic here. We
|
6
|
+
# either need to re-implement the queries not to rely on these functions
|
7
|
+
# or extract these functions to a shared gem.
|
8
|
+
module AstXml
|
9
|
+
|
10
|
+
def xml_array_node(doc, xml_node, child)
|
11
|
+
n = xml_create_node(doc, child)
|
12
|
+
xml_node.add_child(build_xml(child, doc, n))
|
13
|
+
end
|
14
|
+
|
15
|
+
def xml_create_node(doc, c)
|
16
|
+
Nokogiri::XML::Node.new(c.first.to_s.gsub(/[^a-z_]/, ''), doc)
|
17
|
+
end
|
18
|
+
|
19
|
+
def xml_document(doc, xml_node)
|
20
|
+
if doc.nil?
|
21
|
+
doc = Nokogiri::XML('<opt></opt>')
|
22
|
+
xml_node = doc.root
|
23
|
+
end
|
24
|
+
[doc, xml_node]
|
25
|
+
end
|
26
|
+
|
27
|
+
def xml_hash_node(doc, xml_node, child)
|
28
|
+
child.each do |c|
|
29
|
+
n = xml_create_node(doc, c)
|
30
|
+
c.drop(1).each do |a|
|
31
|
+
xml_node.add_child(build_xml(a, doc, n))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def xml_position_node(doc, xml_node, child)
|
37
|
+
pos = Nokogiri::XML::Node.new('pos', doc)
|
38
|
+
pos['line'] = child.first.to_s
|
39
|
+
pos['column'] = child[1].to_s
|
40
|
+
xml_node.add_child(pos)
|
41
|
+
end
|
42
|
+
|
43
|
+
def ast_hash_node?(node)
|
44
|
+
node.first.respond_to?(:first) and node.first.first == :assoc_new
|
45
|
+
end
|
46
|
+
|
47
|
+
def ast_node_has_children?(node)
|
48
|
+
node.respond_to?(:first) and ! node.respond_to?(:match)
|
49
|
+
end
|
50
|
+
|
51
|
+
# If the provided node is the line / column information.
|
52
|
+
def position_node?(node)
|
53
|
+
node.respond_to?(:length) and node.length == 2 and
|
54
|
+
node.respond_to?(:all?) and node.all? do |child|
|
55
|
+
child.respond_to?(:to_i)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def build_xml(node, doc = nil, xml_node=nil)
|
60
|
+
doc, xml_node = xml_document(doc, xml_node)
|
61
|
+
|
62
|
+
if node.respond_to?(:each)
|
63
|
+
# First child is the node name
|
64
|
+
node.drop(1) if node.first.is_a?(Symbol)
|
65
|
+
node.each do |child|
|
66
|
+
if position_node?(child)
|
67
|
+
xml_position_node(doc, xml_node, child)
|
68
|
+
else
|
69
|
+
if ast_node_has_children?(child)
|
70
|
+
# The AST structure is different for hashes so we have to treat
|
71
|
+
# them separately.
|
72
|
+
if ast_hash_node?(child)
|
73
|
+
xml_hash_node(doc, xml_node, child)
|
74
|
+
else
|
75
|
+
xml_array_node(doc, xml_node, child)
|
76
|
+
end
|
77
|
+
else
|
78
|
+
xml_node['value'] = child.to_s unless child.nil?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
xml_node
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -33,9 +33,6 @@ class Tailor
|
|
33
33
|
on_rparen: :on_lparen
|
34
34
|
}
|
35
35
|
|
36
|
-
# Allows for updating the indent expectation for the current line.
|
37
|
-
attr_accessor :amount_to_change_this
|
38
|
-
|
39
36
|
# @return [Fixnum] The actual number of characters the current line is
|
40
37
|
# indented.
|
41
38
|
attr_reader :actual_indentation
|
@@ -52,7 +49,6 @@ class Tailor
|
|
52
49
|
@proper = { this_line: 0, next_line: 0 }
|
53
50
|
@actual_indentation = 0
|
54
51
|
@indent_reasons = []
|
55
|
-
@amount_to_change_this = 0
|
56
52
|
|
57
53
|
start
|
58
54
|
end
|
@@ -79,20 +75,12 @@ class Tailor
|
|
79
75
|
end
|
80
76
|
end
|
81
77
|
|
82
|
-
# Sets up expectations in +@proper+ based on the number of +/- reasons
|
83
|
-
# to change this and next lines, given in +@amount_to_change_this+.
|
84
|
-
def set_up_line_transition
|
85
|
-
log "Amount to change this line: #{@amount_to_change_this}"
|
86
|
-
decrease_this_line if @amount_to_change_this < 0
|
87
|
-
end
|
88
|
-
|
89
78
|
# Should be called just before moving to the next line. This sets the
|
90
79
|
# expectation set in +@proper[:next_line]+ to
|
91
80
|
# +@proper[:this_line]+.
|
92
81
|
def transition_lines
|
93
82
|
if started?
|
94
83
|
log 'Resetting change_this to 0.'
|
95
|
-
@amount_to_change_this = 0
|
96
84
|
log 'Setting @proper[:this_line] = that of :next_line'
|
97
85
|
@proper[:this_line] = @proper[:next_line]
|
98
86
|
log "Transitioning @proper[:this_line] to #{@proper[:this_line]}"
|
@@ -286,10 +274,10 @@ class Tailor
|
|
286
274
|
|
287
275
|
log "Updated :next after closing; it's now #{@proper[:next_line]}"
|
288
276
|
|
289
|
-
meth = "only_#{event_type.to_s.sub(
|
277
|
+
meth = "only_#{event_type.to_s.sub(/^on_/, '')}?"
|
290
278
|
|
291
279
|
if lexed_line.send(meth.to_sym) || lexed_line.to_s =~ /^\s*end\n?$/
|
292
|
-
@proper[:this_line] = @proper[:this_line] - @spaces
|
280
|
+
@proper[:this_line] = [0, @proper[:this_line] - @spaces].max
|
293
281
|
msg = 'End multi-line statement. '
|
294
282
|
msg < "change_this -= 1 -> #{@proper[:this_line]}."
|
295
283
|
log msg
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'ripper'
|
2
|
+
require_relative './ast_xml'
|
3
|
+
|
4
|
+
class Tailor
|
5
|
+
module Rulers
|
6
|
+
class IndentationSpacesRuler < Tailor::Ruler
|
7
|
+
|
8
|
+
# Determines whether a line is a continuation of previous lines. For ease
|
9
|
+
# of implementation we use the s-exp support in Ripper, rather than trying
|
10
|
+
# to work it out solely from the token events on the ruler.
|
11
|
+
class LineContinuations
|
12
|
+
|
13
|
+
include AstXml
|
14
|
+
|
15
|
+
def initialize(file_name)
|
16
|
+
@ast = build_xml(Ripper::SexpBuilder.new(File.read(file_name)).parse)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Is the specified line actually a previous line continuing?
|
20
|
+
def line_is_continuation?(lineno)
|
21
|
+
@continuations ||= begin
|
22
|
+
statements = @ast.xpath('//stmts_add/*[
|
23
|
+
preceding-sibling::stmts_new | preceding-sibling::stmts_add]')
|
24
|
+
statements.reject do |stmt|
|
25
|
+
s = stmt.xpath('ancestor::stmts_add').size
|
26
|
+
stmt.xpath("descendant::pos[count(ancestor::stmts_add) = #{s}]/
|
27
|
+
@line").map { |s| s.to_s.to_i }.uniq.size < 2
|
28
|
+
end.reject { |stmt| stmt.name == 'case' }.map do |stmt|
|
29
|
+
lines_nesting = lines_with_nesting_level(stmt)
|
30
|
+
lines_nesting.shift
|
31
|
+
min_level = lines_nesting.values.min
|
32
|
+
lines_nesting.reject { |_, n| n > min_level }.keys
|
33
|
+
end.flatten
|
34
|
+
end
|
35
|
+
|
36
|
+
@continuations.include?(lineno)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Are there statements further nested below this line?
|
40
|
+
def line_has_nested_statements?(lineno)
|
41
|
+
@ast.xpath("//pos[@line='#{lineno}']/
|
42
|
+
ancestor::*[parent::stmts_add][1]/
|
43
|
+
descendant::stmts_add[descendant::pos[@line > #{lineno}]]").any?
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
# Returns a hash of line numbers => nesting level
|
49
|
+
def lines_with_nesting_level(node)
|
50
|
+
Hash[node.xpath('descendant::pos/@line').map do |ln|
|
51
|
+
[ln.to_s.to_i, ln.xpath('count(ancestor::stmts_add)').to_i]
|
52
|
+
end.sort.uniq]
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -4,7 +4,7 @@ require_relative '../lexer/lexer_constants'
|
|
4
4
|
class Tailor
|
5
5
|
module Rulers
|
6
6
|
class MaxCodeLinesInClassRuler < Tailor::Ruler
|
7
|
-
include LexerConstants
|
7
|
+
include Tailor::LexerConstants
|
8
8
|
|
9
9
|
def initialize(config, options)
|
10
10
|
super(config, options)
|
@@ -14,7 +14,7 @@ class Tailor
|
|
14
14
|
@end_last_class = false
|
15
15
|
end
|
16
16
|
|
17
|
-
def ignored_nl_update(lexed_line,
|
17
|
+
def ignored_nl_update(lexed_line, _, _)
|
18
18
|
return if @class_start_lines.empty?
|
19
19
|
return if lexed_line.only_spaces?
|
20
20
|
return if lexed_line.comment_line?
|
@@ -33,7 +33,7 @@ class Tailor
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
def kw_update(token,
|
36
|
+
def kw_update(token, _, lineno, column)
|
37
37
|
if token == 'class' || token == 'module'
|
38
38
|
@class_start_lines << { lineno: lineno, column: column, count: 0 }
|
39
39
|
log "Class start lines: #{@class_start_lines}"
|
@@ -4,7 +4,7 @@ require_relative '../lexer/lexer_constants'
|
|
4
4
|
class Tailor
|
5
5
|
module Rulers
|
6
6
|
class MaxCodeLinesInMethodRuler < Tailor::Ruler
|
7
|
-
include LexerConstants
|
7
|
+
include Tailor::LexerConstants
|
8
8
|
|
9
9
|
def initialize(config, options)
|
10
10
|
super(config, options)
|
@@ -14,7 +14,7 @@ class Tailor
|
|
14
14
|
@end_last_method = false
|
15
15
|
end
|
16
16
|
|
17
|
-
def ignored_nl_update(lexed_line,
|
17
|
+
def ignored_nl_update(lexed_line, _, _)
|
18
18
|
return if @method_start_lines.empty?
|
19
19
|
return if lexed_line.only_spaces?
|
20
20
|
return if lexed_line.comment_line?
|
@@ -33,7 +33,7 @@ class Tailor
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
def kw_update(token,
|
36
|
+
def kw_update(token, _, lineno, column)
|
37
37
|
if token == 'def'
|
38
38
|
@method_start_lines << { lineno: lineno, column: column, count: 0 }
|
39
39
|
log "Method start lines: #{@method_start_lines}"
|
@@ -14,18 +14,18 @@ class Tailor
|
|
14
14
|
@comma_columns = []
|
15
15
|
end
|
16
16
|
|
17
|
-
def comma_update(
|
17
|
+
def comma_update(_, _, column)
|
18
18
|
@comma_columns << column
|
19
19
|
end
|
20
20
|
|
21
|
-
def comment_update(token, lexed_line,
|
21
|
+
def comment_update(token, lexed_line, _, lineno, column)
|
22
22
|
if token =~ /\n$/
|
23
23
|
log 'Found comment with trailing newline.'
|
24
24
|
ignored_nl_update(lexed_line, lineno, column)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def ignored_nl_update(lexed_line, lineno,
|
28
|
+
def ignored_nl_update(lexed_line, lineno, _)
|
29
29
|
check_spaces_after_comma(lexed_line, lineno)
|
30
30
|
end
|
31
31
|
|
@@ -9,7 +9,7 @@ class Tailor
|
|
9
9
|
add_lexer_observers :nl
|
10
10
|
end
|
11
11
|
|
12
|
-
def nl_update(current_lexed_line, lineno,
|
12
|
+
def nl_update(current_lexed_line, lineno, _)
|
13
13
|
measure(current_lexed_line, lineno)
|
14
14
|
end
|
15
15
|
|
@@ -19,7 +19,7 @@ class Tailor
|
|
19
19
|
# @param [Fixnum] lineno Line the problem was found on.
|
20
20
|
def measure(lexed_line, lineno)
|
21
21
|
|
22
|
-
idx = lexed_line.index do |
|
22
|
+
idx = lexed_line.index do |_, token, name|
|
23
23
|
token == :on_kw and %w{if unless case}.include?(name)
|
24
24
|
end
|
25
25
|
|
@@ -28,7 +28,7 @@ class Tailor
|
|
28
28
|
|
29
29
|
if idx
|
30
30
|
column = lexed_line[idx].first.last
|
31
|
-
pos, token,
|
31
|
+
pos, token, _ = lexed_line[idx + 1]
|
32
32
|
spaces = case token
|
33
33
|
when :on_lparen then 0
|
34
34
|
when :on_sp
|
@@ -15,18 +15,18 @@ class Tailor
|
|
15
15
|
@lbrace_columns = []
|
16
16
|
end
|
17
17
|
|
18
|
-
def comment_update(token, lexed_line,
|
18
|
+
def comment_update(token, lexed_line, _, lineno, column)
|
19
19
|
if token =~ /\n$/
|
20
20
|
log 'Found comment with trailing newline.'
|
21
21
|
ignored_nl_update(lexed_line, lineno, column)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def ignored_nl_update(lexed_line, lineno,
|
25
|
+
def ignored_nl_update(lexed_line, lineno, _)
|
26
26
|
check_spaces_after_lbrace(lexed_line, lineno)
|
27
27
|
end
|
28
28
|
|
29
|
-
def lbrace_update(
|
29
|
+
def lbrace_update(_, _, column)
|
30
30
|
@lbrace_columns << column
|
31
31
|
end
|
32
32
|
|
@@ -15,18 +15,18 @@ class Tailor
|
|
15
15
|
@lbracket_columns = []
|
16
16
|
end
|
17
17
|
|
18
|
-
def comment_update(token, lexed_line,
|
18
|
+
def comment_update(token, lexed_line, _, lineno, column)
|
19
19
|
if token =~ /\n$/
|
20
20
|
log 'Found comment with trailing newline.'
|
21
21
|
ignored_nl_update(lexed_line, lineno, column)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def ignored_nl_update(lexed_line, lineno,
|
25
|
+
def ignored_nl_update(lexed_line, lineno, _)
|
26
26
|
check_spaces_after_lbracket(lexed_line, lineno)
|
27
27
|
end
|
28
28
|
|
29
|
-
def lbracket_update(
|
29
|
+
def lbracket_update(_, _, column)
|
30
30
|
@lbracket_columns << column
|
31
31
|
end
|
32
32
|
|
@@ -9,18 +9,18 @@ class Tailor
|
|
9
9
|
@lparen_columns = []
|
10
10
|
end
|
11
11
|
|
12
|
-
def comment_update(token, lexed_line,
|
12
|
+
def comment_update(token, lexed_line, _, lineno, column)
|
13
13
|
if token =~ /\n$/
|
14
14
|
log 'Found comment with trailing newline.'
|
15
15
|
ignored_nl_update(lexed_line, lineno, column)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
def ignored_nl_update(lexed_line, lineno,
|
19
|
+
def ignored_nl_update(lexed_line, lineno, _)
|
20
20
|
check_spaces_after_lparen(lexed_line, lineno)
|
21
21
|
end
|
22
22
|
|
23
|
-
def lparen_update(
|
23
|
+
def lparen_update(_, column)
|
24
24
|
@lparen_columns << column
|
25
25
|
end
|
26
26
|
|
@@ -11,11 +11,11 @@ class Tailor
|
|
11
11
|
@comma_columns = []
|
12
12
|
end
|
13
13
|
|
14
|
-
def comma_update(
|
14
|
+
def comma_update(_, _, column)
|
15
15
|
@comma_columns << column
|
16
16
|
end
|
17
17
|
|
18
|
-
def comment_update(token, lexed_line,
|
18
|
+
def comment_update(token, lexed_line, _, lineno, column)
|
19
19
|
if token =~ /\n$/
|
20
20
|
log 'Found comment with trailing newline.'
|
21
21
|
ignored_nl_update(lexed_line, lineno, column)
|
@@ -59,7 +59,7 @@ class Tailor
|
|
59
59
|
@comma_columns.clear
|
60
60
|
end
|
61
61
|
|
62
|
-
def ignored_nl_update(lexed_line, lineno,
|
62
|
+
def ignored_nl_update(lexed_line, lineno, _)
|
63
63
|
check_spaces_before_comma(lexed_line, lineno)
|
64
64
|
end
|
65
65
|
|
@@ -48,13 +48,13 @@ class Tailor
|
|
48
48
|
previous_event.last.size
|
49
49
|
end
|
50
50
|
|
51
|
-
def embexpr_beg_update(
|
51
|
+
def embexpr_beg_update(_, _, _)
|
52
52
|
if RUBY_VERSION < '2.0.0'
|
53
53
|
@lbrace_nesting << :embexpr_beg
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
def lbrace_update(
|
57
|
+
def lbrace_update(_, _, _)
|
58
58
|
@lbrace_nesting << :lbrace
|
59
59
|
end
|
60
60
|
|
@@ -40,11 +40,11 @@ class Tailor
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def embexpr_beg_update(
|
43
|
+
def embexpr_beg_update(_, _, _)
|
44
44
|
@lbrace_nesting << :embexpr_beg
|
45
45
|
end
|
46
46
|
|
47
|
-
def lbrace_update(
|
47
|
+
def lbrace_update(_, _, _)
|
48
48
|
@lbrace_nesting << :lbrace
|
49
49
|
end
|
50
50
|
|
data/lib/tailor/tailorrc.erb
CHANGED
@@ -12,6 +12,17 @@
|
|
12
12
|
# indentation_spaces The number of spaces to consider a proper indent.
|
13
13
|
# Default: 2
|
14
14
|
#
|
15
|
+
# Option: line_continuations
|
16
|
+
# Indicates that a statement that spans multiple lines
|
17
|
+
# should indent the second and subsequent lines. Ex.:
|
18
|
+
# style.indentation_spaces 2, level: :error, line_continuations: true
|
19
|
+
#
|
20
|
+
# Option: argument_align
|
21
|
+
# Allowing you to specify that method declarations and
|
22
|
+
# calls should indent to the first argument on
|
23
|
+
# subsequent lines. Ex.:
|
24
|
+
# style.indentation_spaces 2, level: :error, argument_alignment: true
|
25
|
+
#
|
15
26
|
# max_line_length The maximum number of characters in a line before
|
16
27
|
# tailor complains.
|
17
28
|
# Default: 80
|
@@ -79,6 +90,23 @@
|
|
79
90
|
# the file.
|
80
91
|
# Default: 1
|
81
92
|
#
|
93
|
+
#------------------------------------------------------------------------------
|
94
|
+
# Common Syntax
|
95
|
+
#------------------------------------------------------------------------------
|
96
|
+
# allow_conditional_parentheses
|
97
|
+
# Checks to see if a conditional is unnecessarily
|
98
|
+
# wrapped in parentheses.
|
99
|
+
# Default: true
|
100
|
+
#
|
101
|
+
# allow_unnecessary_double_quotes
|
102
|
+
# Checks for use of double-quotes when no interpolation
|
103
|
+
# is used.
|
104
|
+
# Default: false
|
105
|
+
#
|
106
|
+
# allow_unnecessary_interpolation
|
107
|
+
# Checks for unnecessary interpolation in strings.
|
108
|
+
# Default: false
|
109
|
+
#
|
82
110
|
Tailor.config do |config|
|
83
111
|
config.formatters "<%= formatters.join(', ') %>"
|
84
112
|
config.file_set '<%= file_list %>' do |style|<% style.each do |rule, value| %>
|