module Thor::Util

def self.find_class_and_task_by_namespace(namespace, fallback = true)


namespace
==== Parameters

Thor::Util.namespace_to_thor_class("foo:bar:baz") #=> Foo::Bar, "baz"
Thor::Util.namespace_to_thor_class("baz:foo") #=> Baz::Foo, nil
Thor::Util.namespace_to_thor_class("foo:bar") #=> Foo::Bar, nil # will invoke default task

end
class Baz::Foo < Thor::Group

end
end
def baz
class Foo::Bar < Thor

==== Examples

again. If found, returns the highest entry as the class name.
if it's not found, removes the highest entry and searches for the class
from it. It first searches for a class using the all the given namespace,
Receives a namespace and tries to retrieve a Thor or Thor::Group class
def self.find_class_and_task_by_namespace(namespace, fallback = true)
  if namespace.include?(?:) # look for a namespaced task
    pieces = namespace.split(":")
    task   = pieces.pop
    klass  = Thor::Util.find_by_namespace(pieces.join(":"))
  end
  unless klass # look for a Thor::Group with the right name
    klass, task = Thor::Util.find_by_namespace(namespace), nil
  end
  if !klass && fallback # try a task in the default namespace
    task = namespace
    klass = Thor::Util.find_by_namespace('')
  end
  return klass, task
end