module SciRuby

@api public

Constants

GEMS_YML
VERSION

SciRuby version string @api public

Public Instance Methods

autoload_modules() click to toggle source

Modules which can be autoloaded

# File lib/sciruby/gems.rb, line 10
def autoload_modules
  @autoload_modules ||= {}
end
gems() click to toggle source

Return map of all known SciRuby gems

# File lib/sciruby/gems.rb, line 5
def gems
  @gems ||= {}
end
installed_gems() click to toggle source

Return map of all installed SciRuby gems

# File lib/sciruby/gems.rb, line 15
def installed_gems
  @installed_gems ||= Hash[gems.each_value.map(&method(:installed_gem)).compact]
end
installed_modules() click to toggle source

Return list of all installed SciRuby modules

# File lib/sciruby/gems.rb, line 25
def installed_modules
  @installed_modules ||= installed_gems.each_value.map {|gem| gem[:module] }.flatten
end
modules() click to toggle source

Return list of all known SciRuby modules

# File lib/sciruby/gems.rb, line 20
def modules
  @modules ||= gems.each_value.map {|gem| gem[:module] }.flatten
end

Private Instance Methods

installed_gem(gem) click to toggle source
# File lib/sciruby/gems.rb, line 48
def installed_gem(gem)
  require 'rubygems' unless defined?(Gem::Specification)
  [gem[:name], gem.merge(installed_version: Gem::Specification.find_by_name(gem[:name]).version.to_s)]
rescue Exception
  nil
end
load_gems(file) click to toggle source
# File lib/sciruby/gems.rb, line 31
def load_gems(file)
  YAML.load_file(file).each do |name, gem|
    gem = Hash[gem.map {|k,v| [k.to_sym, v] }]
    gem[:name] = name
    gem[:require] = [*(gem[:require] || name)]
    gem[:module] = [*gem[:module]]
    gem[:module].each do |mod|
      parts = mod.split('::')
      parts.size.times do |i|
        m = parts[0..i].join('::')
        autoload_modules[m] = (i < parts.size - 1 && autoload_modules[m]) || gem[:require]
      end
    end
    gems[name] = gem
  end
end