'implement the offer'

def func(self):

    caller = self.caller
    if (not self.args):
        caller.msg('Usage:    offer    <object>    [,    object2,    ...]    [:emote]')
        return
    if (not self.trade_started):
        caller.msg('Wait    until    the    other    party    has    accepted    to    trade    with    you.')
        return
    offers = [part.strip() for part in self.args.split(',')]
    offerobjs = []
    for offername in offers:
        obj = caller.search(offername)
        if (not obj):
            return
        offerobjs.append(obj)
    self.tradehandler.offer(self.caller, *offerobjs)
    if (len(offerobjs) > 1):
        objnames = (',    '.join((('|w%s|n' % obj.key) for obj in offerobjs[:(-1)])) + ('    and    |w%s|n' % offerobjs[(-1)].key))
    else:
        objnames = ('|w%s|n' % offerobjs[0].key)
    caller.msg((self.str_caller % ('You    offer    %s' % objnames)))
    self.msg_other(caller, (self.str_other % ('They    offer    %s' % objnames)))
