/usr/share/highlight/langDefs/ruby.lang is in highlight-common 3.18-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | Description="Ruby"
Identifiers=[[ [a-zA-Z_][\w\-]* ]]
Digits=[[ (?:0x|0X|0b)[0-9a-fA-F]+|\d*[\.\_]?\d+(?:[eE][\-\+]\d+)?[lLuU]? ]]
Keywords={
{ Id=1,
List={"alias", "and", "begin", "begin", "break", "case", "class", "def", "defined", "loop", "do", "else", "elsif", "end", "end", "ensure", "false", "for", "if", "in", "module", "next", "nil", "not", "or", "redo", "rescue", "retry", "return", "require", "self", "super", "then", "true", "", "undef", "unless", "", "until", "when", "while", "yield", "true", "false", "nil", "stdin", "stdout", "stderr", "env", "argf", "argv", "data", "version", "ruby-release-date", "ruby-platform", "include", "extend", "eval"},
},
{ Id=3,
List = {"TRUE","FALSE","NIL","STDIN","STDOUT","STDERR","ENV","ARGF","ARGV","DATA","RUBY_VERSION","RUBY_RELEASE_DATE","RUBY_PLATFORM"}
},
{ Id=2,
Regex=[[[\$\@][\/\w]+]],
},
{ Id=3,
Regex=[[m?\/.*?\/|(s|tr)\/.*?\/.*?\/[cegimosx]*]],
Group=0,
},
{ Id=3,
Regex=[[\:\w+]],
},
{ Id=4,
Regex=[[(\w+)\s*\(]],
},
}
-- hereDoc opening delimiter, see OnStateChange to handle end of string
Strings={
Delimiter=[["|'|`|<<[\-"'`]?[\w_]+["'`]?]],
Interpolation = [[ \{[^}]*\} ]],
DelimiterPairs= {
{ Open=[[%q\(]], Close=[[\)]] },
{ Open=[[%Q\(]], Close=[[\)]] },
{ Open=[[%\(]], Close=[[\)]] },
{ Open=[[%x\(]], Close=[[\)]] },
}
}
IgnoreCase=false
Comments={
{ Block=false,
Delimiter= { [[#]] },
},
{ Block=true,
Nested=false,
Delimiter= { [[\=begin]],[[\=end]] }
}
}
Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\.|\&|<|>|\!|\-|\+|\/|\*|\=|\?|\%|\|]]
-- resolve issue with # which starts comments and extrapolation sequences in strings
function OnStateChange(oldState, newState, token)
if string.sub(token,1,1)=="#" and oldState==HL_STRING then
return HL_INTERPOLATION
end
if token==")" and oldState~=HL_STRING then
return HL_OPERATOR
end
--recognize hereDoc multine strings
--do not clear hereDoc if token is ",' or `
if (oldState==HL_STANDARD or oldState==HL_STRING) and newState==HL_STRING and not string.find("\"'`", token) then
hereDoc = string.match(token, "<<[%-\"'`]?([%a_]+)" )
end
if oldState==HL_STRING and token==hereDoc then
hereDoc = nil
return HL_STRING_END
end
return newState
end
|