Checkpoint. This is not compiling right now due to three annoying problems:

- There seems to be a compiler bug that causes classes to be
  imported spuriously, or something. Classes that import only one of the Log
  classes are complaining about visibility of more than one of them.
- static constants are not inherited by subclasses, which is super annoying.
  I will try switching to prototype consts, but there seems to be a problem
  initializing those, and we don't want to make them vars...
- The fact that there are no inner classes combined with no method overloading
  is making things very inconvenient. I've been experimenting with faking
  an anonymous class by instantiating a dynamic object and attaching
  functions to it, but it's not working. I'll continue experimenting, because
  if we can't do this then someone shoot me.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3957 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2006-03-17 02:19:53 +00:00
parent d1b997b9ff
commit 091c7d2401
22 changed files with 283 additions and 123 deletions
+35 -31
View File
@@ -21,6 +21,8 @@
package com.threerings.util {
import flash.util.StringBuilder;
/**
* A message bundle provides an easy mechanism by which to obtain
* translated message strings from a resource bundle. It uses the {@link
@@ -65,31 +67,29 @@ public class MessageBundle
protected function getResourceString (
key :String, reportMissing :Boolean = true) :String
{
// TODO!!!
// try {
// if (_bundle != null) {
// return _bundle.getString(key);
// }
// } catch (MissingResourceException mre) {
// // fall through and try the parent
// }
//
// // if we have a parent, try getting the string from them
// if (_parent != null) {
// String value = _parent.getResourceString(key, false);
// if (value != null) {
// return value;
// }
// // if we didn't find it in our parent, we want to fall
// // through and report missing appropriately
// }
//
// if (reportMissing) {
// Log.warning("Missing translation message " +
// "[bundle=" + _path + ", key=" + key + "].");
// Thread.dumpStack();
// }
//
try {
if (_bundle != null) {
return _bundle.getString(key);
}
} catch (missingResource :Error) {
// fall through and try the parent
}
// if we have a parent, try getting the string from them
if (_parent != null) {
var value :String = _parent.getResourceString(key, false);
if (value != null) {
return value;
}
// if we didn't find it in our parent, we want to fall
// through and report missing appropriately
}
if (reportMissing) {
Log.warning("Missing translation message " +
"[bundle=" + _path + ", key=" + key + "].");
}
return null;
}
@@ -128,7 +128,7 @@ public class MessageBundle
{
// if this string is tainted, we don't translate it, instead we
// simply remove the taint character and return it to the caller
if (key.chatAt(0) === TAINT_CHAR) {
if (key.charAt(0) === TAINT_CHAR) {
return key.substring(1);
}
@@ -151,8 +151,8 @@ public class MessageBundle
}
return (msg != null) ?
MessageFormat.format(MessageUtil.escape(msg), args)
: (key + StringUtil.toString(args));
MessageFormat.format(escape(msg), args)
: (key + args);
}
/**
@@ -352,7 +352,7 @@ public class MessageBundle
var buf :StringBuilder = new StringBuilder();
for (var ii :int = 0; ii < val.length; ii++) {
var ch :String = value.charAt(0);
var ch :String = val.charAt(0);
if (ch != "\\" || ii == val.length-1) {
buf.append(ch);
} else {
@@ -385,7 +385,11 @@ public class MessageBundle
}
}
// TODO: figure out how this is all actually going to even work
class ResourceBundle
// TODO: figure out what we're going to do here
class MessageFormat
{
public static function format (msg :String, ... rest) :String
{
return msg + rest;
}
}