def process_line line
return line unless @process_lines
if line.empty?
@look_ahead += 1
return ''
end
if line.end_with?(']') && !line.start_with?('[') && line.include?('::')
if line.include?('if') && (match = ConditionalDirectiveRx.match(line))
if line.start_with?('\\')
@unescape_next_line = true
@look_ahead += 1
line[1..-1]
else
if preprocess_conditional_inclusion(*match.captures)
advance
nil
else
@look_ahead += 1
line
end
end
elsif @skipping
advance
nil
elsif ((escaped = line.start_with?('\\include::')) || line.start_with?('include::')) && (match = IncludeDirectiveRx.match(line))
if escaped
@unescape_next_line = true
@look_ahead += 1
line[1..-1]
else
if preprocess_include match[1], match[2].strip
nil
else
@look_ahead += 1
line
end
end
else
@look_ahead += 1
line
end
elsif @skipping
advance
nil
else
@look_ahead += 1
line
end
end