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