|
1 | | -require 'active_support/concern' |
2 | | - |
3 | 1 | module CodeBreaker |
4 | 2 | module Parsable |
5 | 3 | module Keywords |
6 | | - extend ActiveSupport::Concern |
7 | 4 | include Parsable::Node |
8 | 5 |
|
9 | | - included do |
10 | | - alias_method :parse_or_node, :parse_as_hash |
11 | | - alias_method :parse_and_node, :parse_as_hash |
12 | | - alias_method :parse_def_node, :parse_as_hash |
13 | | - alias_method :parse_yield_node, :parse_as_hash |
14 | | - alias_method :parse_rescue_node, :parse_as_hash |
15 | | - alias_method :parse_resbody_node, :parse_as_hash |
| 6 | + alias_method :parse_or_node, :parse_as_hash |
| 7 | + alias_method :parse_and_node, :parse_as_hash |
| 8 | + alias_method :parse_def_node, :parse_as_hash |
| 9 | + alias_method :parse_yield_node, :parse_as_hash |
| 10 | + alias_method :parse_rescue_node, :parse_as_hash |
| 11 | + alias_method :parse_resbody_node, :parse_as_hash |
16 | 12 |
|
17 | | - alias_method :parse_break_node, :parse_as_node_type |
18 | | - alias_method :parse_next_node, :parse_as_node_type |
19 | | - alias_method :parse_retry_node, :parse_as_node_type |
20 | | - alias_method :parse_self_node, :parse_as_node_type |
| 13 | + alias_method :parse_break_node, :parse_as_node_type |
| 14 | + alias_method :parse_next_node, :parse_as_node_type |
| 15 | + alias_method :parse_retry_node, :parse_as_node_type |
| 16 | + alias_method :parse_self_node, :parse_as_node_type |
21 | 17 |
|
22 | | - def parse_loop_node(node) |
23 | | - condition = node.children[0] |
24 | | - body = node.children[1] |
| 18 | + def parse_loop_node(node) |
| 19 | + condition = node.children[0] |
| 20 | + body = node.children[1] |
25 | 21 |
|
26 | | - { node.type => parse(condition), do: parse(body) } |
27 | | - end |
| 22 | + { node.type => parse(condition), do: parse(body) } |
| 23 | + end |
28 | 24 |
|
29 | | - alias_method :parse_while_node, :parse_loop_node |
30 | | - alias_method :parse_until_node, :parse_loop_node |
| 25 | + alias_method :parse_while_node, :parse_loop_node |
| 26 | + alias_method :parse_until_node, :parse_loop_node |
31 | 27 |
|
32 | | - def parse_for_node(node) |
33 | | - variable = node.children[0] |
34 | | - range = node.children[1] |
35 | | - body = node.children[2] |
| 28 | + def parse_for_node(node) |
| 29 | + variable = node.children[0] |
| 30 | + range = node.children[1] |
| 31 | + body = node.children[2] |
36 | 32 |
|
37 | | - { node.type => parse(variable), in: parse(range), do: parse(body) } |
38 | | - end |
| 33 | + { node.type => parse(variable), in: parse(range), do: parse(body) } |
| 34 | + end |
39 | 35 |
|
40 | | - def parse_if_node(node) |
41 | | - condition = node.children[0] |
42 | | - if_body = node.children[1] |
43 | | - else_body = node.children[2] |
| 36 | + def parse_if_node(node) |
| 37 | + condition = node.children[0] |
| 38 | + if_body = node.children[1] |
| 39 | + else_body = node.children[2] |
44 | 40 |
|
45 | | - clause = { node.type => parse(condition), then: parse(if_body) } |
46 | | - clause[:else] = parse(else_body) if else_body |
| 41 | + clause = { node.type => parse(condition), then: parse(if_body) } |
| 42 | + clause[:else] = parse(else_body) if else_body |
47 | 43 |
|
48 | | - clause |
49 | | - end |
| 44 | + clause |
| 45 | + end |
50 | 46 |
|
51 | | - def parse_module_node(node) |
52 | | - name = parse(node.children[0]) |
53 | | - body = node.children[1].nil? ? nil : parse(node.children[1]) |
54 | | - value = body ? [name, body] : [name] |
| 47 | + def parse_module_node(node) |
| 48 | + name = parse(node.children[0]) |
| 49 | + body = node.children[1].nil? ? nil : parse(node.children[1]) |
| 50 | + value = body ? [name, body] : [name] |
55 | 51 |
|
56 | | - { node.type => value } |
57 | | - end |
| 52 | + { node.type => value } |
| 53 | + end |
58 | 54 |
|
59 | | - def parse_return_node(node) |
60 | | - children = parse_children(node) |
61 | | - values = children.length == 1 ? children[0] : children |
| 55 | + def parse_return_node(node) |
| 56 | + children = parse_children(node) |
| 57 | + values = children.length == 1 ? children[0] : children |
62 | 58 |
|
63 | | - { node.type => values } |
64 | | - end |
| 59 | + { node.type => values } |
| 60 | + end |
65 | 61 |
|
66 | | - def parse_kwbegin_node(node) |
67 | | - rescue_given = node.children.first.type == :rescue |
| 62 | + def parse_kwbegin_node(node) |
| 63 | + rescue_given = node.children.first.type == :rescue |
68 | 64 |
|
69 | | - if rescue_given |
70 | | - rescue_part = parse(node.children.first)[:rescue] |
| 65 | + if rescue_given |
| 66 | + rescue_part = parse(node.children.first)[:rescue] |
71 | 67 |
|
72 | | - { |
73 | | - begin: rescue_part.first, |
74 | | - rescue: rescue_part.last[:resbody].first |
75 | | - } |
76 | | - else |
77 | | - { begin: parse(node.children.last) } |
78 | | - end |
| 68 | + { |
| 69 | + begin: rescue_part.first, |
| 70 | + rescue: rescue_part.last[:resbody].first |
| 71 | + } |
| 72 | + else |
| 73 | + { begin: parse(node.children.last) } |
79 | 74 | end |
| 75 | + end |
80 | 76 |
|
81 | | - def parse_case_node(node) |
82 | | - case_part = parse(node.children.first) |
83 | | - when_parts = node.children[1...-1].map { |child| parse(child) } |
84 | | - else_part = parse(node.children.last) |
| 77 | + def parse_case_node(node) |
| 78 | + case_part = parse(node.children.first) |
| 79 | + when_parts = node.children[1...-1].map { |child| parse(child) } |
| 80 | + else_part = parse(node.children.last) |
85 | 81 |
|
86 | | - statement = { case: when_parts.unshift(case_part) } |
87 | | - statement[:case] << { else: else_part } if else_part |
88 | | - statement |
89 | | - end |
| 82 | + statement = { case: when_parts.unshift(case_part) } |
| 83 | + statement[:case] << { else: else_part } if else_part |
| 84 | + statement |
| 85 | + end |
90 | 86 |
|
91 | | - def parse_when_node(node) |
92 | | - when_part = parse(node.children[0]) |
93 | | - then_part = parse(node.children[1]) |
| 87 | + def parse_when_node(node) |
| 88 | + when_part = parse(node.children[0]) |
| 89 | + then_part = parse(node.children[1]) |
94 | 90 |
|
95 | | - { when: when_part, then: then_part } |
96 | | - end |
| 91 | + { when: when_part, then: then_part } |
97 | 92 | end |
98 | 93 | end |
99 | 94 | end |
|
0 commit comments