Search in sources :

Example 21 with ParserString

use of lucee.commons.lang.ParserString in project Lucee by lucee.

the class VariableInterpreter method removeVariable.

/**
 * removes a variable eith matching name from page context
 * @param pc
 * @param var
 * @return has removed or not
 * @throws PageException
 */
public static Object removeVariable(PageContext pc, String var) throws PageException {
    // print.ln("var:"+var);
    StringList list = parse(pc, new ParserString(var), false);
    if (list == null)
        throw new InterpreterException("invalid variable declaration [" + var + "]");
    if (list.size() == 1) {
        return pc.undefinedScope().remove(KeyImpl.init(list.next()));
    }
    int scope = scopeString2Int(pc.ignoreScopes(), list.next());
    Object coll;
    if (scope == Scope.SCOPE_UNDEFINED) {
        coll = pc.undefinedScope().get(list.current());
    } else {
        coll = VariableInterpreter.scope(pc, scope, true);
    // coll=pc.scope(scope);
    }
    while (list.hasNextNext()) {
        coll = pc.get(coll, list.next());
    }
    return Caster.toCollection(coll).remove(KeyImpl.init(list.next()));
}
Also used : StringList(lucee.commons.lang.StringList) ParserString(lucee.commons.lang.ParserString)

Example 22 with ParserString

use of lucee.commons.lang.ParserString in project Lucee by lucee.

the class VariableInterpreter method getVariableReference.

/**
 * return a variable reference by string syntax ("scopename.key.key" -> "url.name")
 * a variable reference, references to variable, to modifed it, with global effect.
 * @param pc
 * @param var variable name to get
 * @return variable as Reference
 * @throws PageException
 */
public static VariableReference getVariableReference(PageContext pc, String var) throws PageException {
    StringList list = parse(pc, new ParserString(var), false);
    if (list == null)
        throw new InterpreterException("invalid variable declaration [" + var + "]");
    if (list.size() == 1) {
        return new VariableReference(pc.undefinedScope(), list.next());
    }
    int scope = scopeString2Int(pc.ignoreScopes(), list.next());
    Object coll;
    if (scope == Scope.SCOPE_UNDEFINED) {
        coll = pc.touch(pc.undefinedScope(), KeyImpl.init(list.current()));
    } else {
        coll = VariableInterpreter.scope(pc, scope, list.hasNext());
    // coll=pc.scope(scope);
    }
    while (list.hasNextNext()) {
        coll = pc.touch(coll, KeyImpl.init(list.next()));
    }
    if (!(coll instanceof Collection))
        throw new InterpreterException("invalid variable [" + var + "]");
    return new VariableReference((Collection) coll, list.next());
}
Also used : VariableReference(lucee.runtime.type.ref.VariableReference) StringList(lucee.commons.lang.StringList) ParserString(lucee.commons.lang.ParserString) Collection(lucee.runtime.type.Collection)

Example 23 with ParserString

use of lucee.commons.lang.ParserString in project Lucee by lucee.

the class VariableInterpreter method setVariable.

/**
 * sets a variable to page Context
 * @param pc pagecontext of the new variable
 * @param var String of variable definition
 * @param value value to set to variable
 * @return value setted
 * @throws PageException
 */
public static Object setVariable(PageContext pc, String var, Object value) throws PageException {
    StringList list = parse(pc, new ParserString(var), false);
    if (list == null)
        throw new InterpreterException("invalid variable name declaration [" + var + "]");
    if (list.size() == 1) {
        return pc.undefinedScope().set(list.next(), value);
    }
    // min 2 elements
    int scope = scopeString2Int(pc.ignoreScopes(), list.next());
    Object coll;
    if (scope == Scope.SCOPE_UNDEFINED) {
        coll = pc.touch(pc.undefinedScope(), KeyImpl.init(list.current()));
    } else {
        coll = VariableInterpreter.scope(pc, scope, true);
    // coll=pc.scope(scope);
    }
    while (list.hasNextNext()) {
        coll = pc.touch(coll, KeyImpl.init(list.next()));
    }
    return pc.set(coll, KeyImpl.init(list.next()), value);
}
Also used : StringList(lucee.commons.lang.StringList) ParserString(lucee.commons.lang.ParserString)

Aggregations

ParserString (lucee.commons.lang.ParserString)23 StringList (lucee.commons.lang.StringList)10 ValueString (lucee.runtime.sql.exp.value.ValueString)7 PageException (lucee.runtime.exp.PageException)5 RefBoolean (lucee.commons.lang.types.RefBoolean)3 RefBooleanImpl (lucee.commons.lang.types.RefBooleanImpl)3 ColumnExpression (lucee.runtime.sql.exp.ColumnExpression)3 Expression (lucee.runtime.sql.exp.Expression)2 ValueNumber (lucee.runtime.sql.exp.value.ValueNumber)2 DateFormat (lucee.runtime.format.DateFormat)1 TimeFormat (lucee.runtime.format.TimeFormat)1 Ref (lucee.runtime.interpreter.ref.Ref)1 Column (lucee.runtime.sql.exp.Column)1 OperationN (lucee.runtime.sql.exp.op.OperationN)1 Collection (lucee.runtime.type.Collection)1 Struct (lucee.runtime.type.Struct)1 StructImpl (lucee.runtime.type.StructImpl)1 DateTime (lucee.runtime.type.dt.DateTime)1 VariableReference (lucee.runtime.type.ref.VariableReference)1 Attribute (lucee.transformer.bytecode.statement.tag.Attribute)1