static RowSpec[] parseRowSpecs( String encodedRowSpecs, LayoutMap layoutMap) { FormSpecParser parser = new FormSpecParser( encodedRowSpecs, "encoded column specifications", layoutMap, false); return parser.parseRowSpecs(); }
private void addSpec(List encodedSpecs, String expression, int offset) { String trimmedExpression = expression.trim(); Multiplier multiplier = multiplier(trimmedExpression, offset); if (multiplier == null) { encodedSpecs.add(trimmedExpression); return; } List subTokenList = split(multiplier.expression, offset + multiplier.offset); for (int i=0; i < multiplier.multiplier; i++) { encodedSpecs.addAll(subTokenList); } }
static ColumnSpec[] parseColumnSpecs( String encodedColumnSpecs, LayoutMap layoutMap) { FormSpecParser parser = new FormSpecParser( encodedColumnSpecs, "encoded column specifications", layoutMap, true); return parser.parseColumnSpecs(); }
if ((c == ',') && (parenthesisLevel == 0) && (bracketLevel == 0)) { String token = expression.substring(specStart, i); addSpec(encodedSpecs, token, offset + specStart); specStart = i + 1; lead = true; } else if (c == '(') { if (bracketLevel > 0) { fail(offset + i, "illegal '(' in [...]"); fail(offset + i, "illegal ')' in [...]"); fail(offset + i, "missing '('"); fail(offset + i, "too many '['"); bracketLevel--; if (bracketLevel < 0) { fail(offset + i, "missing '['"); fail(offset + length, "missing ')'"); fail(offset + length, "missing ']"); addSpec(encodedSpecs, token, offset + specStart);
private void fail(int index, NumberFormatException cause) { throw new FormLayoutParseException( message(source, index, "Invalid multiplier"), cause); }
private ColumnSpec[] parseColumnSpecs() { List encodedColumnSpecs = split(source, 0); int columnCount = encodedColumnSpecs.size(); ColumnSpec[] columnSpecs = new ColumnSpec[columnCount]; for (int i = 0; i < columnCount; i++) { String encodedSpec = (String) encodedColumnSpecs.get(i); columnSpecs[i] = ColumnSpec.decodeExpanded(encodedSpec); } return columnSpecs; }
private String nextVariableName(String expression, int start) { int length = expression.length(); if (length <= start) { FormSpecParser.fail(expression, start, "Missing variable name after variable char '$'."); } if (expression.charAt(start + 1) == '{') { int end = expression.indexOf('}', start + 1); if (end == -1) { FormSpecParser.fail(expression, start, "Missing closing brace '}' for variable."); } return expression.substring(start + 1, end + 1); } int end = start + 1; while ((end < length) && Character.isUnicodeIdentifierPart(expression.charAt(end))) { end++; } return expression.substring(start+1, end); }
/** * Splits and parses the encoded column specifications using the given * {@link LayoutMap} and returns an array of ColumnSpec objects. * * @param encodedColumnSpecs comma separated encoded column specifications * @param layoutMap expands layout column variables * @return an array of decoded column specifications * @throws NullPointerException if {@code encodedColumnSpecs} or * {@code layoutMap} is {@code null} * * @see #decodeSpecs(String) * @see #decode(String, LayoutMap) * * @since 1.2 */ public static ColumnSpec[] decodeSpecs(String encodedColumnSpecs, LayoutMap layoutMap) { return FormSpecParser.parseColumnSpecs(encodedColumnSpecs, layoutMap); }
/** * Parses and splits encoded row specifications using the given * {@link LayoutMap} and returns an array of RowSpec objects. * * @param encodedRowSpecs comma separated encoded row specifications * @param layoutMap expands layout row variables * @return an array of decoded row specifications * * @throws NullPointerException {@code encodedRowSpecs} or * {@code layoutMap} is {@code null} * * @see RowSpec#RowSpec(String) * * @since 1.2 */ public static RowSpec[] decodeSpecs(String encodedRowSpecs, LayoutMap layoutMap) { return FormSpecParser.parseRowSpecs(encodedRowSpecs, layoutMap); }
if (c == ',' && parenthesisLevel == 0 && bracketLevel == 0 && quoteLevel == 0) { String token = expression.substring(specStart, i); addSpec(encodedSpecs, token, offset + specStart); specStart = i + 1; lead = true; } else if (c == '(') { if (bracketLevel > 0) { fail(offset + i, "illegal '(' in [...]"); fail(offset + i, "illegal ')' in [...]"); fail(offset + i, "missing '('"); fail(offset + i, "too many '['"); bracketLevel--; if (bracketLevel < 0) { fail(offset + i, "missing '['"); fail(offset + length, "missing ')'"); fail(offset + length, "missing ']"); addSpec(encodedSpecs, token, offset + specStart);
private void fail(int index, NumberFormatException cause) { throw new FormLayoutParseException( message(source, index, "Invalid multiplier"), cause); }
private RowSpec[] parseRowSpecs() { List encodedRowSpecs = split(source, 0); int rowCount = encodedRowSpecs.size(); RowSpec[] rowSpecs = new RowSpec[rowCount]; for (int i = 0; i < rowCount; i++) { String encodedSpec = (String) encodedRowSpecs.get(i); rowSpecs[i] = RowSpec.decodeExpanded(encodedSpec); } return rowSpecs; }
private static String nextVariableName(String expression, int start) { int length = expression.length(); if (length <= start) { FormSpecParser.fail(expression, start, "Missing variable name after variable char '$'."); } if (expression.charAt(start + 1) == '{') { int end = expression.indexOf('}', start + 1); if (end == -1) { FormSpecParser.fail(expression, start, "Missing closing brace '}' for variable."); } return expression.substring(start + 1, end + 1); } int end = start + 1; while (end < length && Character.isUnicodeIdentifierPart(expression.charAt(end))) { end++; } return expression.substring(start+1, end); }
/** * Splits and parses the encoded column specifications using the given * {@link LayoutMap} and returns an array of ColumnSpec objects. * * @param encodedColumnSpecs comma separated encoded column specifications * @param layoutMap expands layout column variables * @return an array of decoded column specifications * @throws NullPointerException if {@code encodedColumnSpecs} or * {@code layoutMap} is {@code null} * * @see #decodeSpecs(String) * @see #decode(String, LayoutMap) * * @since 1.2 */ public static ColumnSpec[] decodeSpecs(String encodedColumnSpecs, LayoutMap layoutMap) { return FormSpecParser.parseColumnSpecs(encodedColumnSpecs, layoutMap); }
/** * Parses and splits encoded row specifications using the given * {@link LayoutMap} and returns an array of RowSpec objects. * * @param encodedRowSpecs comma separated encoded row specifications * @param layoutMap expands layout row variables * @return an array of decoded row specifications * * @throws NullPointerException {@code encodedRowSpecs} or * {@code layoutMap} is {@code null} * * @see RowSpec#RowSpec(String) * * @since 1.2 */ public static RowSpec[] decodeSpecs(String encodedRowSpecs, LayoutMap layoutMap) { return FormSpecParser.parseRowSpecs(encodedRowSpecs, layoutMap); }
static RowSpec[] parseRowSpecs( String encodedRowSpecs, LayoutMap layoutMap) { FormSpecParser parser = new FormSpecParser( encodedRowSpecs, "encoded row specifications", layoutMap, false); return parser.parseRowSpecs(); }
static ColumnSpec[] parseColumnSpecs( String encodedColumnSpecs, LayoutMap layoutMap) { FormSpecParser parser = new FormSpecParser( encodedColumnSpecs, "encoded column specifications", layoutMap, true); return parser.parseColumnSpecs(); }
private void addSpec(List<String> encodedSpecs, String expression, int offset) { String trimmedExpression = expression.trim(); Multiplier multiplier = multiplier(trimmedExpression, offset); if (multiplier == null) { encodedSpecs.add(trimmedExpression); return; } List<String> subTokenList = split(multiplier.expression, offset + multiplier.offset); for (int i=0; i < multiplier.multiplier; i++) { encodedSpecs.addAll(subTokenList); } }
public static void fail(String source, int index, String description) { throw new FormLayoutParseException(message(source, index, description)); }
private ColumnSpec[] parseColumnSpecs() { List encodedColumnSpecs = split(source, 0); int columnCount = encodedColumnSpecs.size(); ColumnSpec[] columnSpecs = new ColumnSpec[columnCount]; for (int i = 0; i < columnCount; i++) { String encodedSpec = (String) encodedColumnSpecs.get(i); columnSpecs[i] = ColumnSpec.decodeExpanded(encodedSpec); } return columnSpecs; }