lib/rouge/lexers/diff.rb in rouge-1.8.0 vs lib/rouge/lexers/diff.rb in rouge-1.9.0
- old
+ new
@@ -1,41 +1,34 @@
-# -*- coding: utf-8 -*- #
-
module Rouge
module Lexers
class Diff < RegexLexer
- title "diff"
- desc "Lexes unified diffs or patches"
+ 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 ')
+ # TODO: Have a look at pygments here, seems better
return 0.9 if text =~ /\A---.*?\n\+\+\+/m
end
- state :header do
- rule /^diff .*?\n(?=---|\+\+\+)/m, Generic::Heading
- rule /^--- .*?\n/, Generic::Deleted
- rule /^\+\+\+ .*?\n/, Generic::Inserted
- end
-
- state :diff do
- rule /@@ -\d+,\d+ \+\d+,\d+ @@.*?\n/, Generic::Heading
- rule /^\+.*?\n/, Generic::Inserted
- rule /^-.*?\n/, Generic::Deleted
- rule /^ .*?\n/, Text
- rule /^.*?\n/, Error
- end
-
state :root do
- mixin :header
- mixin :diff
+ rule(/^ .*\n/, Text)
+ rule(/^\+.*\n/, Generic::Inserted)
+ # Do not highlight the delimiter line
+ # before the diffstat in email patches.
+ 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