Sha256: 0d7f1e565b42f1eb63e321df18ebedfe2c25a6d1983c397d27c6a510e357829b
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
module Nyanko module Invoker class FunctionFinder FunctionNotFound = Class.new(StandardError) def self.find(context, options) new(context, options).find or raise FunctionNotFound, "The function for #{options[:functions].inspect} is not found" end def initialize(context, options) @context = context @options = options end def find @options[:functions].find do |unit_name, label| unit = find_unit(unit_name) identifier = @options[:as] || @context.class next unless unit.active?(@context, @options[:active_if_options]) function = unit.find_function(identifier, label) break function if function end end def find_with_dependencies find_without_dependencies unless has_inactive_dependent_unit? end alias_method_chain :find, :dependencies def find_unit(name) Loader.load(name) end def has_inactive_dependent_unit? dependent_units.any? {|unit| !unit.active?(@context, @options[:active_if_options]) } end def dependent_units dependent_unit_names.map {|name| find_unit(name) } end def dependent_unit_names Array.wrap(@options[:dependencies]) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nyanko-0.0.4 | lib/nyanko/invoker/function_finder.rb |
nyanko-0.0.3 | lib/nyanko/invoker/function_finder.rb |