This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# -*- coding: utf-8 -*- #
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Rouge
|
||||
module Lexers
|
||||
class Fluent < RegexLexer
|
||||
title 'Fluent'
|
||||
desc 'Fluent localization files'
|
||||
tag 'fluent'
|
||||
aliases 'ftl'
|
||||
filenames '*.ftl'
|
||||
|
||||
state :root do
|
||||
rule %r{( *)(\=)( *)} do
|
||||
groups Text::Whitespace, Punctuation, Text::Whitespace
|
||||
push :template
|
||||
end
|
||||
|
||||
rule %r{(?:\s*\n)+}m, Text::Whitespace
|
||||
rule %r{\#{1,3}(?: .*)?$}, Comment::Single
|
||||
rule %r{[a-zA-Z][a-zA-Z0-9_-]*}, Name::Constant
|
||||
rule %r{\-[a-zA-Z][a-zA-Z0-9_-]*}, Name::Entity
|
||||
rule %r{\s*\.[a-zA-Z][a-zA-Z0-9_-]*}, Name::Attribute
|
||||
rule %r{\s+(?=[^\s\.])}, Text::Whitespace, :template
|
||||
end
|
||||
|
||||
state :template do
|
||||
rule %r{\n}m, Text::Whitespace, :pop!
|
||||
rule %r{[^\{\n\}\*]+}, Text
|
||||
rule %r{\{}, Punctuation, :placeable
|
||||
rule %r{(?=\})}, Punctuation, :pop!
|
||||
end
|
||||
|
||||
state :placeable do
|
||||
rule %r{\s+}m, Text::Whitespace
|
||||
rule %r{\{}, Punctuation, :placeable
|
||||
rule %r{\}}, Punctuation, :pop!
|
||||
rule %r{\$[a-zA-Z][a-zA-Z0-9_-]*}, Name::Variable
|
||||
rule %r{\-[a-zA-Z][a-zA-Z0-9_-]*}, Name::Entity
|
||||
rule %r{\.[a-zA-Z][a-zA-Z0-9_-]*}, Name::Attribute
|
||||
rule %r{[A-Z]+}, Name::Builtin
|
||||
rule %r{[a-zA-Z][a-zA-Z0-9_-]*}, Name::Constant
|
||||
rule %r{[\(\),\:]}, Punctuation
|
||||
rule %r{->}, Punctuation
|
||||
rule %r{\*}, Punctuation::Indicator
|
||||
rule %r{\-?\d+\.\d+?}, Literal::Number::Float
|
||||
rule %r{\-?\d+}, Literal::Number::Integer
|
||||
rule %r{"}, Str::Double, :string
|
||||
|
||||
rule %r{(\[)(\-?\d+\.\d+)(\])} do
|
||||
groups Punctuation, Literal::Number::Float, Punctuation
|
||||
push :template
|
||||
end
|
||||
|
||||
rule %r{(\[)(\-?\d+)(\])} do
|
||||
groups Punctuation, Literal::Number::Integer, Punctuation
|
||||
push :template
|
||||
end
|
||||
|
||||
rule %r{(\[)([a-zA-Z][a-zA-Z0-9_-]+)(\])} do
|
||||
groups Punctuation, Str::Symbol, Punctuation
|
||||
push :template
|
||||
end
|
||||
end
|
||||
|
||||
state :string do
|
||||
rule %r{\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{6}}, Str::Escape
|
||||
rule %r{\\.}, Str::Escape
|
||||
rule %r{[^\"\\]}, Str::Double
|
||||
rule %r{"}, Str::Double, :pop!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user