14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/slim/embedded/minify/javascript.rb', line 14
def (line)
need_deletion = false
need_deletion_all = false
escaped = false
escaped_backslash = false
inside_char = nil
line[-1] = line.last.chars.each_with_index.map do |char, index|
next if need_deletion_all
if char == "/" && next_char(line, index) == "*" && inside_char.nil?
if remaining_string_range(line, index).include?("*/")
need_deletion = true
next
end
elsif char == "/" && prev_char(line, index) == "*" && inside_char.nil? && need_deletion
need_deletion = false
next
elsif char == "/" && next_char(line, index) == "/" && inside_char.nil? && !need_deletion
need_deletion_all = true
next
elsif char == "\\" && next_char(line, index) == "\\" && inside_char
escaped_backslash = true
next char
elsif char == "\\"
if ["'", '"'].include?(next_char(line, index)) && inside_char == next_char(line, index) && !escaped_backslash
escaped = true
end
escaped_backslash = false
next char
elsif ["'", '"'].include?(char) && !need_deletion
if inside_char == char
inside_char = nil unless escaped
escaped = false
next char
end
inside_char = char if inside_char.nil?
end
char if !need_deletion || inside_char
end&.compact&.join
end
|