use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class AbstractURIFunction method expected_args.
/**
* Calculate the expected arguments.
*
* @return The expected arguments.
*/
public static synchronized Collection expected_args() {
if (_expected_args == null) {
_expected_args = new ArrayList();
_expected_args.add(new SeqType(new XSString(), SeqType.OCC_QMARK));
}
return _expected_args;
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class AbstractURIFunction method escape_uri.
/**
* Apply the URI escaping rules to the arguments.
*
* @param args
* have the URI escaping rules applied to them.
* @param escape_space TODO
* @throws DynamicError
* Dynamic error.
* @return The result of applying the URI escaping rules to the arguments.
*/
public static ResultSequence escape_uri(Collection args, boolean escape_delimiters, boolean escape_space) throws DynamicError {
Collection cargs = Function.convert_arguments(args, expected_args());
Iterator argi = cargs.iterator();
ResultSequence arg1 = (ResultSequence) argi.next();
if (arg1.empty()) {
return new XSString("");
}
AnyType aat = (AnyType) arg1.item(0);
String str = aat.getStringValue();
ByteBuffer buffer = UTF_8.encode(str);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buffer.limit(); i++) {
byte x = buffer.get(i);
if (needs_escape(x, escape_delimiters, escape_space)) {
sb.append("%");
sb.append(Integer.toHexString(x & 0xFF).toUpperCase());
} else
sb.append((char) x);
}
return new XSString(sb.toString());
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnStartsWith method expected_args.
/**
* Obtain a list of expected arguments.
*
* @return Result of operation.
*/
public static synchronized Collection expected_args() {
if (_expected_args == null) {
_expected_args = new ArrayList();
SeqType arg = new SeqType(new XSString(), SeqType.OCC_QMARK);
_expected_args.add(arg);
_expected_args.add(arg);
}
return _expected_args;
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnStartsWith method starts_with.
/**
* Starts-with operation.
*
* @param args
* Result from the expressions evaluation.
* @throws DynamicError
* Dynamic error.
* @return Result of fn:starts-with operation.
*/
public static ResultSequence starts_with(Collection args) throws DynamicError {
Collection cargs = Function.convert_arguments(args, expected_args());
// get args
Iterator argiter = cargs.iterator();
ResultSequence arg1 = (ResultSequence) argiter.next();
String str1 = "";
String str2 = "";
if (!arg1.empty())
str1 = ((XSString) arg1.first()).value();
ResultSequence arg2 = (ResultSequence) argiter.next();
if (!arg2.empty())
str2 = ((XSString) arg2.first()).value();
int str1len = str1.length();
int str2len = str2.length();
if (str1len == 0 && str2len != 0) {
return XSBoolean.FALSE;
}
if (str2len == 0) {
return XSBoolean.TRUE;
}
return XSBoolean.valueOf(str1.startsWith(str2));
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnString method string.
/**
* String operation.
*
* @param args
* Result from the expressions evaluation.
* @throws DynamicError
* Dynamic error.
* @return Result of fn:string operation.
*/
public static ResultSequence string(Collection args, EvaluationContext ec) throws DynamicError {
assert (args.size() == 0 || args.size() == 1);
ResultSequence arg1 = null;
if (args.isEmpty()) {
// support for arity = 0
return getResultSetForArityZero(ec);
} else {
arg1 = (ResultSequence) args.iterator().next();
}
// sanity check args
if (arg1.size() > 1)
throw new DynamicError(TypeError.invalid_type(null));
ResultBuffer rs = new ResultBuffer();
if (arg1.empty()) {
rs.add(new XSString(""));
} else {
Item at = arg1.first();
rs.add(new XSString(at.getStringValue()));
}
return rs.getSequence();
}
Aggregations