ref: d0ab3a0dd8f6355b3603d0fb04043a9ae867639b
dir: /appl/ebook/oebpackage.m/
OEBpackage: module {
PATH: con "/dis/ebook/oebpackage.dis";
Package: adt {
file: string;
uniqueid: string;
meta: list of (string, Xml->Attributes, string); # dublin-core metadata
manifest: list of ref Item; # all items in the ebook
spine: list of ref Item; # reading order
guide: list of ref Reference;
getmeta: fn(p: self ref Package, n: string): list of (Xml->Attributes, string);
locate: fn(p: self ref Package): int;
};
Item: adt {
id: string;
# can we assume that the href doesn't end in #idref?
href: string;
mediatype: string;
fallback: cyclic ref Item;
file: string; # local file name
missing: string; # if it's missing, why
};
Reference: adt {
sort: string; # XXX what's this?
title: string;
href: string;
};
init: fn(xml: Xml);
open: fn(f: string, warnings: chan of (Xml->Locator,string)): (ref Package, string);
};