Beispiel #1
0
 def _contentdelta(self, deltas):
     """Generates the list of operations for :ref:sendDelta."""
     deltas.append(self._delta)
     for child in self._content:
         child._contentdelta(deltas)
     if self._closeTag:
         deltas.append(delta.Operation(self._closeTag))
Beispiel #2
0
    def __delattr__(self, attr):
        """Edits delta to remove an annotation.
         .. warning:: This does not apply it until you call :py:meth:`sendDelta`."""
        opName = self._delta.operation
        #handle new tags appropriately
        if opName == "elementStart":
            del self._delta.args[1][attr]
            return

        #ensure delta is is a annotationsBoundary
        if opName != "annotationBoundary":
            #backup information
            annotations = self._delta.args[annotationOffset[opName]]

            #combine with existing annotations
            keys = set().union(set(annotations.keys()),
                               set(self._item.annotations.keys()))

            ann = {}
            for key in keys:
                ann[key] = (self._item.annotations[key], annotations[key])

            self._delta = delta.Operation("annotationsBoundary", [], ann)
        #edit delta to delete the attr
        self._delta.args[0].append(attr)
Beispiel #3
0
    def __init__(self, doc, item, op="elementStart"):
        #correct parameters
        if isinstance(doc, Tag): doc = doc._doc

        if op == "elementStart": self._closeTag = 'elementEnd'
        else: self._closeTag = False

        if isinstance(item, str):
            self._delta = delta.Operation("elementStart", item, {})
            op = ''

            item = datasource.Item(datasource.Item.TYPE_START_TAG, item)

        self._doc = doc
        self._item = item
        if op: self._delta = delta.Operation(op, *blankArgs[op])
        self._content = []
Beispiel #4
0
    def _delete(self):
        """Sets this tag to be deleted by outputted delta."""
        self._delta = delta.Operation("deleteElementStart", self._name,
                                      self._item.annotations)
        self._closeTag = "deleteElementEnd"

        for child in self._content:
            child._delete()
Beispiel #5
0
    def __setattr__(self, attr, value):
        """Edits delta to set the appropriate annotation. 
         :warning: This does note apply it until you call :ref:sendDelta. """
        #ensure I can still set private properties
        if attr[0] == "_":
            object.__setattr__(self, attr, value)
            return

        #edit delta to set the attr
        index = self._delta.operation
        if index == "retain":
            self._delta = delta.Operation("updateAttributes",
                                          self._item.annotations)
            index = "updateAttributes"
        offset = annotationOffsets[index]
        self._delta.args[offset][attr] = value
Beispiel #6
0
 def _delete(self):
     self.__delta = delta.Operation("deleteCharactors", len(self.__text))
Beispiel #7
0
 def __init__(self, text, op="charactors"):
     self.__delta = delta.Operation(op, text)
     self.__text = text