class BELParser::Language::ApplyNamespaceEncoding
ApplyNamespaceEncoding
applies namespace and encoding properties to {BELParser::Parsers::AST::Parameter} child nodes.
Public Class Methods
new(language_spec, namespace_hash, uri_reader, url_reader)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 8 def initialize(language_spec, namespace_hash, uri_reader, url_reader) @language_spec = language_spec @namespace_hash = namespace_hash @uri_reader = uri_reader @url_reader = url_reader end
Public Instance Methods
on_argument(argument_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 47 def on_argument(argument_node) process(argument_node.child) end
on_nested_statement(nested_statement_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 23 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/language/apply_namespace_encoding.rb, line 36 def on_object(object_node) process(object_node.child) end
on_observed_term(observed_term_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 15 def on_observed_term(observed_term_node) process(observed_term_node.statement) end
on_parameter(parameter_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 51 def on_parameter(parameter_node) @type = nil @namespace = nil @prefix = nil process(parameter_node.prefix) process(parameter_node.value) end
on_prefix(prefix_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 59 def on_prefix(prefix_node) return prefix_node unless prefix_node.identifier @prefix = prefix_node.identifier.string_literal @namespace = @namespace_hash[@prefix] return prefix_node unless @namespace prefix_node.namespace = @namespace prefix_node end
on_simple_statement(simple_statement_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 19 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/language/apply_namespace_encoding.rb, line 27 def on_statement(statement_node) process(statement_node.subject) process(statement_node.object) if statement_node.object? end
on_subject(subject_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 32 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/language/apply_namespace_encoding.rb, line 41 def on_term(term_node) term_node.arguments.each do |argument_node| process(argument_node) end end
on_value(value_node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 70 def on_value(value_node) return value_node unless @namespace value_node.prefix = @prefix value_node.namespace = @namespace string_literal = value_literal(value_node.children[0]) value = @namespace[string_literal] if value value_node.encoding = value.encoding && value.encoding.map(&@language_spec.method(:value_encoding)) value_node.namespace_value = value else value_node.encoding = nil value_node.namespace_value = nil end value_node end
Private Instance Methods
value_literal(node)
click to toggle source
# File lib/bel_parser/language/apply_namespace_encoding.rb, line 92 def value_literal(node) case node.type when :identifier node.string_literal when :string node.string_value end end