# HG changeset patch # User Diggory Hardy # Date 1194105966 0 # Node ID 485c98ecbd91dc58d262cfabc277159a00dc66e1 # Parent 78eb491bd64254ed796a06f1d9b6f358ed7fd49c text.parse: fixed a small bug with char[]'s. committer: Diggory Hardy diff -r 78eb491bd642 -r 485c98ecbd91 mde/mde.d --- a/mde/mde.d Sat Nov 03 15:15:43 2007 +0000 +++ b/mde/mde.d Sat Nov 03 16:06:06 2007 +0000 @@ -22,14 +22,14 @@ Reader MTread; try { MTread = new Reader ("test.mtt", null, true); - /+static DataSection dataPrinter (ID) { return new test.DataPrinter; } - MTread.dataSecCreator = &dataPrinter;+/ + static DataSection dataPrinter (ID id) { return new test.DataPrinter (id); } + MTread.dataSecCreator = &dataPrinter; MTread.read(); } catch (Exception e) { Stdout (e.msg).newline; } - Stdout ("Data read from file:").newline; - test.printDataSet (MTread.dataset); + //Stdout ("Data read from file:").newline; + //test.printDataSet (MTread.dataset); return 0; // cleanup handled by init's DTOR diff -r 78eb491bd642 -r 485c98ecbd91 mde/mergetag/read.d --- a/mde/mergetag/read.d Sat Nov 03 15:15:43 2007 +0000 +++ b/mde/mergetag/read.d Sat Nov 03 16:06:06 2007 +0000 @@ -342,7 +342,7 @@ data = fbuf[pos_s..pos]; if (!comment && addTag != null) { - TypeInfo* ti_p = type in typeTable; + TypeInfo* ti_p = Util.trim(type) in typeTable; if (ti_p) addTag (*ti_p, tagID, data); else logger.warn ("Type not supported: " ~ type); } else comment = false; // cancel comment status now diff -r 78eb491bd642 -r 485c98ecbd91 mde/mergetag/write.d --- a/mde/mergetag/write.d Sat Nov 03 15:15:43 2007 +0000 +++ b/mde/mergetag/write.d Sat Nov 03 16:06:06 2007 +0000 @@ -196,6 +196,7 @@ private void writeSection (DataSection sec) { //FIXME + // convert TypeInfo ti using ti.toUtf8 ? buffer (Eol); // blank line at end of each section } diff -r 78eb491bd642 -r 485c98ecbd91 mde/test.d --- a/mde/test.d Sat Nov 03 15:15:43 2007 +0000 +++ b/mde/test.d Sat Nov 03 16:06:06 2007 +0000 @@ -2,6 +2,7 @@ module mde.test; import mde.mergetag.dataset; +import mde.text.parse; import tango.io.Stdout; @@ -35,8 +36,8 @@ class DataPrinter : DataSection { - this () { - Stdout ("New section (can't get ID from here).").newline; + this (ID id) { + Stdout ("New section (")(id)(").").newline; } void addTag (TypeInfo ti, ID id, char[] dt) { Stdout ("\tData item (")(id)("):\t")(ti)("\t")(dt).newline; diff -r 78eb491bd642 -r 485c98ecbd91 mde/text/parse.d --- a/mde/text/parse.d Sat Nov 03 15:15:43 2007 +0000 +++ b/mde/text/parse.d Sat Nov 03 16:06:06 2007 +0000 @@ -46,7 +46,7 @@ src = src[1..$-1]; T ret; ret.length = src.length; // maximum length; retract to actual length later - uint i; + uint i = 0; for (uint t = 0; t < src.length;) { // process a block of non-escaped characters uint s = t; @@ -56,8 +56,8 @@ i = j; // process a block of escaped characters - while (t < src.length) { - t++; // src[t] == '\\' + while (t < src.length && src[t] == '\\') { + t++; if (t == src.length) throwException (`Warning: \" in string! There's currently no support for this during tokenising. Thus your input's probably been garbled!`); // next char is " ret[i++] = replaceEscapedChar (src[t++]); // throws if it's invalid } @@ -213,7 +213,7 @@ char* r = c in escChars; if (r != null) return *r; - throwException ("Invalid escape sequence."); // we didn't return, so something failed + throwException ("Invalid escape sequence: \\"~c); // we didn't return, so something failed } // Reads one hex char: [0-9A-Fa-f]. Otherwise throws an exception. Doesn't check src.length. diff -r 78eb491bd642 -r 485c98ecbd91 test.mtt --- a/test.mtt Sat Nov 03 15:15:43 2007 +0000 +++ b/test.mtt Sat Nov 03 16:06:06 2007 +0000 @@ -13,8 +13,8 @@ {2}!{Chars and strings} - - - + + + {11}