Class: Liquidscript::Scanner::Base

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Lexer
Defined in:
lib/liquidscript/scanner/base.rb,
lib/liquidscript/scanner/base/dsl.rb,
lib/liquidscript/scanner/base/lexer.rb,
lib/liquidscript/scanner/base/builder.rb,
lib/liquidscript/scanner/base/context.rb

Overview

TODO: documentation

Direct Known Subclasses

Liquidscript

Defined Under Namespace

Modules: DSL, Lexer Classes: Builder, Context

Constant Summary collapse

EXIT =
Object.new.freeze

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Lexer

#error, #lex, #perform_with_context

Constructor Details

#initialize(source) ⇒ Base

Returns a new instance of Base.



30
31
32
33
34
35
36
# File 'lib/liquidscript/scanner/base.rb', line 30

def initialize(source)
  @source   = source
  @scanner  = StringScanner.new(@source)
  @tokens   = []
  @_scan    = nil
   = {}
end

Class Attribute Details

.defaultObject

Returns the value of attribute default.



24
25
26
# File 'lib/liquidscript/scanner/base.rb', line 24

def default
  @default
end

Instance Attribute Details

#metadataObject

Returns the value of attribute metadata.



28
29
30
# File 'lib/liquidscript/scanner/base.rb', line 28

def 
  
end

Class Method Details

.contextsObject



20
21
22
# File 'lib/liquidscript/scanner/base.rb', line 20

def contexts
  @_contexts ||= Set.new
end

Instance Method Details

#columnObject



65
66
67
# File 'lib/liquidscript/scanner/base.rb', line 65

def column
  "(unkown)"
end

#contextsObject



38
39
40
# File 'lib/liquidscript/scanner/base.rb', line 38

def contexts
  self.class.contexts
end

#default_contextObject



42
43
44
# File 'lib/liquidscript/scanner/base.rb', line 42

def default_context
  self.class.default
end

#eachObject



51
52
53
54
55
56
57
58
59
# File 'lib/liquidscript/scanner/base.rb', line 51

def each
  e = buffer.each

  if block_given?
    e.each(&Proc.new)
  else
    e
  end
end

#emit(token_name, body = nil) ⇒ Object



69
70
71
# File 'lib/liquidscript/scanner/base.rb', line 69

def emit(token_name, body = nil)
  @tokens << Token.new(token_name, body, line, column)
end

#inspectObject



73
74
75
# File 'lib/liquidscript/scanner/base.rb', line 73

def inspect
  "#<#{self.class}:#{'0x%08x' % object_id}>"
end

#lineObject



61
62
63
# File 'lib/liquidscript/scanner/base.rb', line 61

def line
  "(unknown)"
end

#scanObject



46
47
48
49
# File 'lib/liquidscript/scanner/base.rb', line 46

def scan
  lex default_context
  self
end