class BELParser::Language::ApplyDefaultNamespace

ApplyDefaultNamespace sets the DEFAULT namespace for values when one is not provided. Applies to all namespace values within a BEL 2.0 expression.

Public Class Methods

new(language_spec, namespace_hash, uri_reader, url_reader) click to toggle source
# File lib/bel_parser/language/apply_default_namespace.rb, line 10
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_default_namespace.rb, line 24
def on_argument(argument_node)
  process(argument_node.child)
end
on_parameter(parameter_node) click to toggle source
# File lib/bel_parser/language/apply_default_namespace.rb, line 28
def on_parameter(parameter_node)
  parameter_node.updated([
    process(parameter_node.prefix),
    parameter_node.value
  ].flatten)
end
on_prefix(prefix_node) click to toggle source
# File lib/bel_parser/language/apply_default_namespace.rb, line 35
def on_prefix(prefix_node)
  # guard: return prefix AST node if namespace already supplied
  return prefix_node if prefix_node.identifier

  # return "DEFAULT" namespace
  prefix(
    identifier(
      'DEFAULT',
      :complete => true),
    :complete => true)
end
on_term(term_node) click to toggle source
# File lib/bel_parser/language/apply_default_namespace.rb, line 17
def on_term(term_node)
  term_node.updated([
      term_node.function,
      term_node.arguments.map! {|arg| argument(process(arg.child))}
  ].flatten)
end