class Yoda::Store::Query::FindSignature
Public Instance Methods
select(namespace, method_name, visibility: nil)
click to toggle source
@param namespace [Objects::NamespaceObject] @param method_name [String, Regexp] @param visibility [Array<Symbol>, nil] @return [Array<Objects::MethodObject>]
# File lib/yoda/store/query/find_signature.rb, line 9 def select(namespace, method_name, visibility: nil) FindMethod.new(registry).select(namespace, method_name, visibility: visibility).map { |el| build(namespace, el) }.flatten end
Private Instance Methods
build(receiver, method_object)
click to toggle source
@param receiver [Store::Objects::NamespaceObject] @param method_object [Store::Objects::MethodObject] @return [Array<FunctionSignatures::Base>]
# File lib/yoda/store/query/find_signature.rb, line 18 def build(receiver, method_object) if constructor = try_to_build_constructor(receiver, method_object) [constructor] elsif method_object.overloads.empty? [Model::FunctionSignatures::Method.new(method_object)] else method_object.overloads.map { |overload| Model::FunctionSignatures::Overload.new(method_object, overload) } end end
try_to_build_constructor(receiver, method_object)
click to toggle source
@param receiver [Store::Objects::NamespaceObject] @param method_object [Store::Objects::MethodObject] @return [FunctionSignatures::Constructor, nil]
# File lib/yoda/store/query/find_signature.rb, line 31 def try_to_build_constructor(receiver, method_object) if method_object.path == 'Class#new' && receiver.is_a?(Store::Objects::MetaClassObject) && receiver.path != 'Class' base_class = registry.find(receiver.base_class_address) || return initialize_object = FindMethod.new(registry).find(base_class, 'initialize') || return Model::FunctionSignatures::Constructor.new(base_class, initialize_object) else nil end end