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
|
# File 'lib/bel_parser/parsers/serializer.rb', line 55
def on_function(function_node)
@string << function_node.identifier.string_literal
end
|
#on_identifier(identifier_node) ⇒ Object
59
60
61
|
# File 'lib/bel_parser/parsers/serializer.rb', line 59
def on_identifier(identifier_node)
@string << identifier_node.string_literal
end
|
#on_keyword(keyword_node) ⇒ Object
63
64
65
|
# File 'lib/bel_parser/parsers/serializer.rb', line 63
def on_keyword(keyword_node)
process(keyword_node.identifier)
end
|
#on_list(list_node) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/bel_parser/parsers/serializer.rb', line 67
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
82
83
84
|
# File 'lib/bel_parser/parsers/serializer.rb', line 82
def on_list_item(list_item_node)
process(list_item_node.children[0])
end
|
#on_name(name_node) ⇒ Object
86
87
88
|
# File 'lib/bel_parser/parsers/serializer.rb', line 86
def on_name(name_node)
process(name_node.identifier)
end
|
#on_namespace_definition(namespace_definition_node) ⇒ Object
90
91
92
93
94
95
|
# File 'lib/bel_parser/parsers/serializer.rb', line 90
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
97
98
99
|
# File 'lib/bel_parser/parsers/serializer.rb', line 97
def on_nested_statement(nested_statement_node)
process(nested_statement_node.statement)
end
|
#on_object(object_node) ⇒ Object
101
102
103
|
# File 'lib/bel_parser/parsers/serializer.rb', line 101
def on_object(object_node)
process(object_node.child)
end
|
#on_observed_term(observed_term_node) ⇒ Object
105
106
107
|
# File 'lib/bel_parser/parsers/serializer.rb', line 105
def on_observed_term(observed_term_node)
process(observed_term_node.statement)
end
|
#on_parameter(param_node) ⇒ Object
109
110
111
112
|
# File 'lib/bel_parser/parsers/serializer.rb', line 109
def on_parameter(param_node)
process(param_node.prefix)
process(param_node.value)
end
|
#on_pattern(pattern_node) ⇒ Object
114
115
116
117
|
# File 'lib/bel_parser/parsers/serializer.rb', line 114
def on_pattern(pattern_node)
@string << 'PATTERN '
process(pattern_node.string)
end
|
#on_prefix(prefix_node) ⇒ Object
119
120
121
122
|
# File 'lib/bel_parser/parsers/serializer.rb', line 119
def on_prefix(prefix_node)
prefix = prefix_node.identifier
@string << "#{prefix.string_literal}:" unless prefix.nil?
end
|
#on_relationship(relationship_node) ⇒ Object
124
125
126
|
# File 'lib/bel_parser/parsers/serializer.rb', line 124
def on_relationship(relationship_node)
@string << " #{relationship_node.string_literal} "
end
|
#on_set(set_node) ⇒ Object
128
129
130
131
132
133
|
# File 'lib/bel_parser/parsers/serializer.rb', line 128
def on_set(set_node)
@string << 'SET '
process(set_node.name)
@string << ' = '
process(set_node.value)
end
|
#on_simple_statement(simple_statement_node) ⇒ Object
135
136
137
|
# File 'lib/bel_parser/parsers/serializer.rb', line 135
def on_simple_statement(simple_statement_node)
process(simple_statement_node.statement)
end
|
#on_statement(statement_node) ⇒ Object
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/bel_parser/parsers/serializer.rb', line 139
def on_statement(statement_node)
process(statement_node.subject)
return if statement_node.object.child.nil?
process(statement_node.relationship)
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
154
155
156
|
# File 'lib/bel_parser/parsers/serializer.rb', line 154
def on_string(string_node)
@string << %("#{string_node.string_literal}")
end
|
#on_subject(subject_node) ⇒ Object
158
159
160
|
# File 'lib/bel_parser/parsers/serializer.rb', line 158
def on_subject(subject_node)
process(subject_node.term)
end
|
#on_term(term_node) ⇒ Object
Called when visiting nodes of type term
.
163
164
165
166
167
168
169
|
# File 'lib/bel_parser/parsers/serializer.rb', line 163
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
171
172
173
174
|
# File 'lib/bel_parser/parsers/serializer.rb', line 171
def on_unset(unset_node)
@string << 'UNSET '
process(unset_node.name)
end
|
#on_url(url_node) ⇒ Object
176
177
178
179
|
# File 'lib/bel_parser/parsers/serializer.rb', line 176
def on_url(url_node)
@string << 'URL '
process(url_node.string)
end
|
#on_value(value_node) ⇒ Object
181
182
183
|
# File 'lib/bel_parser/parsers/serializer.rb', line 181
def on_value(value_node)
process(value_node.children[0])
end
|