Class: Tailor::Rulers::SpacesAfterLparenRuler
Instance Attribute Summary
#lexer_observers
Instance Method Summary
collapse
-
#check_spaces_after_lparen(lexed_line, lineno) ⇒ Object
-
#comment_update(token, lexed_line, _, lineno, column) ⇒ Object
-
#count_spaces(lexed_line, column) ⇒ Fixnum
Counts the number of spaces after the lparen.
-
#ignored_nl_update(lexed_line, lineno, _) ⇒ Object
-
#initialize(config, options) ⇒ SpacesAfterLparenRuler
constructor
A new instance of SpacesAfterLparenRuler.
-
#lparen_update(_, column) ⇒ Object
-
#measure(actual_spaces, lineno, column) ⇒ Object
Checks to see if the number of spaces after an lparen equals the value at @config.
-
#nl_update(lexed_line, lineno, column) ⇒ Object
#add_child_ruler, #problem_type, #problems
included
Constructor Details
Returns a new instance of SpacesAfterLparenRuler.
6
7
8
9
10
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 6
def initialize(config, options)
super(config, options)
add_lexer_observers :comment, :ignored_nl, :lparen, :nl
@lparen_columns = []
end
|
Instance Method Details
#check_spaces_after_lparen(lexed_line, lineno) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 47
def check_spaces_after_lparen(lexed_line, lineno)
unless @lparen_columns.empty?
log "lparens found at: #{@lparen_columns}"
end
@lparen_columns.each do |column|
actual_spaces = count_spaces(lexed_line, column)
next if actual_spaces.nil?
if !@do_measurement
log 'Skipping measurement.'
else
measure(actual_spaces, lineno, column)
end
@do_measurement = true
end
@lparen_columns.clear
end
|
12
13
14
15
16
17
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 12
def (token, lexed_line, _, lineno, column)
if token =~ /\n$/
log 'Found comment with trailing newline.'
ignored_nl_update(lexed_line, lineno, column)
end
end
|
#count_spaces(lexed_line, column) ⇒ Fixnum
Counts the number of spaces after the lparen.
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 74
def count_spaces(lexed_line, column)
event_index = lexed_line.event_index(column)
if event_index.nil?
log 'No lparen in this line. Moving on...'
@do_measurement = false
return
end
next_event = lexed_line.at(event_index + 1)
log "Next event: #{next_event}"
if next_event.nil?
log 'lparen must be at the end of the line.'
@do_measurement = false
return 0
end
[:on_nl, :on_ignored_nl].each do |event|
if next_event[1] == event
log "lparen is followed by a '#{event}'. Moving on."
return 0
end
end
if next_event[1] == :on_rparen
log 'lparen is followed by an rparen. Moving on.'
@do_measurement = false
return 0
end
second_next_event = lexed_line.at(event_index + 2)
log "Event + 2: #{second_next_event}"
[:on_comment, :on_lbrace, :on_lparen].each do |event|
if second_next_event[1] == event
log "Event + 2 is a #{event}. Moving on."
@do_measurement = false
return next_event.last.size
end
end
next_event[1] != :on_sp ? 0 : next_event.last.size
end
|
#ignored_nl_update(lexed_line, lineno, _) ⇒ Object
19
20
21
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 19
def ignored_nl_update(lexed_line, lineno, _)
check_spaces_after_lparen(lexed_line, lineno)
end
|
#lparen_update(_, column) ⇒ Object
23
24
25
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 23
def lparen_update(_, column)
@lparen_columns << column
end
|
#measure(actual_spaces, lineno, column) ⇒ Object
Checks to see if the number of spaces after an lparen equals the value at @config.
37
38
39
40
41
42
43
44
45
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 37
def measure(actual_spaces, lineno, column)
if actual_spaces != @config
msg = "Line has #{actual_spaces} space(s) after a (, "
msg << "but should have #{@config}."
@problems << Problem.new(problem_type, lineno, column + 1, msg,
@options[:level])
end
end
|
#nl_update(lexed_line, lineno, column) ⇒ Object
27
28
29
|
# File 'lib/tailor/rulers/spaces_after_lparen_ruler.rb', line 27
def nl_update(lexed_line, lineno, column)
ignored_nl_update(lexed_line, lineno, column)
end
|