Expression: fixed text

This commit is contained in:
M66B 2024-04-17 20:01:33 +02:00
parent 441812c561
commit 710fd04781
1 changed files with 9 additions and 7 deletions

View File

@ -204,7 +204,7 @@ public class EntityRule {
}
if (jcondition.has("expression")) {
Expression expression = getExpression(rule, null, null, null);
Expression expression = getExpression(rule, null, null, null, null);
if (expression != null) {
if ("header".equals(what) && needsHeaders(expression))
return true;
@ -484,6 +484,7 @@ public class EntityRule {
return false;
}
// Younger
if (jcondition.has("younger")) {
int younger = jcondition.getInt("younger");
Calendar y = Calendar.getInstance();
@ -493,7 +494,7 @@ public class EntityRule {
}
// Expression
Expression expression = getExpression(this, message, headers, context);
Expression expression = getExpression(this, message, headers, html, context);
if (expression != null) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean experiments = prefs.getBoolean("experiments", false);
@ -700,7 +701,7 @@ public class EntityRule {
}
}
static Expression getExpression(EntityRule rule, EntityMessage message, List<Header> headers, Context context) throws JSONException, ParseException, MessagingException {
static Expression getExpression(EntityRule rule, EntityMessage message, List<Header> headers, String html, Context context) throws JSONException, ParseException, MessagingException {
// https://ezylang.github.io/EvalEx/
JSONObject jcondition = new JSONObject(rule.condition);
@ -718,14 +719,15 @@ public class EntityRule {
for (Address a : message.from)
from.add(MessageHelper.formatAddresses(new Address[]{a}));
Document doc = null;
if (message != null && message.content)
if (html == null && message != null && message.content)
try {
doc = JsoupEx.parse(message.getFile(context));
html = Helper.readText(message.getFile(context));
} catch (IOException ex) {
Log.e(ex);
}
Document doc = (html == null ? null : JsoupEx.parse(html));
if (headers == null && message != null && message.headers != null) {
ByteArrayInputStream bis = new ByteArrayInputStream(message.headers.getBytes());
headers = Collections.list(new InternetHeaders(bis, true).getAllHeaders());
@ -850,7 +852,7 @@ public class EntityRule {
void validate(Context context) throws JSONException, IllegalArgumentException {
try {
Expression expression = getExpression(this, null, null, context);
Expression expression = getExpression(this, null, null, null, context);
if (expression != null) {
for (String variable : expression.getUsedVariables()) {
Log.i("EXPR variable=" + variable);