class Ciphr::FunctionRegistry

Public Class Methods

global() click to toggle source
# File lib/ciphr/function_registry.rb, line 36
def self.global
  @@global
end
new() click to toggle source
# File lib/ciphr/function_registry.rb, line 3
def initialize() 
  @function_classes = []
  @functions = []
  @function_aliases = {}
end

Public Instance Methods

[](name) click to toggle source
# File lib/ciphr/function_registry.rb, line 23
def [](name)
  @function_aliases[name] || (raise InvalidFunctionError.new(name))
end
function_aliases() click to toggle source
# File lib/ciphr/function_registry.rb, line 19
def function_aliases
  @function_aliases
end
functions() click to toggle source
# File lib/ciphr/function_registry.rb, line 27
def functions
  @functions
end
register(klass) click to toggle source
# File lib/ciphr/function_registry.rb, line 9
def register(klass)
  @function_classes << klass
end
setup(classes=@function_classes) click to toggle source
# File lib/ciphr/function_registry.rb, line 13
def setup(classes=@function_classes)
  @functions = classes.map{|c| [c,c.variants]}.select{|a| a[1] && a[1].size > 0}.map{|a| 
                    [a[0], a[1].map{|v| [[v[0]].flatten.uniq, v[1]]}]}
  @function_aliases = Hash[@functions.map{|c,vs| vs.map{|v| [v[0]].flatten.map{|n| [n,[c, v[1]]]}}.flatten(1)}.flatten(1)]
end