Source code for omi.dialects.base.dialect

from omi.dialects.base.compiler import Compiler
from omi.dialects.base.parser import Parser
from omi.dialects.base.renderer import Renderer
from omi.structure import OEPMetadata


[docs]class Dialect: _parser = Parser _compiler = Compiler _renderer = Renderer
[docs] def compile(self, obj: OEPMetadata, *args, **kwargs): """ Compiles the passed :class:`~omi.structure.OEPMetadata`-object into the structure fitting for this dialect Parameters ---------- obj The :class:`~omi.structure.OEPMetadata`-object to compile Returns ------- """ c = self._compiler() return c.visit(obj, *args, **kwargs)
[docs] def parse(self, string: str, *args, **kwargs) -> OEPMetadata: """ Loads the passed string into an :class:`~omi.structure.OEPMetadata`-object. Parameters ---------- string The string to parse Returns ------- The :class:`~omi.structure.OEPMetadata`-object represented by `string` """ p = self._parser() return p.parse_from_string(string, *args, **kwargs)
[docs] def render(self, structure, *args, **kwargs) -> str: """ Turns the structure used by this dialect into a string Parameters ---------- structure The structure to stringify Returns ------- A string representation of `structure` """ r = self._renderer() return r.render(structure, *args, **kwargs)
[docs] def compile_and_render(self, obj: OEPMetadata, *args, **kwargs): """ Combination of :func:`~omi.dialects.base.dialect.Dialect.compile` and :func:`~omi.dialects.base.dialect.Dialect.render`. """ c = self._compiler() r = self._renderer() compiled = c.visit(obj, *args, **kwargs) return r.render(compiled, *args, **kwargs)