6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/seeing_is_believing/binary/rewrite_comments.rb', line 6
def self.call(code, &mapping)
buffer, parser, rewriter = ParserHelpers.initialize_parser code, 'rewrite_comments'
ast, = parser. buffer
.each do ||
next unless .type == :inline
last_char = .location.expression.begin_pos
first_char = last_char
first_char -= 1 while first_char > 0 && buffer.source[first_char-1] =~ /[ \t]/
preceeding_whitespace = buffer.source[first_char...last_char]
preceeding_whitespace_range = Parser::Source::Range.new buffer, first_char, last_char
last_char = first_char
first_char -= 1 while first_char > 0 && buffer.source[first_char-1] !~ /[\r\n]/
line = buffer.source[first_char...last_char]
new_whitespace, = mapping.call(.location.line,
line,
preceeding_whitespace,
.text)
rewriter.replace preceeding_whitespace_range, new_whitespace
rewriter.replace .location.expression,
end
rewriter.process
end
|