Class: Code::Parser::If

Inherits:
Language
  • Object
show all
Defined in:
lib/code/parser/if.rb

Instance Method Summary collapse

Instance Method Details

#begin_keywordObject



30
31
32
# File 'lib/code/parser/if.rb', line 30

def begin_keyword
  str("begin")
end

#bodyObject



66
67
68
69
70
71
72
73
74
75
# File 'lib/code/parser/if.rb', line 66

def body
  (
    (begin_keyword | do_keyword).ignore << whitespace << code <<
      (whitespace? << end_keyword).maybe.ignore
  ) |
    (
      opening_curly_bracket.ignore << whitespace? << code <<
        (whitespace? << closing_curly_bracket).maybe.ignore
    ) | (code << (whitespace? << end_keyword).maybe.ignore)
end

#closing_curly_bracketObject



38
39
40
# File 'lib/code/parser/if.rb', line 38

def closing_curly_bracket
  str("{")
end

#codeObject



18
19
20
# File 'lib/code/parser/if.rb', line 18

def code
  Code
end

#do_keywordObject



26
27
28
# File 'lib/code/parser/if.rb', line 26

def do_keyword
  str("do")
end

#else_keywordObject



58
59
60
# File 'lib/code/parser/if.rb', line 58

def else_keyword
  str("else")
end

#elsif_keywordObject



50
51
52
# File 'lib/code/parser/if.rb', line 50

def elsif_keyword
  str("elsif")
end

#elsunless_keywordObject



54
55
56
# File 'lib/code/parser/if.rb', line 54

def elsunless_keyword
  str("elsunless")
end

#end_keywordObject



62
63
64
# File 'lib/code/parser/if.rb', line 62

def end_keyword
  str("end")
end

#if_classObject



10
11
12
# File 'lib/code/parser/if.rb', line 10

def if_class
  If
end

#if_keywordObject



42
43
44
# File 'lib/code/parser/if.rb', line 42

def if_keyword
  str("if")
end

#opening_curly_bracketObject



34
35
36
# File 'lib/code/parser/if.rb', line 34

def opening_curly_bracket
  str("{")
end

#rootObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/code/parser/if.rb', line 77

def root
  (
    (if_keyword | unless_keyword).aka(:first_operator) << whitespace <<
      statement.aka(:first_statement) << body.aka(:first_body) <<
      (
        (
          (elsif_keyword | elsunless_keyword).aka(
            :operator
          ) << whitespace << statement.aka(:statement) << body.aka(:body)
        ) |
          (
            else_keyword << whitespace <<
              (if_keyword | unless_keyword).aka(:operator) <<
              whitespace << statement.aka(:statement) << body.aka(:body)
          ) | (else_keyword.aka(:operator) << body.aka(:body))
      ).repeat(1).aka(:elses).maybe << end_keyword.maybe
  ).aka(:if) | statement
end

#statementObject



6
7
8
# File 'lib/code/parser/if.rb', line 6

def statement
  IfModifier
end

#unless_keywordObject



46
47
48
# File 'lib/code/parser/if.rb', line 46

def unless_keyword
  str("unless")
end

#whitespaceObject



14
15
16
# File 'lib/code/parser/if.rb', line 14

def whitespace
  Whitespace
end

#whitespace?Boolean

Returns:



22
23
24
# File 'lib/code/parser/if.rb', line 22

def whitespace?
  whitespace.maybe
end