class BELParser::Language::BaseSpecification

BaseSpecification defines behaviour for loading BEL version files.

Public Class Methods

load_version_path(version_path) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 9
def self.load_version_path(version_path)
  base_path = File.expand_path(File.dirname(__FILE__)) + File::SEPARATOR
  ['return_types', 'value_encodings', 'functions', 'relationships', 'upgrades']
    .each do |set|
      Dir[File.join(base_path, version_path, set, '*.rb')]
        .each do |ruby_file|
          ruby_file.sub!(/^#{Regexp.escape(base_path)}/, '')
          require_relative ruby_file
        end
    end
end

Protected Instance Methods

load_language_constants(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 23
def load_language_constants(version_module)
  load_return_types(version_module)
  load_value_encodings(version_module)
  load_functions(version_module)
  load_relationships(version_module)
  load_upgrades(version_module)
end

Private Instance Methods

load_functions(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 55
def load_functions(version_module)
  # Collect functions
  function_classes =
    version_module::Functions.constants.collect do |symbol|
      const = version_module::Functions.const_get(symbol)
      const if
        const.respond_to?(:short) &&
        const.respond_to?(:long)
    end
  @functions         = function_classes.compact
  @indexed_functions = index_long_short(@functions)
end
load_relationships(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 68
def load_relationships(version_module)
  # Collect relationships
  rel_classes =
    version_module::Relationships.constants.collect do |symbol|
      const = version_module::Relationships.const_get(symbol)
      const if
        const.respond_to?(:short) &&
        const.respond_to?(:long)
    end
  @relationships         = rel_classes.compact
  @indexed_relationships = index_long_short(@relationships)
  assign_relationship_categories(@relationships)
end
load_return_types(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 33
def load_return_types(version_module)
  # Collect return types
  ret_classes =
    version_module::ReturnTypes.constants.collect do |symbol|
      const = version_module::ReturnTypes.const_get(symbol)
      const if const.respond_to?(:subtypes)
    end
  @return_types         = ret_classes.compact
  @indexed_return_types = index_sym(@return_types)
end
load_upgrades(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 82
def load_upgrades(version_module)
  # Collect upgrades
  upgrade_classes =
    version_module::Upgrades.constants.collect do |symbol|
      const = version_module::Upgrades.const_get(symbol)
      const if
        const.include?(BELParser::Language::TermTransformation)
    end
  @upgrades = upgrade_classes.compact
end
load_value_encodings(version_module) click to toggle source
# File lib/bel_parser/language/base_specification.rb, line 44
def load_value_encodings(version_module)
  # Collect value encodings
  enc_classes =
    version_module::ValueEncodings.constants.collect do |symbol|
      const = version_module::ValueEncodings.const_get(symbol)
      const if const.respond_to?(:subtypes)
    end
  @value_encodings         = enc_classes.compact
  @indexed_value_encodings = index_sym(@value_encodings)
end