blob: ba23a7130b0f8e26b7b3a757d6b27f5e96f2b75e [file] [log] [blame]
module Rouge
module Lexers
class Diff < RegexLexer
title 'diff'
desc 'Lexes unified diffs or patches'
tag 'diff'
aliases 'patch', 'udiff'
filenames '*.diff', '*.patch'
mimetypes 'text/x-diff', 'text/x-patch'
def self.analyze_text(text)
return 1 if text.start_with?('Index: ')
return 1 if text.start_with?('diff ')
return 0.9 if text.start_with?('--- ')
end
state :root do
rule(/^ .*$\n?/, Text)
rule(/^---$\n?/, Text)
rule(/^\+.*$\n?/, Generic::Inserted)
rule(/^-+.*$\n?/, Generic::Deleted)
rule(/^!.*$\n?/, Generic::Strong)
rule(/^@.*$\n?/, Generic::Subheading)
rule(/^([Ii]ndex|diff).*$\n?/, Generic::Heading)
rule(/^=.*$\n?/, Generic::Heading)
rule(/.*$\n?/, Text)
end
end
end
end