Using less memory and time to figure out if warnings occurred.
This commit is contained in:
parent
76c2e969ac
commit
01e65176d4
4 changed files with 31 additions and 15 deletions
|
@ -241,12 +241,16 @@ public class TibetanConverter implements FontConverterConstants {
|
|||
} catch (ThdlLazyException e) {
|
||||
out.println("TibetanConverter has a BUG:");
|
||||
e.getRealException().printStackTrace(out);
|
||||
System.err.println("TibetanConverter has a BUG:");
|
||||
e.getRealException().printStackTrace(System.err);
|
||||
return 7;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace(out);
|
||||
e.printStackTrace(System.err);
|
||||
return 4;
|
||||
} catch (OutOfMemoryError e) {
|
||||
e.printStackTrace(out);
|
||||
e.printStackTrace(System.err);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
@ -263,26 +267,27 @@ public class TibetanConverter implements FontConverterConstants {
|
|||
try {
|
||||
ArrayList al = ACIPTshegBarScanner.scanStream(in, null,
|
||||
ThdlOptions.getIntegerOption("thdl.most.errors.a.tibetan.acip.document.can.have",
|
||||
250 - 1)
|
||||
1000 - 1)
|
||||
);
|
||||
if (null == al)
|
||||
return 47;
|
||||
StringBuffer warnings = new StringBuffer();
|
||||
boolean embeddedWarnings = (warningLevel != "None");
|
||||
boolean hasWarnings[] = new boolean[] { false };
|
||||
if (ACIP_TO_UNI_TEXT == ct) {
|
||||
if (!ACIPConverter.convertToUnicodeText(al, out, null,
|
||||
warnings,
|
||||
null, hasWarnings,
|
||||
embeddedWarnings,
|
||||
warningLevel))
|
||||
return 46;
|
||||
} else {
|
||||
if (ct != ACIP_TO_TMW) throw new Error("badness");
|
||||
if (!ACIPConverter.convertToTMW(al, out, null, warnings,
|
||||
if (!ACIPConverter.convertToTMW(al, out, null, null,
|
||||
hasWarnings,
|
||||
embeddedWarnings,
|
||||
warningLevel, colors))
|
||||
return 46;
|
||||
}
|
||||
if (embeddedWarnings && warnings.length() > 0)
|
||||
if (embeddedWarnings && hasWarnings[0])
|
||||
return 45;
|
||||
else
|
||||
return 0;
|
||||
|
|
|
@ -348,7 +348,7 @@ public class TibTextUtils implements THDLWylieConstants {
|
|||
}
|
||||
try {
|
||||
int tloc[] = new int[] { loc };
|
||||
ACIPConverter.convertToTMW(al, tdoc, null, null,
|
||||
ACIPConverter.convertToTMW(al, tdoc, null, null, null,
|
||||
putWarningsInOutput, warningLevel,
|
||||
colors, tloc);
|
||||
return tloc[0] - loc;
|
||||
|
|
|
@ -55,7 +55,7 @@ public class ACIPConverter {
|
|||
System.out.println("Bad args! Need just the name of the ACIP text file.");
|
||||
}
|
||||
StringBuffer errors = new StringBuffer();
|
||||
int maxErrors = 250;
|
||||
int maxErrors = 1000; // DLC NOW PER CAPITA
|
||||
ArrayList al = ACIPTshegBarScanner.scanFile(args[0], errors, maxErrors - 1);
|
||||
|
||||
if (null == al) {
|
||||
|
@ -88,7 +88,7 @@ public class ACIPConverter {
|
|||
warnings = new StringBuffer();
|
||||
putWarningsInOutput = true;
|
||||
}
|
||||
convertToTMW(al, System.out, errors, warnings,
|
||||
convertToTMW(al, System.out, errors, warnings, null,
|
||||
putWarningsInOutput, warningLevel, colors);
|
||||
int retCode = 0;
|
||||
if (errors.length() > 0) {
|
||||
|
@ -128,6 +128,7 @@ public class ACIPConverter {
|
|||
OutputStream out,
|
||||
StringBuffer errors,
|
||||
StringBuffer warnings,
|
||||
boolean[] hasWarnings,
|
||||
boolean writeWarningsToResult,
|
||||
String warningLevel,
|
||||
boolean colors)
|
||||
|
@ -135,7 +136,7 @@ public class ACIPConverter {
|
|||
{
|
||||
TibetanDocument tdoc = new TibetanDocument();
|
||||
boolean rv
|
||||
= convertToTMW(scan, tdoc, errors, warnings,
|
||||
= convertToTMW(scan, tdoc, errors, warnings, hasWarnings,
|
||||
writeWarningsToResult, warningLevel, colors,
|
||||
new int[] { tdoc.getLength() });
|
||||
tdoc.writeRTFOutputStream(out);
|
||||
|
@ -155,6 +156,7 @@ public class ACIPConverter {
|
|||
TibetanDocument tdoc,
|
||||
StringBuffer errors,
|
||||
StringBuffer warnings,
|
||||
boolean[] hasWarnings,
|
||||
boolean writeWarningsToResult,
|
||||
String warningLevel,
|
||||
boolean colors,
|
||||
|
@ -162,8 +164,8 @@ public class ACIPConverter {
|
|||
throws IOException
|
||||
{
|
||||
return convertTo(false, true, scan, null, tdoc, errors, warnings,
|
||||
writeWarningsToResult, warningLevel, colors,
|
||||
loc, loc[0] == tdoc.getLength());
|
||||
hasWarnings, writeWarningsToResult, warningLevel,
|
||||
colors, loc, loc[0] == tdoc.getLength());
|
||||
}
|
||||
|
||||
/** Returns UTF-8 encoded Unicode. A bit indirect, so use this
|
||||
|
@ -187,7 +189,7 @@ public class ACIPConverter {
|
|||
try {
|
||||
if (null != al) {
|
||||
convertToUnicodeText(al, sw, errors,
|
||||
warnings, writeWarningsToResult,
|
||||
warnings, null, writeWarningsToResult,
|
||||
warningLevel);
|
||||
return sw.toString("UTF-8");
|
||||
} else {
|
||||
|
@ -212,6 +214,9 @@ public class ACIPConverter {
|
|||
* @param errors if non-null, all error messages are appended
|
||||
* @param warnings if non-null, all warning messages appropriate
|
||||
* to warningLevel are appended
|
||||
* @param hasWarnings if non-null, then hasWarnings[0] will be
|
||||
* updated to true if and only if warnings are encountered and
|
||||
* false otherwise
|
||||
* @param writeWarningsToOut if true, then all warning messages
|
||||
* are written to out in the appropriate places
|
||||
* @throws IOException if we cannot write to out
|
||||
|
@ -220,12 +225,14 @@ public class ACIPConverter {
|
|||
OutputStream out,
|
||||
StringBuffer errors,
|
||||
StringBuffer warnings,
|
||||
boolean[] hasWarnings,
|
||||
boolean writeWarningsToOut,
|
||||
String warningLevel)
|
||||
throws IOException
|
||||
{
|
||||
return convertTo(true, false, scan, out, null, errors, warnings,
|
||||
writeWarningsToOut, warningLevel, false, new int[] { -1 } , true);
|
||||
hasWarnings, writeWarningsToOut, warningLevel, false,
|
||||
new int[] { -1 } , true);
|
||||
}
|
||||
|
||||
private static boolean peekaheadFindsSpacesAndComma(ArrayList /* of TString */ scan,
|
||||
|
@ -253,6 +260,7 @@ public class ACIPConverter {
|
|||
TibetanDocument tdoc, // for !toUnicode mode or (toUnicode && toRTF) mode
|
||||
StringBuffer errors,
|
||||
StringBuffer warnings,
|
||||
boolean[] hasWarnings,
|
||||
boolean writeWarningsToOut,
|
||||
String warningLevel,
|
||||
boolean colors,
|
||||
|
@ -299,6 +307,7 @@ public class ACIPConverter {
|
|||
|
||||
int sz = scan.size();
|
||||
boolean hasErrors = false;
|
||||
if (null != hasWarnings) hasWarnings[0] = false;
|
||||
BufferedWriter writer = null;
|
||||
if (toUnicode && !toRTF)
|
||||
writer
|
||||
|
@ -360,6 +369,7 @@ public class ACIPConverter {
|
|||
}
|
||||
|
||||
if (null != warnings) {
|
||||
if (null != hasWarnings) hasWarnings[0] = true;
|
||||
warnings.append("Warning: Lexical warning: ");
|
||||
warnings.append(s.getText());
|
||||
warnings.append('\n');
|
||||
|
@ -424,7 +434,7 @@ public class ACIPConverter {
|
|||
// differently, but now, I think
|
||||
// this is impossible. DLC FIXME:
|
||||
// run with -Dthdl.debug=true on
|
||||
// all ACIP Release IV texts you
|
||||
// all ACIP Release V texts you
|
||||
// can find.
|
||||
ThdlDebug.noteIffyCode();
|
||||
hasErrors = true;
|
||||
|
@ -479,6 +489,7 @@ public class ACIPConverter {
|
|||
}
|
||||
}
|
||||
if (null != warnings) {
|
||||
if (null != hasWarnings) hasWarnings[0] = true;
|
||||
warnings.append(warning);
|
||||
warnings.append('\n');
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ACIPTshegBarScanner {
|
|||
System.exit(1);
|
||||
}
|
||||
StringBuffer errors = new StringBuffer();
|
||||
int maxErrors = 250;
|
||||
int maxErrors = 1000;
|
||||
ArrayList al = scanFile(args[0], errors, maxErrors - 1);
|
||||
|
||||
if (null == al) {
|
||||
|
|
Loading…
Reference in a new issue