class BELParser::Parsers::Serializer
Defines an {AST::Processor::Mixin AST
processor} that serializes all {AST::Node AST
node} to a string.
Attributes
string[R]
Public Class Methods
new()
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 19 def initialize @string = '' end
Public Instance Methods
on_annotation_definition(annotation_definition_node)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 37 def on_blank_line(blank_line_node) @string << '' end
on_comment_line(comment_line_node)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 41 def on_comment_line(comment_line_node) @string << %(##{comment_line_node.children[0]}) end
on_document_property(document_property_node)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 51 def on_domain(domain_node) process(domain_node.child) end
on_function(function_node)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 61 def on_identifier(identifier_node) @string << identifier_node.string_literal end
on_keyword(keyword_node)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 65 def on_keyword(keyword_node) process(keyword_node.identifier) end
on_list(list_node)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 126 def on_relationship(relationship_node) @string << " #{relationship_node.string_literal} " end
on_set(set_node)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 158 def on_string(string_node) @string << %("#{string_node.string_value}") end
on_subject(subject_node)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 162 def on_subject(subject_node) process(subject_node.term) end
on_term(term_node)
click to toggle source
Called when visiting nodes of type term
.
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/bel_parser/parsers/serializer.rb, line 185 def on_value(value_node) process(value_node.children[0]) end