--- /dev/null
+module L = List
+module S = String
+module V = Array
+
+module T = Table
+module M = Matrix
+module A = Attr
+
+type status = {
+ m: M.matrix;
+ c: T.css A.atoms;
+ u: T.uri A.atoms;
+ x: T.ext A.atoms;
+}
+
+let initial c u x m = {
+ m = m; c = c; u = u; x = x
+}
+
+let process_cell st y x c =
+ M.set_attrs st.m y x
+ (A.get_attr L.concat [] st.c y x)
+ (A.get_attr (S.concat "") "" st.u y x)
+ (A.get_attr (S.concat "") "" st.x y x)
+ ""
+
+let process_row st y row =
+ V.iteri (process_cell st y) row
+
+let process css uri ext matrix =
+ let st = initial css uri ext matrix in
+ V.iteri (process_row st) matrix.M.m