Class: BELParser::Parsers::Serializer
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
#handler_missing, #process, #process_all
Constructor Details
Returns a new instance of Serializer.
19
20
21
|
# File 'lib/bel_parser/parsers/serializer.rb', line 19
def initialize
@string = ''
end
|
Instance Attribute Details
#string ⇒ Object
Returns the value of attribute string.
17
18
19
|
# File 'lib/bel_parser/parsers/serializer.rb', line 17
def string
@string
end
|
Instance Method Details
#on_annotation_definition(annotation_definition_node) ⇒ Object
23
24
25
26
27
28
|
# File 'lib/bel_parser/parsers/serializer.rb', line 23
def on_annotation_definition(annotation_definition_node)
@string << 'DEFINE ANNOTATION '
process(annotation_definition_node.keyword)
@string << ' AS '
process(annotation_definition_node.domain)
end
|
#on_argument(argument_node) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/bel_parser/parsers/serializer.rb', line 30
def on_argument(argument_node)
@string << ', ' if @separate_by_comma
process(argument_node.child)
@separate_by_comma = true
end
|
#on_blank_line(blank_line_node) ⇒ Object
37
38
39
|
# File 'lib/bel_parser/parsers/serializer.rb', line 37
def on_blank_line(blank_line_node)
@string << ''
end
|
41
42
43
|
# File 'lib/bel_parser/parsers/serializer.rb', line 41
def ()
@string << %(##{.children[0]})
end
|
#on_document_property(document_property_node) ⇒ Object
45
46
47
48
49
|
# File 'lib/bel_parser/parsers/serializer.rb', line 45
def on_document_property(document_property_node)
name = document_property_node.name.identifier.string_literal
value = document_property_node.value.children[0].string_literal
@string << %(SET DOCUMENT #{name} = #{value})
end
|
#on_domain(domain_node) ⇒ Object
51
52
53
|
# File 'lib/bel_parser/parsers/serializer.rb', line 51
def on_domain(domain_node)
process(domain_node.child)
end
|
#on_function(function_node) ⇒ Object
55
56
57
58
59
|
# File 'lib/bel_parser/parsers/serializer.rb', line 55
def on_function(function_node)
if function_node.identifier
@string << function_node.identifier.string_literal
end
end
|
#on_identifier(identifier_node) ⇒ Object
61
62
63
|
# File 'lib/bel_parser/parsers/serializer.rb', line 61
def on_identifier(identifier_node)
@string << identifier_node.string_literal
end
|
#on_keyword(keyword_node) ⇒ Object
65
66
67
|
# File 'lib/bel_parser/parsers/serializer.rb', line 65
def on_keyword(keyword_node)
process(keyword_node.identifier)
end
|
#on_list(list_node) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/bel_parser/parsers/serializer.rb', line 69
def on_list(list_node)
items = list_node.list_items
if !items || items.empty?
@string << '{}'
else
@string << '{ '
process(items[0])
items[1..-1].each do |rest_item|
@string << ', '
process(rest_item)
end
@string << ' }'
end
end
|
#on_list_item(list_item_node) ⇒ Object
84
85
86
|
# File 'lib/bel_parser/parsers/serializer.rb', line 84
def on_list_item(list_item_node)
process(list_item_node.children[0])
end
|
#on_name(name_node) ⇒ Object
88
89
90
|
# File 'lib/bel_parser/parsers/serializer.rb', line 88
def on_name(name_node)
process(name_node.identifier)
end
|
#on_namespace_definition(namespace_definition_node) ⇒ Object
92
93
94
95
96
97
|
# File 'lib/bel_parser/parsers/serializer.rb', line 92
def on_namespace_definition(namespace_definition_node)
@string << 'DEFINE NAMESPACE '
process(namespace_definition_node.keyword)
@string << ' AS '
process(namespace_definition_node.domain)
end
|
#on_nested_statement(nested_statement_node) ⇒ Object
99
100
101
|
# File 'lib/bel_parser/parsers/serializer.rb', line 99
def on_nested_statement(nested_statement_node)
process(nested_statement_node.statement)
end
|
#on_object(object_node) ⇒ Object
103
104
105
|
# File 'lib/bel_parser/parsers/serializer.rb', line 103
def on_object(object_node)
process(object_node.child)
end
|
#on_observed_term(observed_term_node) ⇒ Object
107
108
109
|
# File 'lib/bel_parser/parsers/serializer.rb', line 107
def on_observed_term(observed_term_node)
process(observed_term_node.statement)
end
|
#on_parameter(param_node) ⇒ Object
111
112
113
114
|
# File 'lib/bel_parser/parsers/serializer.rb', line 111
def on_parameter(param_node)
process(param_node.prefix)
process(param_node.value)
end
|
#on_pattern(pattern_node) ⇒ Object
116
117
118
119
|
# File 'lib/bel_parser/parsers/serializer.rb', line 116
def on_pattern(pattern_node)
@string << 'PATTERN '
process(pattern_node.string)
end
|
#on_prefix(prefix_node) ⇒ Object
121
122
123
124
|
# File 'lib/bel_parser/parsers/serializer.rb', line 121
def on_prefix(prefix_node)
prefix = prefix_node.identifier
@string << "#{prefix.string_literal}:" unless prefix.nil?
end
|
#on_relationship(relationship_node) ⇒ Object
126
127
128
|
# File 'lib/bel_parser/parsers/serializer.rb', line 126
def on_relationship(relationship_node)
@string << " #{relationship_node.string_literal} "
end
|
#on_set(set_node) ⇒ Object
130
131
132
133
134
135
|
# File 'lib/bel_parser/parsers/serializer.rb', line 130
def on_set(set_node)
@string << 'SET '
process(set_node.name)
@string << ' = '
process(set_node.value)
end
|
#on_simple_statement(simple_statement_node) ⇒ Object
137
138
139
|
# File 'lib/bel_parser/parsers/serializer.rb', line 137
def on_simple_statement(simple_statement_node)
process(simple_statement_node.statement)
end
|
#on_statement(statement_node) ⇒ Object
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
# File 'lib/bel_parser/parsers/serializer.rb', line 141
def on_statement(statement_node)
process(statement_node.subject)
return unless statement_node.relationship?
process(statement_node.relationship)
return unless statement_node.object?
object_node = statement_node.object
if object_node.statement?
@string << '('
process(object_node)
@string << ')'
else
process(object_node)
end
end
|
#on_string(string_node) ⇒ Object
158
159
160
|
# File 'lib/bel_parser/parsers/serializer.rb', line 158
def on_string(string_node)
@string << %("#{string_node.string_value}")
end
|
#on_subject(subject_node) ⇒ Object
162
163
164
|
# File 'lib/bel_parser/parsers/serializer.rb', line 162
def on_subject(subject_node)
process(subject_node.term)
end
|
#on_term(term_node) ⇒ Object
Called when visiting nodes of type term
.
167
168
169
170
171
172
173
|
# File 'lib/bel_parser/parsers/serializer.rb', line 167
def on_term(term_node)
@separate_by_comma = false
process(term_node.function)
@string << '('
term_node.arguments.each { |arg| process(arg) }
@string << ')'
end
|
#on_unset(unset_node) ⇒ Object
175
176
177
178
|
# File 'lib/bel_parser/parsers/serializer.rb', line 175
def on_unset(unset_node)
@string << 'UNSET '
process(unset_node.name)
end
|
#on_url(url_node) ⇒ Object
180
181
182
183
|
# File 'lib/bel_parser/parsers/serializer.rb', line 180
def on_url(url_node)
@string << 'URL '
process(url_node.string)
end
|
#on_value(value_node) ⇒ Object
185
186
187
|
# File 'lib/bel_parser/parsers/serializer.rb', line 185
def on_value(value_node)
process(value_node.children[0])
end
|