lib/rouge/lexers/julia.rb in rouge-3.20.0 vs lib/rouge/lexers/julia.rb in rouge-3.21.0
- old
+ new
@@ -9,10 +9,12 @@
tag 'julia'
aliases 'jl'
filenames '*.jl'
mimetypes 'text/x-julia', 'application/x-julia'
+ # Documentation: https://docs.julialang.org/en/v1/manual/variables/#Allowed-Variable-Names-1
+
def self.detect?(text)
return true if text.shebang? 'julia'
end
BUILTINS = /\b(?:
@@ -250,16 +252,16 @@
rule %r/\d+/, Literal::Number::Integer
end
state :funcname do
- rule %r/[a-zA-Z_]\w*/, Name::Function, :pop!
+ rule %r/[\p{L}\p{Nl}\p{S}_][\p{Word}\p{S}\p{Po}!]*/, Name::Function, :pop!
rule %r/\([^\s\w{]{1,2}\)/, Operator, :pop!
rule %r/[^\s\w{]{1,2}/, Operator, :pop!
end
state :typename do
- rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
+ rule %r/[\p{L}\p{Nl}\p{S}_][\p{Word}\p{S}\p{Po}!]*/, Name::Class, :pop!
end
state :stringescape do
rule %r/\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/,
Literal::String::Escape