summaryrefslogtreecommitdiff
path: root/clformat/src/main/java/bjc
diff options
context:
space:
mode:
Diffstat (limited to 'clformat/src/main/java/bjc')
-rw-r--r--clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java36
1 files changed, 27 insertions, 9 deletions
diff --git a/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java b/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
index 9e01ca6..e2a80ce 100644
--- a/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
+++ b/clformat/src/main/java/bjc/utils/ioutils/format/CLFormatter.java
@@ -2,9 +2,11 @@ package bjc.utils.ioutils.format;
import bjc.utils.esodata.SingleTape;
import bjc.utils.esodata.Tape;
-import bjc.utils.ioutils.format.directives.*;
import bjc.utils.ioutils.ReportWriter;
+import bjc.utils.ioutils.SimpleProperties;
+import bjc.utils.ioutils.format.directives.*;
+import java.io.InputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
@@ -15,8 +17,6 @@ import java.util.UnknownFormatConversionException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static bjc.utils.misc.PropertyDB.applyFormat;
-import static bjc.utils.misc.PropertyDB.getRegex;
/**
* An implementation of CL's FORMAT.
*
@@ -24,19 +24,37 @@ import static bjc.utils.misc.PropertyDB.getRegex;
*
*/
public class CLFormatter {
- private static final String prefixParam = getRegex("clFormatPrefix");
- private static final String formatMod = getRegex("clFormatModifier");
- private static final String directiveName = getRegex("clFormatName");
+ private static String prefixParam;
+ private static String formatMod;
+ private static String directiveName;
- private static final String prefixList = applyFormat("delimSeparatedList", prefixParam, ",");
- private static final String formatDirective = applyFormat("clFormatDirective", prefixList, formatMod, directiveName);
+ private static String prefixList;
+ private static String formatDirective;
- private static final Pattern pFormatDirective = Pattern.compile(formatDirective);
+ private static Pattern pFormatDirective;
private static Map<String, Directive> builtinDirectives;
private Map<String, Directive> extraDirectives;
static {
+ SimpleProperties props = new SimpleProperties();
+
+ try (InputStream is = CLFormatter.class.getResourceAsStream("/formats.sprop")) {
+ props.loadFrom(is, false);
+ } catch (IOException ioex) {
+ // WELP, we failed. Bail
+ throw new RuntimeException("Couldn't load formats for formatter");
+ }
+
+ prefixParam = props.get("clFormatPrefix");
+ formatMod = props.get("clFormatModifier");
+ directiveName = props.get("clFormatName");
+
+ prefixList = String.format(props.get("delimSeparatedList"), prefixParam, ",");
+ formatDirective = String.format(props.get("clFormatDirective"), prefixList, formatMod, directiveName);
+
+ pFormatDirective = Pattern.compile(formatDirective);
+
builtinDirectives = new HashMap<>();
builtinDirectives.put("A", new AestheticDirective());