System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
-
+
/**
* Combined string elements from two arrays into a single array, gluing
* together elements of the same index with a delimiter string.
for (int i = 1; i < a.length; ++i) result.append(glue).append(a[i]);
return result.toString();
}
-
+
/**
- * Quote a string by replacing prepending backslashes and double
+ * Escape a string by replacing prepending backslashes and double
* quotation characters with an extra backslash.
- * @param The string to be quoted.
- * @return The quoted string.
+ * @param The string to be escaped.
+ * @return The escaped string.
*/
- public static String quote(String a)
+ public static String escape(String a)
{
a = a.replaceAll("\\\\", "\\\\\\\\");
a = a.replaceAll("\"", "\\\\\\\"");
return a;
}
-
+
/**
* Simply read a file's contents into a string object.
* @param file The file to read.
public static String readFile(File file) throws IOException
{
StringBuilder text = new StringBuilder();
-
+
BufferedReader reader = new BufferedReader(new FileReader(file.getPath()));
try
{
String line = null;
-
+
while ((line = reader.readLine()) != null)
{
text.append(line + System.getProperty("line.separator"));
{
reader.close();
}
-
+
return text.toString();
}
-
+
/**
- * Read a resource file into a string object. The resources should be
- * placed in the directory `resources' underneath the parent directory of
- * this class. Reading resources packaged in a jar is allowable.
+ * Read a resource file into a string object.
+ * The resources should be placed in the directory `resources'
+ * underneath the parent directory of this class. Reading resources
+ * packaged in a jar is allowable.
* @param path Relative path to the resource.
* @return The contents of the resource.
* @throws IOException If the resource is not readable.
public static String readResource(String path) throws IOException
{
StringBuilder text = new StringBuilder();
-
+
InputStream stream = Util.class.getResourceAsStream("resources/" + path);
if (stream != null)
{
stream.close();
}
}
-
- return text.toString();
+
+ return text.toString().replaceAll("\n", System.getProperty("line.separator"));
}
-
+
/**
- * The poor man's template package. Provide a template and a map of terms
- * to build the result with the terms expanded into the template. Terms
- * in the template should appear surrounded with dollar signs. For example,
- * if $MYTERM$ appears in the template, it will be replaced by the value
- * into the terms map with the key MYTERM (if it exists in the map).
+ * The poor man's template package.
+ * Provide a template and a map of terms to build the result with the
+ * terms expanded into the template. Terms in the template should
+ * appear surrounded with dollar signs. For example, if $MYTERM$
+ * appears in the template, it will be replaced by the value into the
+ * terms map with the key MYTERM (if it exists in the map).
* @param template The template string.
* @param terms A map of key/value terms.
* @return The string expanded from the template and terms.
String text = template;
for (String key : terms.keySet())
{
- text = text.replaceAll("\\$" + key + "\\$",
- Util.quote(terms.get(key)));
+ text = text.replaceAll("\\$" + key + "\\$", Util.escape(terms.get(key)));
}
return text;
}
}
+// vim:et:ts=8:sts=4:sw=4