Sha256: a65794aa656e3579fc9d00d8fef4c92346929db899b031d8a9c11b8364197b40

Contents?: true

Size: 970 Bytes

Versions: 3

Compression:

Stored size: 970 Bytes

Contents

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 ')

        # TODO: Have a look at pygments here, seems better
        return 0.9 if text =~ /\A---.*?\n\+\+\+/m
      end

      state :root do
        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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rouge-1.10.0 lib/rouge/lexers/diff.rb
rouge-1.9.1 lib/rouge/lexers/diff.rb
rouge-1.9.0 lib/rouge/lexers/diff.rb