class Ve::Manager

Public Class Methods

functions_for_language(language) click to toggle source
# File lib/ve.rb, line 32
def self.functions_for_language(language)
  @@provider_for[language.to_sym].keys
end
languages() click to toggle source
# File lib/ve.rb, line 28
def self.languages
  @@provider_for.keys
end
provider_for(language, function) click to toggle source
# File lib/ve.rb, line 18
def self.provider_for(language, function)
  provider = @@provider_for[language.to_sym][function.to_sym]
  if provider.is_a?(Class)
    config = @@config_for[provider] || {}
    provider = @@provider_for[language.to_sym][function.to_sym].new(config)
    @@provider_for[language.to_sym][function.to_sym] = provider
  end
  provider
end
register(klass, language) click to toggle source

TODO: Make a difference between what features are available locally and what requires contacting external Ves

# File lib/ve.rb, line 38
def self.register(klass, language)
  @@provider_for ||= {}
  # This won't work if people start monkey patching the providers with public methods that arent abilities
  # It's also not pretty, but kinda nifty
  provider_name = klass.to_s.split('::').last
  parse_class = Kernel.class_eval("Ve::Parse::#{provider_name}")
  abilities = parse_class.public_instance_methods - Object.public_instance_methods
  abilities.each do |a|
    @@provider_for[language.to_sym] ||= {}
    @@provider_for[language.to_sym][a] = klass
  end
end
set_default_config_for(klass, config = {}) click to toggle source
# File lib/ve.rb, line 14
def self.set_default_config_for(klass, config = {})
  @@config_for[klass] = config
end