| 42 | |
| 43 | |
| 44 | class DOMBuilder: |
| 45 | entityResolver = None |
| 46 | errorHandler = None |
| 47 | filter = None |
| 48 | |
| 49 | ACTION_REPLACE = 1 |
| 50 | ACTION_APPEND_AS_CHILDREN = 2 |
| 51 | ACTION_INSERT_AFTER = 3 |
| 52 | ACTION_INSERT_BEFORE = 4 |
| 53 | |
| 54 | _legal_actions = (ACTION_REPLACE, ACTION_APPEND_AS_CHILDREN, |
| 55 | ACTION_INSERT_AFTER, ACTION_INSERT_BEFORE) |
| 56 | |
| 57 | def __init__(self): |
| 58 | self._options = Options() |
| 59 | |
| 60 | def _get_entityResolver(self): |
| 61 | return self.entityResolver |
| 62 | def _set_entityResolver(self, entityResolver): |
| 63 | self.entityResolver = entityResolver |
| 64 | |
| 65 | def _get_errorHandler(self): |
| 66 | return self.errorHandler |
| 67 | def _set_errorHandler(self, errorHandler): |
| 68 | self.errorHandler = errorHandler |
| 69 | |
| 70 | def _get_filter(self): |
| 71 | return self.filter |
| 72 | def _set_filter(self, filter): |
| 73 | self.filter = filter |
| 74 | |
| 75 | def setFeature(self, name, state): |
| 76 | if self.supportsFeature(name): |
| 77 | state = state and 1 or 0 |
| 78 | try: |
| 79 | settings = self._settings[(_name_xform(name), state)] |
| 80 | except KeyError: |
| 81 | raise xml.dom.NotSupportedErr( |
| 82 | "unsupported feature: %r" % (name,)) from None |
| 83 | else: |
| 84 | for name, value in settings: |
| 85 | setattr(self._options, name, value) |
| 86 | else: |
| 87 | raise xml.dom.NotFoundErr("unknown feature: " + repr(name)) |
| 88 | |
| 89 | def supportsFeature(self, name): |
| 90 | return hasattr(self._options, _name_xform(name)) |
| 91 | |
| 92 | def canSetFeature(self, name, state): |
| 93 | key = (_name_xform(name), state and 1 or 0) |
| 94 | return key in self._settings |
| 95 | |
| 96 | # This dictionary maps from (feature,value) to a list of |
| 97 | # (option,value) pairs that should be set on the Options object. |
| 98 | # If a (feature,value) setting is not in this dictionary, it is |
| 99 | # not supported by the DOMBuilder. |
| 100 | # |
| 101 | _settings = { |
no outgoing calls
no test coverage detected
searching dependent graphs…