Class: Syntax::Javascript
- Defined in:
- lib/syntax/lang/javascript.rb
Constant Summary collapse
- JAVASCRIPT_KEYWORDS =
Set.new %w{abstract break case catch class const continue debugger default delete do else enum export extends final finally for function goto if implements import in instanceof interface native new package private protected public return static super switch synchronized this throw throws transient try typeof var void volatile while with}
- JAVASCRIPT_PREDEFINED_TYPES =
Set.new %w{boolean byte char double float int long short}
- JAVASCRIPT_PREDEFINED_CONSTANTS =
%w{null true false}
Instance Attribute Summary
Attributes inherited from Tokenizer
Instance Method Summary collapse
Methods inherited from Tokenizer
#finish, #option, #set, #setup, #start, #teardown, #tokenize
Instance Method Details
#step ⇒ Object
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 |
# File 'lib/syntax/lang/javascript.rb', line 23 def step case when scan(/\s+/) start_group :normal, matched when scan(/\\u[0-9a-f]{4}/i) start_group :unicode, matched when scan(/0[xX][0-9A-Fa-f]+/) start_group :hex, matched when scan(/(?:0[0-7]+)(?![89.eEfF])/) start_group :oct, matched when scan(/(?:\d+)(?![.eEfF])/) start_group :integer, matched when scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) start_group :float, matched when (scan(/"(?:[^"\\]|\\.)*"/) or scan(/'(?:[^'\\]|\\.)*'/) ) start_group :string, matched when scan(/[a-z_$][a-z_\d]*/i) if JAVASCRIPT_KEYWORDS.include?( matched ) start_group :keyword, matched elsif JAVASCRIPT_PREDEFINED_TYPES.include?( matched ) start_group :predefined_types, matched else start_group :ident, matched end when scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) start_group :comment, matched else start_group :other, scan(/./x) end end |