ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /appl/ebook/stylesheet.m/
Stylesheet: module {
PATH: con "/dis/ebook/stylesheet.dis";
DEFAULT, READER, AUTHOR: con iota;
init: fn(stylenames: array of string);
Style: adt {
sheet: ref Sheet;
attrs: array of string; # values
spec: array of int; # specificity
add: fn(style: self ref Style, tag, class: string);
adddecls: fn(style: self ref Style, decls: list of CSSparser->Decl);
addone: fn(style: self ref Style, attr: int, origin: int, val: string);
};
Sheet: adt {
new: fn(): ref Sheet;
addrules: fn(sheet: self ref Sheet,
rules: list of (string, list of CSSparser->Decl), origin: int);
newstyle: fn(sheet: self ref Sheet): ref Style;
# private from here
rules: array of list of Rule;
ruleid: int; # sequential ordering of rules
};
# private from here
# declaration as stored internally.
Ldecl: adt {
attrid: int;
specificity: int;
val: string;
};
Rule: adt {
key: string; # hash key: "tagname" or ".classname"
sub: string; # tag name if rule is for a tag-specific class
decls: list of Ldecl;
};
};