@Override public NodeValue exec(NodeValue v) { return NodeValue.makeInteger(v.getString().length()) ; } }
@Override public NodeValue exec(NodeValue v) { return NodeValue.makeInteger(v.getString().length()) ; } }
@Override public NodeValue exec(NodeValue namespace, NodeValue label) { String argument1 = namespace.getString(); String argument2 = label.getString(); String[] argument2Splitted = argument2.split(" "); String localName = argument2Splitted[0].substring(0, 1).toLowerCase() + argument2Splitted[0].substring(1, argument2Splitted[0].length()); for (int i = 1; i < argument2Splitted.length; i++) { localName += argument2Splitted[i].substring(0, 1).toUpperCase() + argument2Splitted[i].substring(1, argument2Splitted[i].length()); } String newString = argument1 + localName; return NodeValue.makeString(newString); }
@Override public NodeValue exec(NodeValue namespace, NodeValue label) { String argument1 = namespace.getString(); String argument2 = label.getString(); String[] argument2Splitted = argument2.split(" "); String localName = argument2Splitted[0].substring(0, 1).toLowerCase() + argument2Splitted[0].substring(1, argument2Splitted[0].length()); for (int i = 1; i < argument2Splitted.length; i++) { localName += argument2Splitted[i].substring(0, 1).toUpperCase() + argument2Splitted[i].substring(1, argument2Splitted[i].length()); } String newString = argument1 + localName; return NodeValue.makeString(newString); }
public static NodeValue langMatches(NodeValue nv, NodeValue nvPattern) { return langMatches(nv, nvPattern.getString()) ; }
@Override public NodeValue exec(NodeValue nodeValue) { String value = nodeValue.getString(); String[] split = value.split("(?=\\p{Upper})"); int i = 0; if (split[i].isEmpty()) { i += 1; } String newString = split[i].substring(0, 1).toUpperCase() + split[i].substring(1, split[i].length()); if (split.length > 1) { for (i += 1; i < split.length; i++) { newString += " " + split[i].substring(0, 1).toLowerCase() + split[i].substring(1, split[i].length()); } } return NodeValue.makeString(newString); }
public static NodeValue langMatches(NodeValue nv, NodeValue nvPattern) { return langMatches(nv, nvPattern.getString()) ; }
@Override public NodeValue exec(NodeValue nodeValue) { String value = nodeValue.getString(); String[] split = value.split("(?=\\p{Upper})"); int i = 0; if (split[i].isEmpty()) { i += 1; } String newString = split[i].substring(0, 1).toUpperCase() + split[i].substring(1, split[i].length()); if (split.length > 1) { for (i += 1; i < split.length; i++) { newString += " " + split[i].substring(0, 1).toLowerCase() + split[i].substring(1, split[i].length()); } } return NodeValue.makeString(newString); }
@Override public NodeValue eval(List<NodeValue> args) { NodeValue v = args.get(0) ; NodeValue vPattern = args.get(1) ; NodeValue vFlags = ( args.size() == 2 ? null : args.get(2) ) ; if ( ! v.isString() ) throw new ExprEvalException("REGEX: "+v+" is not a string") ; RegexEngine regex = regexEngine ; if ( regex == null ) regex = makeRegexEngine(vPattern, vFlags) ; boolean b = regex.match(v.getString()) ; return b ? NodeValue.TRUE : NodeValue.FALSE ; }
public static RegexEngine makeRegexEngine(NodeValue vPattern, NodeValue vFlags) { if ( ! vPattern.isString() ) throw new ExprException("REGEX: Pattern is not a string: "+vPattern) ; if ( vFlags != null && ! vFlags.isString() ) throw new ExprException("REGEX: Pattern flags are not a string: "+vFlags) ; String s = (vFlags==null)?null:vFlags.getString() ; return makeRegexEngine(vPattern.getString(), s) ; }
public static NodeValue javaSubstring(NodeValue nvString, NodeValue nvStart, NodeValue nvFinish) { try { String string = nvString.getString() ; int start = nvStart.getInteger().intValue() ; if ( nvFinish == null ) return NodeValue.makeString(string.substring(start)) ; int finish = nvFinish.getInteger().intValue() ; return NodeValue.makeString(string.substring(start, finish)) ; } catch (IndexOutOfBoundsException ex) { throw new ExprEvalException("IndexOutOfBounds", ex) ; } }
public static NodeValue javaSubstring(NodeValue nvString, NodeValue nvStart, NodeValue nvFinish) { try { String string = nvString.getString() ; int start = nvStart.getInteger().intValue() ; if ( nvFinish == null ) return NodeValue.makeString(string.substring(start)) ; int finish = nvFinish.getInteger().intValue() ; return NodeValue.makeString(string.substring(start, finish)) ; } catch (IndexOutOfBoundsException ex) { throw new ExprEvalException("IndexOutOfBounds", ex) ; } }
public static RegexEngine makeRegexEngine(NodeValue vPattern, NodeValue vFlags) { if ( ! vPattern.isString() ) throw new ExprException("REGEX: Pattern is not a string: "+vPattern) ; if ( vFlags != null && ! vFlags.isString() ) throw new ExprException("REGEX: Pattern flags are not a string: "+vFlags) ; String s = (vFlags==null)?null:vFlags.getString() ; return makeRegexEngine(vPattern.getString(), s) ; }
public E_StrReplace(Expr expr1, Expr expr2, Expr expr3, Expr expr4) { super(symbol, expr1, expr2, expr3, expr4) ; if ( isString(expr2) && (expr4 == null || isString(expr4) ) ) { int flags = 0 ; if ( expr4 != null && expr4.isConstant() && expr4.getConstant().isString() ) flags = RegexJava.makeMask(expr4.getConstant().getString()) ; pattern = Pattern.compile(expr2.getConstant().getString(), flags) ; } }
@Override public NodeValue exec(NodeValue v) { if ( ! v.isString() ) { Log.warn(this, "date: argument not a string: "+v) ; throw new ExprEvalException("date: argument not a string: "+v) ; } String lexicalForm = v.getString() ; // Quite picky about format if ( ! lexicalForm.matches("\\d{4}-\\d{2}-\\d{2}") ) { Log.warn(this, "date: argument not in date format: "+v) ; throw new ExprEvalException("date: argument not in date format: "+v) ; } lexicalForm=lexicalForm+"T00:00:00Z" ; NodeValue nv = NodeValue.makeNode(lexicalForm, XSDDatatype.XSDdateTime) ; return nv ; }
public static boolean booleanEffectiveValue(NodeValue nv) // F&O fn:boolean { // Apply the "boolean effective value" rules //boolean: value of the boolean (strictly, if derived from xsd:boolean) //string: length(string) > 0 //numeric: number != Nan && number != 0 // http://www.w3.org/TR/xquery/#dt-ebv if ( nv.isBoolean() ) return nv.getBoolean() ; if ( nv.isString() ) return nv.getString().length() > 0 ; if ( nv.isInteger() ) return ! nv.getInteger().equals(NodeValue.IntegerZERO) ; if ( nv.isDecimal() ) return ! nv.getDecimal().equals(NodeValue.DecimalZERO) ; if ( nv.isDouble() ) return nv.getDouble() != 0.0 ; NodeValue.raise(new ExprEvalException("Not a boolean effective value (wrong type): "+nv)) ; // Does not return return false ; }
@Override public NodeValue eval(NodeValue x, NodeValue y) { if ( ! x.isString() ) throw new ExprEvalException("cast: arg 2 is not a string: "+x) ; if ( ! y.isIRI() ) throw new ExprEvalException("cast: arg 2 is not a URI: "+y) ; String lex = x.getString() ; y.asNode().getURI() ; throw new ARQNotImplemented() ; }
@Override public NodeValue eval(NodeValue x, NodeValue y) { if ( ! x.isString() ) throw new ExprEvalException("cast: arg 2 is not a string: "+x) ; if ( ! y.isIRI() ) throw new ExprEvalException("cast: arg 2 is not a URI: "+y) ; String lex = x.getString() ; y.asNode().getURI() ; throw new ARQNotImplemented() ; }