From 0dabe6e596c99702cfd2985fe8576ddcbcc7634c Mon Sep 17 00:00:00 2001 From: Jan Wielemaker Date: Wed, 31 Oct 2012 10:51:32 +0100 Subject: [PATCH] CLEANUP: Use new XML character classification routines --- ods_table.pl | 330 +-------------------------------------------------- test.pl | 8 +- 2 files changed, 7 insertions(+), 331 deletions(-) diff --git a/ods_table.pl b/ods_table.pl index e0aa050..6065972 100644 --- a/ods_table.pl +++ b/ods_table.pl @@ -573,16 +573,16 @@ function_name_code(C) --> [C], - { xml_base(C) + { xml_basechar(C) ; xml_digit(C) ; C == 0'_ ; C == 0'. ; xml_ideographic(C) - ; xml_combining(C) + ; xml_combining_char(C) }, !. -letter_xml(C) --> [C], { xml_base(C) ; +letter_xml(C) --> [C], { xml_basechar(C) ; xml_ideographic(C) }, !. @@ -1135,330 +1135,6 @@ ods_warning(no_cell(Sheet,X,Y)). - /******************************* - * XML CHARACTER CLASSES * - *******************************/ - -xml_base(C) :- between(0x0041, 0x005A, C). -xml_base(C) :- between(0x0061, 0x007A, C). -xml_base(C) :- between(0x00C0, 0x00D6, C). -xml_base(C) :- between(0x00D8, 0x00F6, C). -xml_base(C) :- between(0x00F8, 0x00FF, C). -xml_base(C) :- between(0x0100, 0x0131, C). -xml_base(C) :- between(0x0134, 0x013E, C). -xml_base(C) :- between(0x0141, 0x0148, C). -xml_base(C) :- between(0x014A, 0x017E, C). -xml_base(C) :- between(0x0180, 0x01C3, C). -xml_base(C) :- between(0x01CD, 0x01F0, C). -xml_base(C) :- between(0x01F4, 0x01F5, C). -xml_base(C) :- between(0x01FA, 0x0217, C). -xml_base(C) :- between(0x0250, 0x02A8, C). -xml_base(C) :- between(0x02BB, 0x02C1, C). -xml_base(0x0386). -xml_base(C) :- between(0x0388, 0x038A, C). -xml_base(0x038C). -xml_base(C) :- between(0x038E, 0x03A1, C). -xml_base(C) :- between(0x03A3, 0x03CE, C). -xml_base(C) :- between(0x03D0, 0x03D6, C). -xml_base(0x03DA). -xml_base(0x03DC). -xml_base(0x03DE). -xml_base(0x03E0). -xml_base(C) :- between(0x03E2, 0x03F3, C). -xml_base(C) :- between(0x0401, 0x040C, C). -xml_base(C) :- between(0x040E, 0x044F, C). -xml_base(C) :- between(0x0451, 0x045C, C). -xml_base(C) :- between(0x045E, 0x0481, C). -xml_base(C) :- between(0x0490, 0x04C4, C). -xml_base(C) :- between(0x04C7, 0x04C8, C). -xml_base(C) :- between(0x04CB, 0x04CC, C). -xml_base(C) :- between(0x04D0, 0x04EB, C). -xml_base(C) :- between(0x04EE, 0x04F5, C). -xml_base(C) :- between(0x04F8, 0x04F9, C). -xml_base(C) :- between(0x0531, 0x0556, C). -xml_base(0x0559). -xml_base(C) :- between(0x0561, 0x0586, C). -xml_base(C) :- between(0x05D0, 0x05EA, C). -xml_base(C) :- between(0x05F0, 0x05F2, C). -xml_base(C) :- between(0x0621, 0x063A, C). -xml_base(C) :- between(0x0641, 0x064A, C). -xml_base(C) :- between(0x0671, 0x06B7, C). -xml_base(C) :- between(0x06BA, 0x06BE, C). -xml_base(C) :- between(0x06C0, 0x06CE, C). -xml_base(C) :- between(0x06D0, 0x06D3, C). -xml_base(0x06D5). -xml_base(C) :- between(0x06E5, 0x06E6, C). -xml_base(C) :- between(0x0905, 0x0939, C). -xml_base(0x093D). -xml_base(C) :- between(0x0958, 0x0961, C). -xml_base(C) :- between(0x0985, 0x098C, C). -xml_base(C) :- between(0x098F, 0x0990, C). -xml_base(C) :- between(0x0993, 0x09A8, C). -xml_base(C) :- between(0x09AA, 0x09B0, C). -xml_base(0x09B2). -xml_base(C) :- between(0x09B6, 0x09B9, C). -xml_base(C) :- between(0x09DC, 0x09DD, C). -xml_base(C) :- between(0x09DF, 0x09E1, C). -xml_base(C) :- between(0x09F0, 0x09F1, C). -xml_base(C) :- between(0x0A05, 0x0A0A, C). -xml_base(C) :- between(0x0A0F, 0x0A10, C). -xml_base(C) :- between(0x0A13, 0x0A28, C). -xml_base(C) :- between(0x0A2A, 0x0A30, C). -xml_base(C) :- between(0x0A32, 0x0A33, C). -xml_base(C) :- between(0x0A35, 0x0A36, C). -xml_base(C) :- between(0x0A38, 0x0A39, C). -xml_base(C) :- between(0x0A59, 0x0A5C, C). -xml_base(0x0A5E). -xml_base(C) :- between(0x0A72, 0x0A74, C). -xml_base(C) :- between(0x0A85, 0x0A8B, C). -xml_base(0x0A8D). -xml_base(C) :- between(0x0A8F, 0x0A91, C). -xml_base(C) :- between(0x0A93, 0x0AA8, C). -xml_base(C) :- between(0x0AAA, 0x0AB0, C). -xml_base(C) :- between(0x0AB2, 0x0AB3, C). -xml_base(C) :- between(0x0AB5, 0x0AB9, C). -xml_base(0x0ABD). -xml_base(0x0AE0). -xml_base(C) :- between(0x0B05, 0x0B0C, C). -xml_base(C) :- between(0x0B0F, 0x0B10, C). -xml_base(C) :- between(0x0B13, 0x0B28, C). -xml_base(C) :- between(0x0B2A, 0x0B30, C). -xml_base(C) :- between(0x0B32, 0x0B33, C). -xml_base(C) :- between(0x0B36, 0x0B39, C). -xml_base(0x0B3D). -xml_base(C) :- between(0x0B5C, 0x0B5D, C). -xml_base(C) :- between(0x0B5F, 0x0B61, C). -xml_base(C) :- between(0x0B85, 0x0B8A, C). -xml_base(C) :- between(0x0B8E, 0x0B90, C). -xml_base(C) :- between(0x0B92, 0x0B95, C). -xml_base(C) :- between(0x0B99, 0x0B9A, C). -xml_base(0x0B9C). -xml_base(C) :- between(0x0B9E, 0x0B9F, C). -xml_base(C) :- between(0x0BA3, 0x0BA4, C). -xml_base(C) :- between(0x0BA8, 0x0BAA, C). -xml_base(C) :- between(0x0BAE, 0x0BB5, C). -xml_base(C) :- between(0x0BB7, 0x0BB9, C). -xml_base(C) :- between(0x0C05, 0x0C0C, C). -xml_base(C) :- between(0x0C0E, 0x0C10, C). -xml_base(C) :- between(0x0C12, 0x0C28, C). -xml_base(C) :- between(0x0C2A, 0x0C33, C). -xml_base(C) :- between(0x0C35, 0x0C39, C). -xml_base(C) :- between(0x0C60, 0x0C61, C). -xml_base(C) :- between(0x0C85, 0x0C8C, C). -xml_base(C) :- between(0x0C8E, 0x0C90, C). -xml_base(C) :- between(0x0C92, 0x0CA8, C). -xml_base(C) :- between(0x0CAA, 0x0CB3, C). -xml_base(C) :- between(0x0CB5, 0x0CB9, C). -xml_base(0x0CDE). -xml_base(C) :- between(0x0CE0, 0x0CE1, C). -xml_base(C) :- between(0x0D05, 0x0D0C, C). -xml_base(C) :- between(0x0D0E, 0x0D10, C). -xml_base(C) :- between(0x0D12, 0x0D28, C). -xml_base(C) :- between(0x0D2A, 0x0D39, C). -xml_base(C) :- between(0x0D60, 0x0D61, C). -xml_base(C) :- between(0x0E01, 0x0E2E, C). -xml_base(0x0E30). -xml_base(C) :- between(0x0E32, 0x0E33, C). -xml_base(C) :- between(0x0E40, 0x0E45, C). -xml_base(C) :- between(0x0E81, 0x0E82, C). -xml_base(0x0E84). -xml_base(C) :- between(0x0E87, 0x0E88, C). -xml_base(0x0E8A). -xml_base(0x0E8D). -xml_base(C) :- between(0x0E94, 0x0E97, C). -xml_base(C) :- between(0x0E99, 0x0E9F, C). -xml_base(C) :- between(0x0EA1, 0x0EA3, C). -xml_base(0x0EA5). -xml_base(0x0EA7). -xml_base(C) :- between(0x0EAA, 0x0EAB, C). -xml_base(C) :- between(0x0EAD, 0x0EAE, C). -xml_base(0x0EB0). -xml_base(C) :- between(0x0EB2, 0x0EB3, C). -xml_base(0x0EBD). -xml_base(C) :- between(0x0EC0, 0x0EC4, C). -xml_base(C) :- between(0x0F40, 0x0F47, C). -xml_base(C) :- between(0x0F49, 0x0F69, C). -xml_base(C) :- between(0x10A0, 0x10C5, C). -xml_base(C) :- between(0x10D0, 0x10F6, C). -xml_base(0x1100). -xml_base(C) :- between(0x1102, 0x1103, C). -xml_base(C) :- between(0x1105, 0x1107, C). -xml_base(0x1109). -xml_base(C) :- between(0x110B, 0x110C, C). -xml_base(C) :- between(0x110E, 0x1112, C). -xml_base(0x113C). -xml_base(0x113E). -xml_base(0x1140). -xml_base(0x114C). -xml_base(0x114E). -xml_base(0x1150). -xml_base(C) :- between(0x1154, 0x1155, C). -xml_base(0x1159). -xml_base(C) :- between(0x115F, 0x1161, C). -xml_base(0x1163). -xml_base(0x1165). -xml_base(0x1167). -xml_base(0x1169). -xml_base(C) :- between(0x116D, 0x116E, C). -xml_base(C) :- between(0x1172, 0x1173, C). -xml_base(0x1175). -xml_base(0x119E). -xml_base(0x11A8). -xml_base(0x11AB). -xml_base(C) :- between(0x11AE, 0x11AF, C). -xml_base(C) :- between(0x11B7, 0x11B8, C). -xml_base(0x11BA). -xml_base(C) :- between(0x11BC, 0x11C2, C). -xml_base(0x11EB). -xml_base(0x11F0). -xml_base(0x11F9). -xml_base(C) :- between(0x1E00, 0x1E9B, C). -xml_base(C) :- between(0x1EA0, 0x1EF9, C). -xml_base(C) :- between(0x1F00, 0x1F15, C). -xml_base(C) :- between(0x1F18, 0x1F1D, C). -xml_base(C) :- between(0x1F20, 0x1F45, C). -xml_base(C) :- between(0x1F48, 0x1F4D, C). -xml_base(C) :- between(0x1F50, 0x1F57, C). -xml_base(0x1F59). -xml_base(0x1F5B). -xml_base(0x1F5D). -xml_base(C) :- between(0x1F5F, 0x1F7D, C). -xml_base(C) :- between(0x1F80, 0x1FB4, C). -xml_base(C) :- between(0x1FB6, 0x1FBC, C). -xml_base(0x1FBE). -xml_base(C) :- between(0x1FC2, 0x1FC4, C). -xml_base(C) :- between(0x1FC6, 0x1FCC, C). -xml_base(C) :- between(0x1FD0, 0x1FD3, C). -xml_base(C) :- between(0x1FD6, 0x1FDB, C). -xml_base(C) :- between(0x1FE0, 0x1FEC, C). -xml_base(C) :- between(0x1FF2, 0x1FF4, C). -xml_base(C) :- between(0x1FF6, 0x1FFC, C). -xml_base(0x2126). -xml_base(C) :- between(0x212A, 0x212B, C). -xml_base(0x212E). -xml_base(C) :- between(0x2180, 0x2182, C). -xml_base(C) :- between(0x3041, 0x3094, C). -xml_base(C) :- between(0x30A1, 0x30FA, C). -xml_base(C) :- between(0x3105, 0x312C, C). -xml_base(C) :- between(0xAC00, 0xD7A3, C). - -xml_ideographic(C) :- between(0x4E00, 0x9FA5, C). -xml_ideographic(0x3007). -xml_ideographic(C) :- between(0x3021, 0x3029, C). - -xml_combining(C) :- between(0x0300, 0x0345, C). -xml_combining(C) :- between(0x0360, 0x0361, C). -xml_combining(C) :- between(0x0483, 0x0486, C). -xml_combining(C) :- between(0x0591, 0x05A1, C). -xml_combining(C) :- between(0x05A3, 0x05B9, C). -xml_combining(C) :- between(0x05BB, 0x05BD, C). -xml_combining(0x05BF). -xml_combining(C) :- between(0x05C1, 0x05C2, C). -xml_combining(0x05C4). -xml_combining(C) :- between(0x064B, 0x0652, C). -xml_combining(0x0670). -xml_combining(C) :- between(0x06D6, 0x06DC, C). -xml_combining(C) :- between(0x06DD, 0x06DF, C). -xml_combining(C) :- between(0x06E0, 0x06E4, C). -xml_combining(C) :- between(0x06E7, 0x06E8, C). -xml_combining(C) :- between(0x06EA, 0x06ED, C). -xml_combining(C) :- between(0x0901, 0x0903, C). -xml_combining(0x093C). -xml_combining(C) :- between(0x093E, 0x094C, C). -xml_combining(0x094D). -xml_combining(C) :- between(0x0951, 0x0954, C). -xml_combining(C) :- between(0x0962, 0x0963, C). -xml_combining(C) :- between(0x0981, 0x0983, C). -xml_combining(0x09BC). -xml_combining(0x09BE). -xml_combining(0x09BF). -xml_combining(C) :- between(0x09C0, 0x09C4, C). -xml_combining(C) :- between(0x09C7, 0x09C8, C). -xml_combining(C) :- between(0x09CB, 0x09CD, C). -xml_combining(0x09D7). -xml_combining(C) :- between(0x09E2, 0x09E3, C). -xml_combining(0x0A02). -xml_combining(0x0A3C). -xml_combining(0x0A3E). -xml_combining(0x0A3F). -xml_combining(C) :- between(0x0A40, 0x0A42, C). -xml_combining(C) :- between(0x0A47, 0x0A48, C). -xml_combining(C) :- between(0x0A4B, 0x0A4D, C). -xml_combining(C) :- between(0x0A70, 0x0A71, C). -xml_combining(C) :- between(0x0A81, 0x0A83, C). -xml_combining(0x0ABC). -xml_combining(C) :- between(0x0ABE, 0x0AC5, C). -xml_combining(C) :- between(0x0AC7, 0x0AC9, C). -xml_combining(C) :- between(0x0ACB, 0x0ACD, C). -xml_combining(C) :- between(0x0B01, 0x0B03, C). -xml_combining(0x0B3C). -xml_combining(C) :- between(0x0B3E, 0x0B43, C). -xml_combining(C) :- between(0x0B47, 0x0B48, C). -xml_combining(C) :- between(0x0B4B, 0x0B4D, C). -xml_combining(C) :- between(0x0B56, 0x0B57, C). -xml_combining(C) :- between(0x0B82, 0x0B83, C). -xml_combining(C) :- between(0x0BBE, 0x0BC2, C). -xml_combining(C) :- between(0x0BC6, 0x0BC8, C). -xml_combining(C) :- between(0x0BCA, 0x0BCD, C). -xml_combining(0x0BD7). -xml_combining(C) :- between(0x0C01, 0x0C03, C). -xml_combining(C) :- between(0x0C3E, 0x0C44, C). -xml_combining(C) :- between(0x0C46, 0x0C48, C). -xml_combining(C) :- between(0x0C4A, 0x0C4D, C). -xml_combining(C) :- between(0x0C55, 0x0C56, C). -xml_combining(C) :- between(0x0C82, 0x0C83, C). -xml_combining(C) :- between(0x0CBE, 0x0CC4, C). -xml_combining(C) :- between(0x0CC6, 0x0CC8, C). -xml_combining(C) :- between(0x0CCA, 0x0CCD, C). -xml_combining(C) :- between(0x0CD5, 0x0CD6, C). -xml_combining(C) :- between(0x0D02, 0x0D03, C). -xml_combining(C) :- between(0x0D3E, 0x0D43, C). -xml_combining(C) :- between(0x0D46, 0x0D48, C). -xml_combining(C) :- between(0x0D4A, 0x0D4D, C). -xml_combining(0x0D57). -xml_combining(0x0E31). -xml_combining(C) :- between(0x0E34, 0x0E3A, C). -xml_combining(C) :- between(0x0E47, 0x0E4E, C). -xml_combining(0x0EB1). -xml_combining(C) :- between(0x0EB4, 0x0EB9, C). -xml_combining(C) :- between(0x0EBB, 0x0EBC, C). -xml_combining(C) :- between(0x0EC8, 0x0ECD, C). -xml_combining(C) :- between(0x0F18, 0x0F19, C). -xml_combining(0x0F35). -xml_combining(0x0F37). -xml_combining(0x0F39). -xml_combining(0x0F3E). -xml_combining(0x0F3F). -xml_combining(C) :- between(0x0F71, 0x0F84, C). -xml_combining(C) :- between(0x0F86, 0x0F8B, C). -xml_combining(C) :- between(0x0F90, 0x0F95, C). -xml_combining(0x0F97). -xml_combining(C) :- between(0x0F99, 0x0FAD, C). -xml_combining(C) :- between(0x0FB1, 0x0FB7, C). -xml_combining(0x0FB9). -xml_combining(C) :- between(0x20D0, 0x20DC, C). -xml_combining(0x20E1). -xml_combining(C) :- between(0x302A, 0x302F, C). -xml_combining(0x3099). -xml_combining(0x309A). - -xml_digit(C) :- between(0x0030, 0x0039, C). -xml_digit(C) :- between(0x0660, 0x0669, C). -xml_digit(C) :- between(0x06F0, 0x06F9, C). -xml_digit(C) :- between(0x0966, 0x096F, C). -xml_digit(C) :- between(0x09E6, 0x09EF, C). -xml_digit(C) :- between(0x0A66, 0x0A6F, C). -xml_digit(C) :- between(0x0AE6, 0x0AEF, C). -xml_digit(C) :- between(0x0B66, 0x0B6F, C). -xml_digit(C) :- between(0x0BE7, 0x0BEF, C). -xml_digit(C) :- between(0x0C66, 0x0C6F, C). -xml_digit(C) :- between(0x0CE6, 0x0CEF, C). -xml_digit(C) :- between(0x0D66, 0x0D6F, C). -xml_digit(C) :- between(0x0E50, 0x0E59, C). -xml_digit(C) :- between(0x0ED0, 0x0ED9, C). -xml_digit(C) :- between(0x0F20, 0x0F29, C). - - /******************************* * UTIL * *******************************/ diff --git a/test.pl b/test.pl index e9793f5..0648ecd 100644 --- a/test.pl +++ b/test.pl @@ -106,12 +106,12 @@ ; abs(X-Y) < 0.000000001 ). +:- meta_predicate + p(:,+,+). - -p(X,Y) :- - sheet(Sheet), - cell(Sheet, Id, Value, Type, Formula, Style, _Annotation), +p(M:Sheet, X,Y) :- ods_table:cell_id(X, Y, Id), + M:cell(Sheet, Id, Value, Type, Formula, Style, _Annotation), format('Value = ~q, Type = ~q, Formula = ~q, Style = ~q', [ Value, Type, Formula, Style] ).