Module: Liquidscript::Compiler::ICR::Classes

Included in:
Liquidscript::Compiler::ICR
Defined in:
lib/liquidscript/compiler/icr/classes.rb

Instance Method Summary collapse

Instance Method Details

#_compile_class_body(mod = false) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/liquidscript/compiler/icr/classes.rb', line 24

def _compile_class_body(mod = false)
  shift :lbrack

  components = []

  compile_object = action do
    components << [
      _compile_class_body_key(mod),
      compile_vexpression
    ]
  end

  loop do
    expect :newline, :rbrack => action.end_loop,
    :comma         => action.shift,
    :module        => action { components << compile_module },
    :class         => action { components << compile_class  },
    [:identifier, :dstring] => compile_object
  end

  components
end

#_compile_class_body_key(mod) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/liquidscript/compiler/icr/classes.rb', line 47

def _compile_class_body_key(mod)
  item = shift :identifier, :dstring

  item = compile_property(item) if item.type == :identifier &&
    peek?(:prop) && !mod

  shift :colon
  item
end

#compile_classObject



6
7
8
9
10
11
12
13
# File 'lib/liquidscript/compiler/icr/classes.rb', line 6

def compile_class
  shift :class
  name = shift :identifier
  set name
  body = _compile_class_body(false)

  code :class, name, body
end

#compile_moduleObject



15
16
17
18
19
20
21
22
# File 'lib/liquidscript/compiler/icr/classes.rb', line 15

def compile_module
  shift :module
  name = shift :identifier
  set name
  body = _compile_class_body(true)

  code :module, name, body
end