Beispiel #1
0
def to_ruby(self, schema):
    v = StringOp("string", self.value).partial_eval().to_ruby(schema).expr
    start = IntegerOp("string", self.start).partial_eval().to_ruby(schema).expr
    end = IntegerOp("integer", self.end).partial_eval().to_ruby(schema).expr

    return Ruby(miss=FALSE,
                type=STRING,
                expr="(" + v + ").substring(" + start + ", " + end + ")",
                frum=self)
def to_es14_script(self, schema, not_null=False, boolean=False, many=True):
    v = StringOp("string", self.value).partial_eval().to_es14_script(schema).expr
    start = IntegerOp("string", self.start).partial_eval().to_es14_script(schema).expr
    end = IntegerOp("integer", self.end).partial_eval().to_es14_script(schema).expr

    return EsScript(
        miss=FALSE,
        type=STRING,
        expr="(" + v + ").substring(" + start + ", " + end + ")",
        frum=self
    )
Beispiel #3
0
def to_ruby(self, schema):
    value = self.term.to_ruby(schema)
    if value.many:
        return IntegerOp(
            "integer",
            Ruby(miss=value.missing,
                 type=value.type,
                 expr="(" + value.expr + ")[0]",
                 frum=value.frum)).to_ruby(schema)
    elif value.type == BOOLEAN:
        return Ruby(miss=value.missing,
                    type=INTEGER,
                    expr=value.expr + " ? 1 : 0",
                    frum=self)
    elif value.type == INTEGER:
        return value
    elif value.type == NUMBER:
        return Ruby(miss=value.missing,
                    type=INTEGER,
                    expr="(int)(" + value.expr + ")",
                    frum=self)
    elif value.type == STRING:
        return Ruby(miss=value.missing,
                    type=INTEGER,
                    expr="Integer.parseInt(" + value.expr + ")",
                    frum=self)
    else:
        return Ruby(miss=value.missing,
                    type=INTEGER,
                    expr="((" + value.expr +
                    ") instanceof String) ? Integer.parseInt(" + value.expr +
                    ") : (int)(" + value.expr + ")",
                    frum=self)
Beispiel #4
0
def to_ruby(self, schema):
    v = StringOp("string", self.value).to_ruby(schema).expr
    find = StringOp("string", self.find).to_ruby(schema).expr
    start = IntegerOp("integer", self.start).to_ruby(schema).expr

    return Ruby(miss=FALSE,
                type=INTEGER,
                expr="(" + v + ").indexOf(" + find + ", " + start + ")",
                frum=self)
def to_python(self, not_null=False, boolean=False, many=False):
    agg = "rows[rownum+" + IntegerOp("", self.offset).to_python() + "]"
    path = split_field(json2value(self.var.json))
    if not path:
        return agg

    for p in path[:-1]:
        agg = agg + ".get(" + convert.value2quote(p) + ", EMPTY_DICT)"
    return agg + ".get(" + convert.value2quote(path[-1]) + ")"
def to_es14_script(self, schema, not_null=False, boolean=False, many=True):
    v = StringOp("string", self.value).to_es14_script(schema).expr
    find = StringOp("string", self.find).to_es14_script(schema).expr
    start = IntegerOp("integer", self.start).to_es14_script(schema).expr

    return EsScript(
        miss=FALSE,
        type=INTEGER,
        expr="(" + v + ").indexOf(" + find + ", " + start + ")",
        frum=self
    )
def to_es14_script(self, schema, not_null=False, boolean=False, many=True):
    value = self.term.to_es14_script(schema)
    if value.many:
        return IntegerOp("integer", EsScript(
            miss=value.missing,
            type=value.type,
            expr="(" + value.expr + ")[0]",
            frum=value.frum
        )).to_es14_script(schema)
    elif value.type == BOOLEAN:
        return EsScript(
            miss=value.missing,
            type=INTEGER,
            expr=value.expr + " ? 1 : 0",
            frum=self
        )
    elif value.type == INTEGER:
        return value
    elif value.type == NUMBER:
        return EsScript(
            miss=value.missing,
            type=INTEGER,
            expr="(int)(" + value.expr + ")",
            frum=self
        )
    elif value.type == STRING:
        return EsScript(
            miss=value.missing,
            type=INTEGER,
            expr="Integer.parseInt(" + value.expr + ")",
            frum=self
        )
    else:
        return EsScript(
            miss=value.missing,
            type=INTEGER,
            expr="((" + value.expr + ") instanceof String) ? Integer.parseInt(" + value.expr + ") : (int)(" + value.expr + ")",
            frum=self
        )