예제 #1
0
class ElementWithLink(object):

    LINK_ATTR_NAME = None

    def __init__(self, el, encoding=None):
        self.el = el
        self._link_history = OrderedSet()
        self.encoding = encoding

    def get_link(self):
        #print(__name__, "ElementWithLink encoding=", self.encoding)
        r = self.el.get(self.LINK_ATTR_NAME)
        if self.encoding:
            r = to_unicode(r, self.encoding)
        return r

    def set_link(self, new):
        _old = self.get_link()
        if _old != new:
            logging.debug('Update link %s => %s ', _old, new)
            self.el.set(self.LINK_ATTR_NAME, new)
            self._link_history.add(_old)

    link = property(get_link, set_link)

    @classmethod
    def make(cls, attr):
        def wrapper(el, encoding):
            r = cls(el, encoding=encoding)
            r.LINK_ATTR_NAME = attr
            return r
        return wrapper

    @property
    def link_history(self):
        return self._link_history
예제 #2
0
 def __init__(self, el, encoding=None):
     self.el = el
     self._link_history = OrderedSet()
     self.encoding = encoding