package org.basex.query.func; import static org.basex.query.QueryText.*; import static org.basex.util.Token.*; import java.io.File; import org.basex.query.QueryContext; import org.basex.query.item.QNm; import org.basex.query.item.Str; import org.basex.query.item.Value; import org.basex.query.util.NSGlobal; import org.basex.query.util.Var; import org.basex.util.TokenBuilder; /** * Statically available XQuery variables. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public enum Variable { /** File variable. */ FILEDIRSEP(FILEURI, "directory-separator", Str.get(File.separator)), /** File variable. */ FILEPATHSEP(FILEURI, "path-separator", Str.get(File.pathSeparator)), /** XSLT variable. */ XSLTPROC(XSLTURI, "processor", Str.get(FNXslt.get(true))), /** XSLT variable. */ XSLTVERSION(XSLTURI, "version", Str.get(FNXslt.get(false))); /** Variable name. */ private final QNm qname; /** Variable value. */ private final Value value; /** * Constructor. * @param uri uri * @param name name * @param val item value */ Variable(final byte[] uri, final String name, final Value val) { qname = new QNm(token(name), uri); value = val; } /** * Initializes all variables. * @param ctx query context */ public static void init(final QueryContext ctx) { for(final Variable v : values()) { ctx.vars.updateGlobal(Var.create(ctx, null, v.qname, v.value)); } } @Override public final String toString() { final byte[] pref = NSGlobal.prefix(qname.uri()); return new TokenBuilder("$").add(pref).add(':').add( qname.local()).toString(); } }