62 lines
1.8 KiB
Ruby
62 lines
1.8 KiB
Ruby
# -*- coding: utf-8 -*- #
|
|
# frozen_string_literal: true
|
|
|
|
module Rouge
|
|
module Lexers
|
|
class Turtle < RegexLexer
|
|
title "Turtle/TriG"
|
|
desc "Terse RDF Triple Language, TriG"
|
|
tag 'turtle'
|
|
filenames '*.ttl', '*.trig'
|
|
mimetypes 'text/turtle', 'application/trig'
|
|
|
|
state :root do
|
|
rule %r/@base\b/, Keyword::Declaration
|
|
rule %r/@prefix\b/, Keyword::Declaration
|
|
rule %r/true\b/, Keyword::Constant
|
|
rule %r/false\b/, Keyword::Constant
|
|
|
|
rule %r/""".*?"""/m, Literal::String
|
|
rule %r/"([^"\\]|\\.)*"/, Literal::String
|
|
rule %r/'''.*?'''/m, Literal::String
|
|
rule %r/'([^'\\]|\\.)*'/, Literal::String
|
|
|
|
rule %r/#.*$/, Comment::Single
|
|
|
|
rule %r/@[^\s,.;]+/, Name::Attribute
|
|
|
|
rule %r/[+-]?[0-9]+\.[0-9]*E[+-]?[0-9]+/, Literal::Number::Float
|
|
rule %r/[+-]?\.[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
|
|
rule %r/[+-]?[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
|
|
|
|
rule %r/[+-]?[0-9]*\.[0-9]+?/, Literal::Number::Float
|
|
|
|
rule %r/[+-]?[0-9]+/, Literal::Number::Integer
|
|
|
|
rule %r/\./, Punctuation
|
|
rule %r/,/, Punctuation
|
|
rule %r/;/, Punctuation
|
|
rule %r/\(/, Punctuation
|
|
rule %r/\)/, Punctuation
|
|
rule %r/\{/, Punctuation
|
|
rule %r/\}/, Punctuation
|
|
rule %r/\[/, Punctuation
|
|
rule %r/\]/, Punctuation
|
|
rule %r/\^\^/, Punctuation
|
|
|
|
rule %r/<[^>]*>/, Name::Label
|
|
|
|
rule %r/base\b/i, Keyword::Declaration
|
|
rule %r/prefix\b/i, Keyword::Declaration
|
|
rule %r/GRAPH\b/, Keyword
|
|
rule %r/a\b/, Keyword
|
|
|
|
rule %r/\s+/, Text::Whitespace
|
|
|
|
rule %r/[^:;<>#\@"\(\).\[\]\{\} ]+:/, Name::Namespace
|
|
rule %r/[^:;<>#\@"\(\).\[\]\{\} ]+/, Name
|
|
end
|
|
end
|
|
end
|
|
end
|