Search in sources :

Example 1 with NEEQ

use of lucee.runtime.interpreter.ref.op.NEEQ in project Lucee by lucee.

the class CFMLExpressionInterpreter method decsionOp.

/**
 * <font f>Transfomiert eine Vergleichs Operation.
 * <br />
 * EBNF:<br />
 * <code>concatOp {("neq"|"eq"|"gte"|"gt"|"lte"|"lt"|"ct"|
 *                     "contains"|"nct"|"does not contain") spaces concatOp};
 *            (* "ct"=conatains und "nct"=does not contain; Existiert in CFMX nicht *)</code>
 * @return CFXD Element
 * @throws PageException
 */
private Ref decsionOp() throws PageException {
    Ref ref = concatOp();
    boolean hasChanged = false;
    // ct, contains
    if (cfml.isValidIndex()) {
        do {
            hasChanged = false;
            if (cfml.isCurrent('c')) {
                if (cfml.forwardIfCurrent("ct")) {
                    cfml.removeSpace();
                    ref = new CT(ref, concatOp(), limited);
                    hasChanged = true;
                } else if (cfml.forwardIfCurrent("contains")) {
                    cfml.removeSpace();
                    ref = new CT(ref, concatOp(), limited);
                    hasChanged = true;
                }
            } else // does not contain
            if (cfml.forwardIfCurrent("does", "not", "contain")) {
                cfml.removeSpace();
                ref = new NCT(ref, concatOp(), limited);
                hasChanged = true;
            } else // equal, eq
            if (cfml.isCurrent("eq") && !cfml.isCurrent("eqv")) {
                cfml.setPos(cfml.getPos() + 2);
                cfml.forwardIfCurrent("ual");
                cfml.removeSpace();
                ref = new EQ(ref, concatOp(), limited);
                hasChanged = true;
            } else // ==
            if (cfml.forwardIfCurrent("==")) {
                if (cfml.forwardIfCurrent('=')) {
                    cfml.removeSpace();
                    ref = new EEQ(ref, concatOp(), limited);
                } else {
                    cfml.removeSpace();
                    ref = new EQ(ref, concatOp(), limited);
                }
                hasChanged = true;
            } else // !=
            if (cfml.forwardIfCurrent("!=")) {
                if (cfml.forwardIfCurrent('=')) {
                    cfml.removeSpace();
                    ref = new NEEQ(ref, concatOp(), limited);
                } else {
                    cfml.removeSpace();
                    ref = new NEQ(ref, concatOp(), limited);
                }
                hasChanged = true;
            } else // <=/</<>
            if (cfml.forwardIfCurrent('<')) {
                if (cfml.forwardIfCurrent('=')) {
                    cfml.removeSpace();
                    ref = new LTE(ref, concatOp(), limited);
                } else if (cfml.forwardIfCurrent('>')) {
                    cfml.removeSpace();
                    ref = new NEQ(ref, concatOp(), limited);
                } else {
                    cfml.removeSpace();
                    ref = new LT(ref, concatOp(), limited);
                }
                hasChanged = true;
            } else // >/>=
            if (cfml.forwardIfCurrent('>')) {
                if (cfml.forwardIfCurrent('=')) {
                    cfml.removeSpace();
                    ref = new GTE(ref, concatOp(), limited);
                } else {
                    cfml.removeSpace();
                    ref = new GT(ref, concatOp(), limited);
                }
                hasChanged = true;
            } else // gt, gte, greater than or equal to, greater than
            if (cfml.isCurrent('g')) {
                if (cfml.forwardIfCurrent("gt")) {
                    if (cfml.forwardIfCurrent('e')) {
                        cfml.removeSpace();
                        ref = new GTE(ref, concatOp(), limited);
                    } else {
                        cfml.removeSpace();
                        ref = new GT(ref, concatOp(), limited);
                    }
                    hasChanged = true;
                } else if (cfml.forwardIfCurrent("greater", "than")) {
                    if (cfml.forwardIfCurrent("or", "equal", "to", true)) {
                        cfml.removeSpace();
                        ref = new GTE(ref, concatOp(), limited);
                    } else {
                        cfml.removeSpace();
                        ref = new GT(ref, concatOp(), limited);
                    }
                    hasChanged = true;
                } else if (cfml.forwardIfCurrent("ge")) {
                    cfml.removeSpace();
                    ref = new GTE(ref, concatOp(), limited);
                    hasChanged = true;
                }
            } else // is, is not
            if (cfml.forwardIfCurrent("is")) {
                if (cfml.forwardIfCurrent("not", true)) {
                    cfml.removeSpace();
                    ref = new NEQ(ref, concatOp(), limited);
                } else {
                    cfml.removeSpace();
                    ref = new EQ(ref, concatOp(), limited);
                }
                hasChanged = true;
            } else // lt, lte, less than, less than or equal to
            if (cfml.isCurrent('l')) {
                if (cfml.forwardIfCurrent("lt")) {
                    if (cfml.forwardIfCurrent('e')) {
                        cfml.removeSpace();
                        ref = new LTE(ref, concatOp(), limited);
                    } else {
                        cfml.removeSpace();
                        ref = new LT(ref, concatOp(), limited);
                    }
                    hasChanged = true;
                } else if (cfml.forwardIfCurrent("less", "than")) {
                    if (cfml.forwardIfCurrent("or", "equal", "to", true)) {
                        cfml.removeSpace();
                        ref = new LTE(ref, concatOp(), limited);
                    } else {
                        cfml.removeSpace();
                        ref = new LT(ref, concatOp(), limited);
                    }
                    hasChanged = true;
                } else if (cfml.forwardIfCurrent("le")) {
                    cfml.removeSpace();
                    ref = new LTE(ref, concatOp(), limited);
                    hasChanged = true;
                }
            } else // neq, not equal, nct
            if (cfml.isCurrent('n')) {
                // Not Equal
                if (cfml.forwardIfCurrent("neq")) {
                    cfml.removeSpace();
                    ref = new NEQ(ref, concatOp(), limited);
                    hasChanged = true;
                } else // Not Equal (Alias)
                if (cfml.forwardIfCurrent("not", "equal")) {
                    cfml.removeSpace();
                    ref = new NEQ(ref, concatOp(), limited);
                    hasChanged = true;
                } else // nct
                if (cfml.forwardIfCurrent("nct")) {
                    cfml.removeSpace();
                    ref = new NCT(ref, concatOp(), limited);
                    hasChanged = true;
                }
            }
        } while (hasChanged);
    }
    return ref;
}
Also used : EEQ(lucee.runtime.interpreter.ref.op.EEQ) NEEQ(lucee.runtime.interpreter.ref.op.NEEQ) CT(lucee.runtime.interpreter.ref.op.CT) NCT(lucee.runtime.interpreter.ref.op.NCT) Ref(lucee.runtime.interpreter.ref.Ref) NEEQ(lucee.runtime.interpreter.ref.op.NEEQ) LT(lucee.runtime.interpreter.ref.op.LT) GTE(lucee.runtime.interpreter.ref.op.GTE) NEQ(lucee.runtime.interpreter.ref.op.NEQ) EEQ(lucee.runtime.interpreter.ref.op.EEQ) NEEQ(lucee.runtime.interpreter.ref.op.NEEQ) NEQ(lucee.runtime.interpreter.ref.op.NEQ) EQ(lucee.runtime.interpreter.ref.op.EQ) LTE(lucee.runtime.interpreter.ref.op.LTE) GT(lucee.runtime.interpreter.ref.op.GT) NCT(lucee.runtime.interpreter.ref.op.NCT)

Aggregations

Ref (lucee.runtime.interpreter.ref.Ref)1 CT (lucee.runtime.interpreter.ref.op.CT)1 EEQ (lucee.runtime.interpreter.ref.op.EEQ)1 EQ (lucee.runtime.interpreter.ref.op.EQ)1 GT (lucee.runtime.interpreter.ref.op.GT)1 GTE (lucee.runtime.interpreter.ref.op.GTE)1 LT (lucee.runtime.interpreter.ref.op.LT)1 LTE (lucee.runtime.interpreter.ref.op.LTE)1 NCT (lucee.runtime.interpreter.ref.op.NCT)1 NEEQ (lucee.runtime.interpreter.ref.op.NEEQ)1 NEQ (lucee.runtime.interpreter.ref.op.NEQ)1