New Element-based builder API (WiP).
[librarian.git] / src / librarian / document.py
1 from lxml import etree
2 from .builders import get_builder_class
3 from .parser import parser
4 from . import dcparser
5
6
7 class WLDocument:
8     def __init__(self, tree=None, filename=None):
9         if filename is not None:
10             tree = etree.parse(filename, parser=parser)
11         self.tree = tree
12         tree.getroot().document = self
13         self.base_meta = dcparser.BookInfo({}, {}, validate_required=False)
14
15     @property
16     def meta(self):
17         # Allow metadata of the master element as document meta.
18         #master = self.tree.getroot()[-1]
19         return self.tree.getroot().meta
20         return master.meta
21
22     def build(self, builder_id, **kwargs):
23         return get_builder_class(builder_id)().build(self, **kwargs)
24