35 lines
804 B
Ruby
35 lines
804 B
Ruby
# -*- coding: utf-8 -*- #
|
|
# frozen_string_literal: true
|
|
|
|
module Rouge
|
|
module Lexers
|
|
class SystemD < RegexLexer
|
|
tag 'systemd'
|
|
aliases 'unit-file'
|
|
filenames '*.service'
|
|
mimetypes 'text/x-systemd-unit'
|
|
desc 'A lexer for systemd unit files'
|
|
|
|
state :root do
|
|
rule %r/\s+/, Text
|
|
rule %r/[;#].*/, Comment
|
|
rule %r/\[.*?\]$/, Keyword
|
|
rule %r/(.*?)(=)(.*)(\\\n)/ do
|
|
groups Name::Tag, Punctuation, Text, Str::Escape
|
|
push :continuation
|
|
end
|
|
rule %r/(.*?)(=)(.*)/ do
|
|
groups Name::Tag, Punctuation, Text
|
|
end
|
|
end
|
|
|
|
state :continuation do
|
|
rule %r/(.*?)(\\\n)/ do
|
|
groups Text, Str::Escape
|
|
end
|
|
rule %r/(.*)'?/, Text, :pop!
|
|
end
|
|
end
|
|
end
|
|
end
|