

def edit_handler(self, obj, attr):
    'Activate the line editor'

    def load(caller):
        'Called for the editor to load the buffer'
        old_value = obj.attributes.get(attr)
        if ((old_value is not None) and (not isinstance(old_value, basestring))):
            typ = type(old_value).__name__
            self.caller.msg(('{RWARNING! Saving this buffer will overwrite the current attribute (of type %s) with a string!{n' % typ))
            return str(old_value)
        return old_value

    def save(caller, buf):
        'Called when editor saves its buffer.'
        obj.attributes.add(attr, buf)
        caller.msg(('Saved Attribute %s.' % attr))
    EvEditor(self.caller, load, save, key=('%s/%s' % (attr, attr)))

dataset/ETHPy150Open evennia/evennia/evennia/commands/default/building.py CmdSetAttribute.edit_handler/VarMisuse@145/245 `obj`->`attr`