- # Parse XSLT
- try:
- book_info = wldoc.book_info
- document = load_including_children(wldoc)
- root = document.edoc.getroot()
-
- if cover:
- if cover is True:
- cover = WLCover
- bound_cover = cover(book_info)
- root.set('data-cover-width', str(bound_cover.width))
- root.set('data-cover-height', str(bound_cover.height))
- if bound_cover.uses_dc_cover:
- if book_info.cover_by:
- root.set('data-cover-by', book_info.cover_by)
- if book_info.cover_source:
- root.set('data-cover-source',
- book_info.cover_source)
- if flags:
- for flag in flags:
- root.set('flag-' + flag, 'yes')
-
- # check for LaTeX packages
- if morefloats:
- root.set('morefloats', morefloats.lower())
- elif package_available('morefloats', 'maxfloats=19'):
- root.set('morefloats', 'new')
-
- # add customizations
- if customizations is not None:
- root.set('customizations', u','.join(customizations))
-
- # add editors info
- root.set('editors', u', '.join(sorted(
- editor.readable() for editor in document.editors())))
-
- # hack the tree
- move_motifs_inside(document.edoc)
- hack_motifs(document.edoc)
- parse_creator(document.edoc)
- substitute_hyphens(document.edoc)
- fix_hanging(document.edoc)
-
- # wl -> TeXML
- style_filename = get_stylesheet("wl2tex")
- style = etree.parse(style_filename)
-
- texml = document.transform(style)
-
- # TeXML -> LaTeX
- temp = mkdtemp('-wl2pdf')
+ if uri and provider:
+ f = provider.by_uri(uri)
+ # WTF DocProvider.by_uri() returns IOFile, so no .read() there
+ text = f.read().decode('utf-8')
+ f.close()
+ elif wldoc is not None:
+ text = etree.tostring(wldoc.edoc, encoding=unicode)
+ provider = wldoc.provider
+ else:
+ raise ValueError('Neither a WLDocument, nor provider and URI were provided.')