package org.n3r.eql.codedesc;
import org.n3r.eql.parser.OffsetAndOptionValue;
public class DescOptionValueParser {
public OffsetAndOptionValue parseValueOption(String valueStr) {
int size = valueStr.length();
int start = 0;
for (; start < size; ++start) {
char aChar = valueStr.charAt(start);
if (',' == aChar) {
++start;
break;
}
if (!Character.isSpaceChar(aChar)) break;
}
int atPos = valueStr.indexOf('@', start);
if (atPos <= 0) return null;
int offset = atPos + 1;
for (; offset < size; ++offset) {
char ch = valueStr.charAt(offset);
if (!Character.isSpaceChar(ch)) break;
}
boolean brace = false;
for (; offset < size; ++offset) {
char ch = valueStr.charAt(offset);
if (Character.isSpaceChar(ch)) break;
if (',' == ch) break;
if ('(' == ch) {
++offset;
brace = true;
break;
}
}
if (brace) {
for (; offset < size; ++offset) {
if (')' == valueStr.charAt(offset)) {
++offset;
break;
}
}
}
return new OffsetAndOptionValue(offset, valueStr.substring(start, offset).trim());
}
}