TemplateInterpreter.smali
.class public Lorg/apache/commons/jexl3/internal/TemplateInterpreter;
.super Lorg/apache/commons/jexl3/internal/Interpreter;
.source "SourceFile"
# instance fields
.field private final exprs:[Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;
.field private final writer:Ljava/io/Writer;
# direct methods
.method public constructor <init>(Lorg/apache/commons/jexl3/internal/Engine;Lorg/apache/commons/jexl3/JexlContext;Lorg/apache/commons/jexl3/internal/Scope$Frame;[Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;Ljava/io/Writer;)V
.registers 6
.line 1
invoke-direct {p0, p1, p2, p3}, Lorg/apache/commons/jexl3/internal/Interpreter;-><init>(Lorg/apache/commons/jexl3/internal/Engine;Lorg/apache/commons/jexl3/JexlContext;Lorg/apache/commons/jexl3/internal/Scope$Frame;)V
.line 2
iput-object p4, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->exprs:[Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;
.line 3
iput-object p5, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
return-void
.end method
.method private doPrint(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/Object;)V
.registers 8
const/4 v0, 0x0
.line 1
:try_start_1
iget-object v1, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
if-eqz v1, :cond_38
.line 2
instance-of v2, p2, Ljava/lang/CharSequence;
if-eqz v2, :cond_11
.line 3
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-virtual {v1, p2}, Ljava/io/Writer;->write(Ljava/lang/String;)V
goto :goto_38
:cond_11
if-eqz p2, :cond_38
const/4 v1, 0x1
new-array v1, v1, [Ljava/lang/Object;
const/4 v2, 0x0
aput-object p2, v1, v2
.line 4
iget-object v2, p0, Lorg/apache/commons/jexl3/internal/InterpreterBase;->jexl:Lorg/apache/commons/jexl3/internal/Engine;
invoke-virtual {v2}, Lorg/apache/commons/jexl3/internal/Engine;->getUberspect()Lorg/apache/commons/jexl3/introspection/JexlUberspect;
move-result-object v2
.line 5
iget-object v3, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
const-string v4, "print"
invoke-interface {v2, v3, v4, v1}, Lorg/apache/commons/jexl3/introspection/JexlUberspect;->getMethod(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Lorg/apache/commons/jexl3/introspection/JexlMethod;
move-result-object v2
if-eqz v2, :cond_2f
.line 6
iget-object p2, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
invoke-interface {v2, p2, v1}, Lorg/apache/commons/jexl3/introspection/JexlMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_38
.line 7
:cond_2f
iget-object v1, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-virtual {v1, p2}, Ljava/io/Writer;->write(Ljava/lang/String;)V
:try_end_38
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_38} :catch_41
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_38} :catch_39
:cond_38
:goto_38
return-void
:catch_39
move-exception p2
const-string v1, "invoke print"
.line 8
invoke-static {p1, v1, v0, p2}, Lorg/apache/commons/jexl3/internal/TemplateEngine;->createException(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/String;Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;Ljava/lang/Exception;)Lorg/apache/commons/jexl3/JxltEngine$Exception;
move-result-object p1
throw p1
:catch_41
move-exception p2
const-string v1, "call print"
.line 9
invoke-static {p1, v1, v0, p2}, Lorg/apache/commons/jexl3/internal/TemplateEngine;->createException(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/String;Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;Ljava/lang/Exception;)Lorg/apache/commons/jexl3/JxltEngine$Exception;
move-result-object p1
throw p1
.end method
.method private printComposite(Lorg/apache/commons/jexl3/internal/TemplateEngine$CompositeExpression;)V
.registers 6
.line 1
iget-object p1, p1, Lorg/apache/commons/jexl3/internal/TemplateEngine$CompositeExpression;->exprs:[Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;
.line 2
array-length v0, p1
const/4 v1, 0x0
:goto_4
if-ge v1, v0, :cond_18
.line 3
aget-object v2, p1, v1
invoke-virtual {v2, p0}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->evaluate(Lorg/apache/commons/jexl3/internal/Interpreter;)Ljava/lang/Object;
move-result-object v2
.line 4
aget-object v3, p1, v1
invoke-virtual {v3}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->getInfo()Lorg/apache/commons/jexl3/JexlInfo;
move-result-object v3
invoke-direct {p0, v3, v2}, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->doPrint(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/Object;)V
add-int/lit8 v1, v1, 0x1
goto :goto_4
:cond_18
return-void
.end method
# virtual methods
.method public varargs include(Lorg/apache/commons/jexl3/internal/TemplateScript;[Ljava/lang/Object;)V
.registers 5
iget-object v0, p0, Lorg/apache/commons/jexl3/internal/InterpreterBase;->context:Lorg/apache/commons/jexl3/JexlContext;
iget-object v1, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
invoke-virtual {p1, v0, v1, p2}, Lorg/apache/commons/jexl3/internal/TemplateScript;->evaluate(Lorg/apache/commons/jexl3/JexlContext;Ljava/io/Writer;[Ljava/lang/Object;)V
return-void
.end method
.method public print(I)V
.registers 4
if-ltz p1, :cond_2d
.line 1
iget-object v0, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->exprs:[Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;
array-length v1, v0
if-lt p1, v1, :cond_8
goto :goto_2d
.line 2
:cond_8
aget-object p1, v0, p1
.line 3
invoke-virtual {p1}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->isDeferred()Z
move-result v0
if-eqz v0, :cond_18
.line 4
iget-object v0, p0, Lorg/apache/commons/jexl3/internal/Interpreter;->frame:Lorg/apache/commons/jexl3/internal/Scope$Frame;
iget-object v1, p0, Lorg/apache/commons/jexl3/internal/InterpreterBase;->context:Lorg/apache/commons/jexl3/JexlContext;
invoke-virtual {p1, v0, v1}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->prepare(Lorg/apache/commons/jexl3/internal/Scope$Frame;Lorg/apache/commons/jexl3/JexlContext;)Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;
move-result-object p1
.line 5
:cond_18
instance-of v0, p1, Lorg/apache/commons/jexl3/internal/TemplateEngine$CompositeExpression;
if-eqz v0, :cond_22
.line 6
check-cast p1, Lorg/apache/commons/jexl3/internal/TemplateEngine$CompositeExpression;
invoke-direct {p0, p1}, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->printComposite(Lorg/apache/commons/jexl3/internal/TemplateEngine$CompositeExpression;)V
goto :goto_2d
.line 7
:cond_22
invoke-virtual {p1}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->getInfo()Lorg/apache/commons/jexl3/JexlInfo;
move-result-object v0
invoke-virtual {p1, p0}, Lorg/apache/commons/jexl3/internal/TemplateEngine$TemplateExpression;->evaluate(Lorg/apache/commons/jexl3/internal/Interpreter;)Ljava/lang/Object;
move-result-object p1
invoke-direct {p0, v0, p1}, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->doPrint(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/Object;)V
:cond_2d
:goto_2d
return-void
.end method
.method public resolveNamespace(Ljava/lang/String;Lorg/apache/commons/jexl3/parser/JexlNode;)Ljava/lang/Object;
.registers 4
const-string v0, "jexl"
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_a
move-object p1, p0
goto :goto_e
:cond_a
invoke-super {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/Interpreter;->resolveNamespace(Ljava/lang/String;Lorg/apache/commons/jexl3/parser/JexlNode;)Ljava/lang/Object;
move-result-object p1
:goto_e
return-object p1
.end method
.method public visit(Lorg/apache/commons/jexl3/parser/ASTFunctionNode;Ljava/lang/Object;)Ljava/lang/Object;
.registers 8
.line 1
invoke-virtual {p1}, Lorg/apache/commons/jexl3/parser/SimpleNode;->jjtGetNumChildren()I
move-result v0
const/4 v1, 0x2
if-le v0, v1, :cond_7d
const/4 v0, 0x0
.line 2
invoke-virtual {p1, v0}, Lorg/apache/commons/jexl3/parser/SimpleNode;->jjtGetChild(I)Lorg/apache/commons/jexl3/parser/JexlNode;
move-result-object v2
check-cast v2, Lorg/apache/commons/jexl3/parser/ASTIdentifier;
invoke-virtual {v2}, Lorg/apache/commons/jexl3/parser/ASTIdentifier;->getName()Ljava/lang/String;
move-result-object v2
const-string v3, "jexl"
.line 3
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_7d
const/4 p2, 0x1
.line 4
invoke-virtual {p1, p2}, Lorg/apache/commons/jexl3/parser/SimpleNode;->jjtGetChild(I)Lorg/apache/commons/jexl3/parser/JexlNode;
move-result-object v2
check-cast v2, Lorg/apache/commons/jexl3/parser/ASTIdentifier;
.line 5
invoke-virtual {p1, v1}, Lorg/apache/commons/jexl3/parser/SimpleNode;->jjtGetChild(I)Lorg/apache/commons/jexl3/parser/JexlNode;
move-result-object v1
check-cast v1, Lorg/apache/commons/jexl3/parser/ASTArguments;
.line 6
invoke-virtual {v2}, Lorg/apache/commons/jexl3/parser/ASTIdentifier;->getName()Ljava/lang/String;
move-result-object v2
const-string v3, "print"
.line 7
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
const/4 v4, 0x0
if-eqz v3, :cond_44
.line 8
invoke-virtual {p0, v1, v4}, Lorg/apache/commons/jexl3/internal/Interpreter;->visit(Lorg/apache/commons/jexl3/parser/ASTArguments;Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object p1
.line 9
aget-object p1, p1, v0
check-cast p1, Ljava/lang/Integer;
invoke-virtual {p1}, Ljava/lang/Integer;->intValue()I
move-result p1
invoke-virtual {p0, p1}, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->print(I)V
return-object v4
:cond_44
const-string v3, "include"
.line 10
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_6d
.line 11
invoke-virtual {p0, v1, v4}, Lorg/apache/commons/jexl3/internal/Interpreter;->visit(Lorg/apache/commons/jexl3/parser/ASTArguments;Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_6d
.line 12
array-length v3, v1
if-lez v3, :cond_6d
.line 13
aget-object v3, v1, v0
instance-of v3, v3, Lorg/apache/commons/jexl3/internal/TemplateScript;
if-eqz v3, :cond_6d
.line 14
aget-object p1, v1, v0
check-cast p1, Lorg/apache/commons/jexl3/internal/TemplateScript;
.line 15
array-length v0, v1
if-le v0, p2, :cond_68
.line 16
array-length v0, v1
invoke-static {v1, p2, v0}, Ljava/util/Arrays;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;
move-result-object p2
goto :goto_69
:cond_68
move-object p2, v4
.line 17
:goto_69
invoke-virtual {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->include(Lorg/apache/commons/jexl3/internal/TemplateScript;[Ljava/lang/Object;)V
return-object v4
.line 18
:cond_6d
new-instance p2, Lorg/apache/commons/jexl3/JxltEngine$Exception;
invoke-virtual {p1}, Lorg/apache/commons/jexl3/parser/JexlNode;->jexlInfo()Lorg/apache/commons/jexl3/JexlInfo;
move-result-object p1
const-string v0, "no callable template function "
.line 19
invoke-static {v0, v2}, Landroidx/appcompat/e;->g(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 20
invoke-direct {p2, p1, v0, v4}, Lorg/apache/commons/jexl3/JxltEngine$Exception;-><init>(Lorg/apache/commons/jexl3/JexlInfo;Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 21
:cond_7d
invoke-super {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/Interpreter;->visit(Lorg/apache/commons/jexl3/parser/ASTFunctionNode;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
return-object p1
.end method
.method public visit(Lorg/apache/commons/jexl3/parser/ASTIdentifier;Ljava/lang/Object;)Ljava/lang/Object;
.registers 5
.line 27
invoke-virtual {p1}, Lorg/apache/commons/jexl3/parser/ASTIdentifier;->getName()Ljava/lang/String;
move-result-object v0
const-string v1, "$jexl"
.line 28
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_f
.line 29
iget-object p1, p0, Lorg/apache/commons/jexl3/internal/TemplateInterpreter;->writer:Ljava/io/Writer;
return-object p1
.line 30
:cond_f
invoke-super {p0, p1, p2}, Lorg/apache/commons/jexl3/internal/Interpreter;->visit(Lorg/apache/commons/jexl3/parser/ASTIdentifier;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
return-object p1
.end method