Mercurial > projects > mde
diff mde/lookup/Translation.d @ 79:61ea26abe4dd
Moved mde/mergetag/parse/parse(To/From) to mde/mergetag/(de)serialize. Implemented (de)serialization of structs.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Tue, 05 Aug 2008 11:51:51 +0100 |
parents | 25cb7420dc91 |
children | d8fccaa45d5f |
line wrap: on
line diff
--- a/mde/lookup/Translation.d Tue Jul 29 18:14:53 2008 +0100 +++ b/mde/lookup/Translation.d Tue Aug 05 11:51:51 2008 +0100 @@ -44,7 +44,7 @@ import mde.mergetag.DataSet; import mde.mergetag.Reader; import mde.mergetag.exception; -import mde.mergetag.parse.parseTo; +import mde.mergetag.deserialize; import tango.util.log.Log : Log, Logger; @@ -68,7 +68,7 @@ char[] entry (char[] id) { Entry* p = id in entries; if (p) { - return p.str; + return p.name; } else { return id; } @@ -78,7 +78,7 @@ Entry* p = id in entries; if (p) { description = p.desc; - return p.str; + return p.name; } else { return id; } @@ -91,7 +91,7 @@ return *p; } else { Entry ret; - ret.str = id; + ret.name = id; return ret; } } @@ -117,7 +117,7 @@ IReader reader; try { - reader = dataDir.makeMTReader ("L10n/"~name, PRIORITY.HIGH_LOW); + reader = dataDir.makeMTReader (name, PRIORITY.HIGH_LOW); /* Note: we don't want to load every translation section depended on to its own class * instance, since we want to merge them. So make every mergetag section use the same * instance. */ @@ -167,22 +167,14 @@ */ void addTag (char[] tp, ID id, char[] dt) { if (tp == "entry") { - char[][] fields = split (stripBrackets (dt)); + // If the tag already exists, don't replace it + if (cast(char[]) id in entries) return; - if (fields.length < 1) { - // This tag is invalid, but this fact doesn't need to be reported elsewhere: + Entry entry = deserialize!(Entry) (dt); + if (entry.name is null) { // This tag is invalid; ignore it logger.error ("For name "~name~", L10n "~L10n~": tag with ID "~cast(char[])id~" has no data"); return; } - // If the tag already exists, don't replace it - if (cast(char[]) id in entries) return; - - Entry entry; - entry.str = parseTo!(char[]) (fields[0]); - - if (fields.length >= 2) - entry.desc = parseTo!(char[]) (fields[1]); - entries[cast(char[]) id] = entry; } else if (tp == "char[][]") { if (id == cast(ID)"depends") depends = cast(ID[]) parseTo!(char[][]) (dt); @@ -197,7 +189,7 @@ * Note that although each entry also has a version field, this is not loaded for general use. */ struct Entry { - char[] str; // The translated string + char[] name; // The translated string char[] desc; // An optional description } @@ -236,7 +228,7 @@ char[] currentL10n = miscOpts.L10n; miscOpts.L10n = "test-1"; - Translation transl = load ("i18nUnitTest"); + Translation transl = load ("unittest/Translation"); // Simple get-string, check dependancy's entry doesn't override assert (transl.entry ("Str1") == "Test 1");