File: TranslatorUtils.java

package info (click to toggle)
libhtml5parser-java 1.4%2Br20250916-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,900 kB
  • sloc: java: 28,661; xml: 144; sh: 136; makefile: 3
file content (81 lines) | stat: -rw-r--r-- 2,818 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package nu.validator.htmlparser.cpptranslate;

import japa.parser.ast.expr.BinaryExpr;
import japa.parser.ast.expr.BinaryExpr.Operator;
import japa.parser.ast.expr.Expression;
import japa.parser.ast.expr.MethodCallExpr;
import japa.parser.ast.expr.NameExpr;
import japa.parser.ast.expr.NullLiteralExpr;
import japa.parser.ast.stmt.BlockStmt;
import japa.parser.ast.stmt.ExpressionStmt;
import japa.parser.ast.stmt.Statement;

import java.util.List;

public class TranslatorUtils {
    public static boolean isErrorOnlyBlock(Statement elseStmt, boolean supportErrorReporting) {
        if (supportErrorReporting) {
            return false;
        }
        if (elseStmt instanceof BlockStmt) {
            BlockStmt block = (BlockStmt) elseStmt;
            List<Statement> statements = block.getStmts();
            if (statements == null) {
                return false;
            }
            if (statements.size() != 1) {
                return false;
            }
            Statement statement = statements.get(0);
            if (statement instanceof ExpressionStmt) {
                ExpressionStmt exprStmt = (ExpressionStmt) statement;
                Expression expr = exprStmt.getExpression();
                if (expr instanceof MethodCallExpr) {
                    MethodCallExpr call = (MethodCallExpr) expr;
                    if (call.getName().startsWith("err")) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public static boolean isErrorHandlerIf(Expression condition, boolean supportErrorReporting) {
        if (supportErrorReporting) {
            return false;
        }
        while (condition instanceof BinaryExpr) {
            BinaryExpr binex = (BinaryExpr) condition;
            condition = binex.getLeft();
            if (condition instanceof NameExpr) {
                NameExpr name = (NameExpr) condition;
                if ("errorHandler".equals(name.getName())) {
                    return true;
                }
            }
        }
        return false;
    }

    public static boolean isDocumentModeHandlerNullCheck(Expression condition) {
        if (condition instanceof BinaryExpr) {
            BinaryExpr binex = (BinaryExpr) condition;
            if (binex.getOperator() != Operator.notEquals) {
                return false;
            }
            if (!(binex.getRight() instanceof NullLiteralExpr)) {
                return false;
            }
            Expression left = binex.getLeft();
            if (left instanceof NameExpr) {
                NameExpr name = (NameExpr) left;
                if ("documentModeHandler".equals(name.getName())) {
                    return true;
                }
            }
        }
        return false;
    }

}