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