Přidána data na kontextu nezávislá na docu.
This commit is contained in:
parent
5c066d46af
commit
93f5949361
1 changed files with 36 additions and 0 deletions
|
@ -23,6 +23,7 @@ CommandCallable = Callable[[Command, 'Context', 'NOPProcessor'], list[Element]]
|
||||||
class Context:
|
class Context:
|
||||||
parent: Union["Context", None]
|
parent: Union["Context", None]
|
||||||
_commands: dict[str, Union[CommandCallable, None]]
|
_commands: dict[str, Union[CommandCallable, None]]
|
||||||
|
_data: dict[str, object]
|
||||||
doc: Doc
|
doc: Doc
|
||||||
trusted: bool
|
trusted: bool
|
||||||
path: str
|
path: str
|
||||||
|
@ -34,6 +35,7 @@ class Context:
|
||||||
def __init__(self, doc: Doc, path: str, parent: Union['Context', None]=None, trusted: bool=True):
|
def __init__(self, doc: Doc, path: str, parent: Union['Context', None]=None, trusted: bool=True):
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self._commands = {}
|
self._commands = {}
|
||||||
|
self._data = {}
|
||||||
self.doc = doc
|
self.doc = doc
|
||||||
self.trusted = trusted
|
self.trusted = trusted
|
||||||
self.path = path
|
self.path = path
|
||||||
|
@ -113,6 +115,40 @@ class Context:
|
||||||
else:
|
else:
|
||||||
self.set_metadata(key, data)
|
self.set_metadata(key, data)
|
||||||
|
|
||||||
|
def get_data(self, key: str, immediate: bool=False):
|
||||||
|
data = self._data
|
||||||
|
keys = key.split(".")
|
||||||
|
try:
|
||||||
|
for k in keys:
|
||||||
|
data = data[k]
|
||||||
|
return data
|
||||||
|
except KeyError:
|
||||||
|
if self.parent and not immediate:
|
||||||
|
return self.parent.get_data(key)
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def set_data(self, key: str, value: object):
|
||||||
|
data = self._data
|
||||||
|
keys = key.split(".")
|
||||||
|
for k in keys[:-1]:
|
||||||
|
try:
|
||||||
|
data = data[k]
|
||||||
|
except KeyError:
|
||||||
|
data[k] = {}
|
||||||
|
data = data[k]
|
||||||
|
data[keys[-1]] = value
|
||||||
|
|
||||||
|
def unset_data(self, key: str):
|
||||||
|
if key == "":
|
||||||
|
self._doc = {}
|
||||||
|
data = self._doc
|
||||||
|
keys = key.split(".")
|
||||||
|
for k in keys[:-1]:
|
||||||
|
data = data[k]
|
||||||
|
del data[keys[-1]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# This is a custom element which creates \begingroup \endgroup groups in TeX
|
# This is a custom element which creates \begingroup \endgroup groups in TeX
|
||||||
|
|
Loading…
Reference in a new issue