def document_factory(ident_hash, context=None, baked=False): metadata = get_metadata(ident_hash) if baked and context is None: raise RuntimeError("Request for baked Document with no context") content = get_content(ident_hash, context) resources_map = { h: resource_factory(h, ident_hash) for h in get_registered_files(ident_hash) } doc = cnxepub.Document(metadata['id'], content, metadata=metadata, resources=resources_map.values()) # FIXME the referencing binding template doesn't allow for more than # the `id` to be set. Change this to allow an anonymous function. for ref in doc.references: if ref.remote_type != 'internal' \ or not ref.uri.startswith('/resources/'): continue hash, filename = ref.uri.split('/')[-2:] if hash == 'resources': # if ref.uri is just /resources/hash (without filename) hash = filename try: resource = resources_map[hash] except KeyError: # reference w/o resource resource = resource_factory(hash) ref.bind(resource, '/resources/{}') return doc
def document_factory(ident_hash, context=None, baked=False): metadata = get_metadata(ident_hash) if baked and context is None: raise RuntimeError("Request for baked Document with no context") content = get_content(ident_hash, context) resources_map = {h: resource_factory(h, ident_hash) for h in get_registered_files(ident_hash)} doc = cnxepub.Document(metadata['id'], content, metadata=metadata, resources=resources_map.values()) # FIXME the referencing binding template doesn't allow for more than # the `id` to be set. Change this to allow an anonymous function. for ref in doc.references: if ref.remote_type != 'internal' \ or not ref.uri.startswith('/resources/'): continue hash, filename = ref.uri.split('/')[-2:] if hash == 'resources': # if ref.uri is just /resources/hash (without filename) hash = filename try: resource = resources_map[hash] except KeyError: # reference w/o resource resource = resource_factory(hash) ref.bind(resource, '/resources/{}') return doc
def binder_factory(ident_hash): metadata = get_metadata(ident_hash) tree = get_tree(ident_hash) nodes = tree_to_nodes(tree) titles = _title_overrides_from_tree(tree) resources = [resource_factory(h, ident_hash) for h in get_registered_files(ident_hash)] binder = cnxepub.Binder(metadata['id'], nodes=nodes, metadata=metadata, resources=resources, title_overrides=titles) return binder
def binder_factory(ident_hash, baked=False): metadata = get_metadata(ident_hash) tree = get_tree(ident_hash, baked=baked) if baked: context = tree['id'] else: context = None nodes = tree_to_nodes(tree, context, metadata) titles = _title_overrides_from_tree(tree) resources = [resource_factory(h, ident_hash) for h in get_registered_files(ident_hash)] binder = cnxepub.Binder(metadata['id'], nodes=nodes, metadata=metadata, resources=resources, title_overrides=titles) return binder
def binder_factory(ident_hash, baked=False): metadata = get_metadata(ident_hash) tree = get_tree(ident_hash, baked=baked) if baked: context = tree['id'] else: context = None nodes = tree_to_nodes(tree, context, metadata) titles = _title_overrides_from_tree(tree) resources = [ resource_factory(h, ident_hash) for h in get_registered_files(ident_hash) ] binder = cnxepub.Binder(metadata['id'], nodes=nodes, metadata=metadata, resources=resources, title_overrides=titles) return binder