1
1
# encoding: utf-8
2
2
module CodeRay
3
3
module Scanners
4
-
4
+
5
5
module Ruby ::Patterns # :nodoc: all
6
-
6
+
7
7
KEYWORDS = %w[
8
8
and def end in or unless begin
9
9
defined? ensure module redo super until
@@ -12,7 +12,7 @@ module Ruby::Patterns # :nodoc: all
12
12
while alias class elsif if not return
13
13
undef yield
14
14
]
15
-
15
+
16
16
# See http://murfy.de/ruby-constants.
17
17
PREDEFINED_CONSTANTS = %w[
18
18
nil true false self
@@ -24,11 +24,11 @@ module Ruby::Patterns # :nodoc: all
24
24
RUBY_PLATFORM RUBY_RELEASE_DATE RUBY_REVISION RUBY_VERSION
25
25
__FILE__ __LINE__ __ENCODING__
26
26
]
27
-
27
+
28
28
IDENT_KIND = WordList . new ( :ident ) .
29
29
add ( KEYWORDS , :keyword ) .
30
30
add ( PREDEFINED_CONSTANTS , :predefined_constant )
31
-
31
+
32
32
KEYWORD_NEW_STATE = WordList . new ( :initial ) .
33
33
add ( %w[ def ] , :def_expected ) .
34
34
add ( %w[ undef ] , :undef_expected ) .
@@ -57,25 +57,25 @@ module Ruby::Patterns # :nodoc: all
57
57
GLOBAL_VARIABLE = / \$ (?: #{ IDENT } | [1-9]\d * | 0\w * | [~&+`'=\/ ,;_.<>!@$?*":\\ ] | -[a-zA-Z_0-9] ) /ox
58
58
PREFIX_VARIABLE = / #{ GLOBAL_VARIABLE } | #{ OBJECT_VARIABLE } /ox
59
59
VARIABLE = / @?@? #{ IDENT } | #{ GLOBAL_VARIABLE } /ox
60
-
60
+
61
61
QUOTE_TO_TYPE = {
62
62
'`' => :shell ,
63
63
'/' => :regexp ,
64
64
}
65
65
QUOTE_TO_TYPE . default = :string
66
-
66
+
67
67
REGEXP_MODIFIERS = /[mousenix]*/
68
-
68
+
69
69
DECIMAL = /\d +(?:_\d +)*/
70
70
OCTAL = /0_?[0-7]+(?:_[0-7]+)*/
71
71
HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/
72
72
BINARY = /0b[01]+(?:_[01]+)*/
73
-
73
+
74
74
EXPONENT = / [eE] [+-]? #{ DECIMAL } /ox
75
75
FLOAT_SUFFIX = / #{ EXPONENT } | \. #{ DECIMAL } #{ EXPONENT } ? /ox
76
76
FLOAT_OR_INT = / #{ DECIMAL } (?: #{ FLOAT_SUFFIX } () )? /ox
77
77
NUMERIC = / (?: (?=0) (?: #{ OCTAL } | #{ HEXADECIMAL } | #{ BINARY } ) | #{ FLOAT_OR_INT } ) /ox
78
-
78
+
79
79
SYMBOL = /
80
80
:
81
81
(?:
@@ -85,7 +85,7 @@ module Ruby::Patterns # :nodoc: all
85
85
)
86
86
/ox
87
87
METHOD_NAME_OR_SYMBOL = / #{ METHOD_NAME_EX } | #{ SYMBOL } /ox
88
-
88
+
89
89
SIMPLE_ESCAPE = /
90
90
[abefnrstv]
91
91
| [0-7]{1,3}
@@ -110,7 +110,7 @@ module Ruby::Patterns # :nodoc: all
110
110
| \\ #{ ESCAPE }
111
111
)
112
112
/mox
113
-
113
+
114
114
# NOTE: This is not completely correct, but
115
115
# nobody needs heredoc delimiters ending with \n.
116
116
HEREDOC_OPEN = /
@@ -122,21 +122,21 @@ module Ruby::Patterns # :nodoc: all
122
122
( [^\n ]*? ) \3 # $4 = delim
123
123
)
124
124
/mx
125
-
125
+
126
126
RUBYDOC = /
127
127
=begin (?!\S )
128
128
.*?
129
129
(?: \Z | ^=end (?!\S ) [^\n ]* )
130
130
/mx
131
-
131
+
132
132
DATA = /
133
133
__END__$
134
134
.*?
135
135
(?: \Z | (?=^\# CODE) )
136
136
/mx
137
137
138
138
RUBYDOC_OR_DATA = / #{ RUBYDOC } | #{ DATA } /xo
139
-
139
+
140
140
# Checks for a valid value to follow. This enables
141
141
# value_expected in method calls without parentheses.
142
142
VALUE_FOLLOWS = /
0 commit comments