'Implement give'

def func(self):

    caller = self.caller
    if ((not self.args) or (not self.rhs)):
        caller.msg('Usage:    give    <inventory    object>    =    <target>')
        return
    to_give = caller.search(self.lhs, location=caller, nofound_string=("You    aren't    carrying    %s." % self.lhs), multimatch_string=('You    carry    more    than    one    %s:' % self.lhs))
    target = caller.search(self.rhs)
    if (not (to_give and target)):
        return
    if (target == caller):
        caller.msg(('You    keep    %s    to    yourself.' % to_give.key))
        return
    if (not (to_give.location == caller)):
        caller.msg(('You    are    not    holding    %s.' % to_give.key))
        return
    caller.msg(('You    give    %s    to    %s.' % (to_give.key, target.key)))
    to_give.move_to(target, quiet=True)
    target.msg(('%s    gives    you    %s.' % (caller.key, to_give.key)))
    to_give.at_give(caller, target)
