Plugin: output parser
The integrated parser API for plugins provides a way to build expression chains in order to extract some interest value of output files in a directory. An expresison chain is a sequence of function calls f(...) >> g(...) >> h(...)
, where the first argument of each secondary function (g
and h
) is the result of the previous one.
For instance grep("(.*)out"," z=") >> get(0) >> between("z=","|") >> asNumeric()
will process as follows:
grep("(.*)out"," z=")
: find all lines containing ‘ z=’ in all files which name ends with “out” (in the current working directory, usually ‘output/’),>> get(0)
: from this list of lines, get the the last one,>> between("z=","|")
: from this line, get the substring betweenz=
and|
,>> asNumeric()
: parse this string and cast as a numeric value.
Note that expressions are designed following:
- Piping: first argument is in fact the result of previous function (if it exists)_
- Vectorization:
List<...>
are processed by later function iteratively
Once setup, it is recommended to test your expression against output files/directory using such inline testing:
- from bash:
java -cp ./Funz/lib/funz-client-1.15.jar:./Funz/lib/funz-core-1.15.jar org.funz.ioplugin.IOPluginParserEval '<ParserExpressionChain>' <path1> <path2> <path3> ...
- from cmd.exe:
java -cp .\Funz\lib\funz-client-1.15.jar;.\Funz\lib\funz-core-1.15.jar org.funz.ioplugin.IOPluginParserEval '<ParserExpressionChain>' <path1> <path2> <path3> ...
All built-in functions available in the parser are the following (grep "public static" ../funz-core/src/main/java/org/funz/util/Parser.java
), providing following features:
- reading standard format files:
- unzip:
List<File> unzip(File z)
- CSV:
List<String> CSV(List<String> lines, String delim, String title)
- JSON:
String JSONPath(File file, String path)
- XML:
String XPath(File file, String path)
String toString(Document xml)
List<String> toStrings(List<Document> xml)
- ASCII:
String filecat(File f)
- properties:
String property(File f, String key)
- unzip:
- parse/test regular expression:
- grep:
List<String> grep(File file, String keyfilter)
List<String> grepIn(String input, String keyfilter)
List<String> grep(BufferedReader inn, String keyfilter)
List<String> grep_basic(BufferedReader inn, String keyfilter)
List<String> gnotrep(BufferedReader inn, String keyfilter)
- test:
Boolean contains(File file, String keyfilter)
Boolean containsIn(String input, String keyfilter)
Boolean contains(BufferedReader inn, String keyfilter)
List<String> filter(List<String> lines, String regexp)
int[] filterIndexes(List<String> lines, String regexp)
- grep:
- string handling:
- concat:
String strcat(String... lines)
String strcat(LinkedList lines)
String cat(List lines, String separator)
List<String> merge(List lines)
int length(String line)
List<Integer> length(List<String> lines)
- trim:
String trim(String line)
List<String> trim(List<String> lines)
- spliting:
List<String> split(String line, String separator)
String cut(String line, String separator, int index)
List<String> cut(List<String> lines, String separator, int index)
String substring(String line, int begin, int end)
String substring(String line, String beginstr, String endstr)
List<String> substring(List<String> lines, int begin, int end)
List<String> substring(List<String> lines, String beginstr, String endstr)
String substring(String line, int begin)
String substring(String line, String beginstr)
List<String> substring(List<String> lines, int begin)
List<String> substring(List<String> lines, String beginstr)
String after(String line, String beginstr)
List<String> after(List<String> lines, String beginstr)
String afterLast(String line, String beginstr)
List<String> afterLast(List<String> lines, String beginstr)
String before(String line, String endstr)
List<String> before(List<String> lines, String beginstr)
String between(String line, String beginstr, String endstr)
List<String> between(List<String> lines, String beginstr, String endstr)
- replacing:
String replace(String line, String toreplace, String replacer)
List<String> replace(List<String> lines, String toreplace, String replacer)
String replace_regexp(String line, String toreplace, String replacer)
List<String> replace_regexp(List<String> lines, String toreplace, String replacer)
- concat:
- indexes:
List<String> get(List<String> lines, int... numbers)
List<String> getAfter(List<String> lines, int after, int... numbers)
List<String> getBefore(List<String> lines, int before, int... numbers)
String get(List<String> lines, int i)
List<String> getBy(List<String> lines, int start, int step)
List<String> getBy(List<String> lines, int start, int step, int end)
List<String> getAll(List<List<String>> lines, int i)
- basic math:
double times(double d, double t)
double[] times(double[] d, double t)
double[][] times(double[][] d, double t)
- casting to numeric:
double asNumeric(String line)
double asNumeric(List line)
double[] asNumeric1DArray(String line, String delim)
double[] asNumeric1DArray(String line)
double[] asNumeric1DArray(List<String> lines)
double[][] asNumeric2DArray(String line, String coldelim, String rowdelim)
double[][] asNumeric2DArray(String line)
double[][] asNumeric2DArray(List<String> lines, String coldelim)
double[][] asNumeric2DArray(List<String> lines)
- Previous
- Next