# File lib/pry/method.rb, line 42
      def from_str(name, target=TOPLEVEL_BINDING, options={})
        if name.nil?
          nil
        elsif name.to_s =~ /(.+)\#(\S+)\Z/
          context, meth_name = $1, $2
          from_module(target.eval(context), meth_name, target)
        elsif name.to_s =~ /(.+)(\[\])\Z/
          context, meth_name = $1, $2
          from_obj(target.eval(context), meth_name, target)
        elsif name.to_s =~ /(.+)(\.|::)(\S+)\Z/
          context, meth_name = $1, $3
          from_obj(target.eval(context), meth_name, target)
        elsif options[:instance]
          from_module(target.eval("self"), name, target)
        elsif options[:methods]
          from_obj(target.eval("self"), name, target)
        else
          from_str(name, target, :instance => true) or
            from_str(name, target, :methods => true)
        end

      rescue Pry::RescuableException
        nil
      end