nicojensen.de/vendor/bundle/gems/rouge-3.3.0/lib/rouge/lexers/diff.rb
Nico Jensen b59a203dbb Init
Init commit
2019-03-12 13:49:49 +01:00

33 lines
923 B
Ruby

# frozen_string_literal: true
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.detect?(text)
return true if text.start_with?('Index: ')
return true if text =~ %r(\Adiff[^\n]*?\ba/[^\n]*\bb/)
return true if text =~ /(---|[+][+][+]).*?\n(---|[+][+][+])/
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