Mercurial > projects > mde
changeset 3:485c98ecbd91
text.parse: fixed a small bug with char[]'s.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 03 Nov 2007 16:06:06 +0000 |
parents | 78eb491bd642 |
children | 9a990644948c |
files | mde/mde.d mde/mergetag/read.d mde/mergetag/write.d mde/test.d mde/text/parse.d test.mtt |
diffstat | 6 files changed, 16 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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
--- 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 }
--- 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;
--- 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.
--- 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 @@ <binary|3=00102030405060708090A0B0C0D0E0F0> {2}!{Chars and strings} <char|1= ' '> -<char| 2 ='\a'> -<string|0= "A sequence of\tcharacters:\v1²€ç⋅−+↙↔↘,↕"> -<string|1= [ 's','t' ,'r' , 'i' , 'n' , 'g', ' ' , '2' ]> +<char | 2 ='\a'> +<string|1= "A sequence of\tcharacters:\v1²€ç⋅−+↙↔↘,↕"> +<string|2= [ 's','t' ,'r' , 'i' , 'n' , 'g', ' ' , '2' ]> {11} <int|5=6>