[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath:
MessageFormat fixes
Kaffe CVS
cvs-commits at kaffe.org
Tue Jan 18 07:31:10 PST 2005
PatchSet 5872
Date: 2005/01/18 15:23:53
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: MessageFormat fixes
2005-01-18 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-01-17 Tom Tromey <tromey at redhat.com>
* java/text/MessageFormat.java (scanString): Changed how quoting
is handled.
(scanFormatElement): Likewise.
Members:
ChangeLog:1.3413->1.3414
libraries/javalib/java/text/MessageFormat.java:1.33->1.34
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3413 kaffe/ChangeLog:1.3414
--- kaffe/ChangeLog:1.3413 Tue Jan 18 15:18:42 2005
+++ kaffe/ChangeLog Tue Jan 18 15:23:53 2005
@@ -2,6 +2,16 @@
Resynced with GNU Classpath.
+ 2005-01-17 Tom Tromey <tromey at redhat.com>
+
+ * java/text/MessageFormat.java (scanString): Changed how quoting
+ is handled.
+ (scanFormatElement): Likewise.
+
+2005-01-18 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
2005-01-17 Michael Koch <konqueror at gmx.de>
PR libgcj/19444
Index: kaffe/libraries/javalib/java/text/MessageFormat.java
diff -u kaffe/libraries/javalib/java/text/MessageFormat.java:1.33 kaffe/libraries/javalib/java/text/MessageFormat.java:1.34
--- kaffe/libraries/javalib/java/text/MessageFormat.java:1.33 Fri Dec 10 23:16:05 2004
+++ kaffe/libraries/javalib/java/text/MessageFormat.java Tue Jan 18 15:23:58 2005
@@ -1,5 +1,5 @@
/* MessageFormat.java - Localized message formatting.
- Copyright (C) 1999, 2001, 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -193,27 +193,36 @@
{
int max = pat.length();
buffer.setLength(0);
+ boolean quoted = false;
for (; index < max; ++index)
{
char c = pat.charAt(index);
- if (c == '\'' && index + 2 < max && pat.charAt(index + 2) == '\'')
+ if (quoted)
{
- buffer.append(pat.charAt(index + 1));
- index += 2;
+ // In a quoted context, a single quote ends the quoting.
+ if (c == '\'')
+ quoted = false;
+ else
+ buffer.append(c);
}
- else if (c == '\'' && index + 1 < max
- && pat.charAt(index + 1) == '\'')
+ // Check for '', which is a single quote.
+ else if (c == '\'' && index + 1 < max && pat.charAt(index + 1) == '\'')
{
buffer.append(c);
++index;
}
+ else if (c == '\'')
+ {
+ // Start quoting.
+ quoted = true;
+ }
else if (c == '{')
break;
- else if (c == '}')
- throw new IllegalArgumentException("Found '}' without '{'");
else
buffer.append(c);
}
+ // Note that we explicitly allow an unterminated quote. This is
+ // done for compatibility.
return index;
}
@@ -225,39 +234,42 @@
int max = pat.length();
buffer.setLength(0);
int brace_depth = 1;
+ boolean quoted = false;
for (; index < max; ++index)
{
char c = pat.charAt(index);
- if (c == '\'' && index + 2 < max && pat.charAt(index + 2) == '\'')
+ // First see if we should turn off quoting.
+ if (quoted)
{
- buffer.append(c);
- buffer.append(pat.charAt(index + 1));
- buffer.append(c);
- index += 2;
+ if (c == '\'')
+ quoted = false;
+ // In both cases we fall through to inserting the
+ // character here.
}
+ // See if we have just a plain quote to insert.
else if (c == '\'' && index + 1 < max
&& pat.charAt(index + 1) == '\'')
{
buffer.append(c);
++index;
}
+ // See if quoting should turn on.
+ else if (c == '\'')
+ quoted = true;
else if (c == '{')
- {
- buffer.append(c);
- ++brace_depth;
- }
+ ++brace_depth;
else if (c == '}')
{
if (--brace_depth == 0)
break;
- buffer.append(c);
}
// Check for TERM after braces, because TERM might be `}'.
else if (c == term)
break;
- else
- buffer.append(c);
+ // All characters, including opening and closing quotes, are
+ // inserted here.
+ buffer.append(c);
}
return index;
}
More information about the kaffe
mailing list