You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by um...@apache.org on 2002/11/21 22:35:41 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n Translate.java
umagesh 2002/11/21 13:35:41
Modified: . WHATSNEW
src/main/org/apache/tools/ant/taskdefs/optional/i18n
Translate.java
Log:
Allow start and end tokens to be multiple characters long.
PR: 13939
Submitted by: "Don Brown" <mr...@twdata.org>
Revision Changes Path
1.325 +3 -0 jakarta-ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
retrieving revision 1.324
retrieving revision 1.325
diff -u -r1.324 -r1.325
--- WHATSNEW 20 Nov 2002 10:10:13 -0000 1.324
+++ WHATSNEW 21 Nov 2002 21:35:40 -0000 1.325
@@ -61,6 +61,9 @@
Other changes:
--------------
+* The start and end tokens for <translate> may now be longer than a
+ single character.
+
* <setproxy> lets you set the username and password for proxies that want authentication
* <loadproperties> has a new encoding attribute.
1.17 +13 -23 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java
Index: Translate.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Translate.java 25 Jul 2002 15:21:15 -0000 1.16
+++ Translate.java 21 Nov 2002 21:35:41 -0000 1.17
@@ -74,7 +74,7 @@
/**
* Translates text embedded in files using Resource Bundle files.
*
- * @author Magesh Umasankar
+ * @author Magesh Umasankar, Don Brown
*/
public class Translate extends MatchingTask {
@@ -256,23 +256,11 @@
getLocation());
}
- if (startToken.length() != 1) {
- throw new BuildException(
- "The starttoken attribute must be a single character.",
- getLocation());
- }
-
if (endToken == null) {
throw new BuildException("The endtoken attribute must be set.",
getLocation());
}
- if (endToken.length() != 1) {
- throw new BuildException(
- "The endtoken attribute must be a single character.",
- getLocation());
- }
-
if (bundleLanguage == null) {
Locale l = Locale.getDefault();
bundleLanguage = l.getLanguage();
@@ -391,7 +379,7 @@
*/
private void processBundle(final String bundleFile, final int i,
final boolean checkLoaded) throws BuildException {
- final File propsFile = new File(bundleFile + ".properties");
+ final File propsFile = getProject().resolveFile(bundleFile + ".properties");
FileInputStream ins = null;
try {
ins = new FileInputStream(propsFile);
@@ -520,23 +508,25 @@
BufferedReader in
= new BufferedReader(new InputStreamReader(fis, srcEncoding));
String line;
+ int stLength = startToken.length();
+ int etLength = endToken.length();
while ((line = in.readLine()) != null) {
int startIndex = -1;
int endIndex = -1;
outer: while (true) {
- startIndex = line.indexOf(startToken, endIndex + 1);
+ startIndex = line.indexOf(startToken, endIndex + etLength);
if (startIndex < 0 ||
- startIndex + 1 >= line.length()) {
+ startIndex + stLength >= line.length()) {
break;
}
- endIndex = line.indexOf(endToken, startIndex + 1);
+ endIndex = line.indexOf(endToken, startIndex + stLength);
if (endIndex < 0) {
break;
}
- String matches = line.substring(startIndex + 1,
+ String matches = line.substring(startIndex + stLength,
endIndex);
- //If there is a white space or = or :, then
- //it isn't to be treated as a valid key.
+ //If there is a white space or = or :, then
+ //it isn't to be treated as a valid key.
for (int k = 0; k < matches.length(); k++) {
char c = matches.charAt(k);
if (c == ':' ||
@@ -558,9 +548,9 @@
}
line = line.substring(0, startIndex)
+ replace
- + line.substring(endIndex + 1);
- endIndex = startIndex + replace.length() + 1;
- if (endIndex + 1 >= line.length()) {
+ + line.substring(endIndex + etLength);
+ endIndex = startIndex + replace.length() + etLength;
+ if (endIndex + etLength >= line.length()) {
break;
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>