home *** CD-ROM | disk | FTP | other *** search
- package webeq3.parser.mathml;
-
- import java.util.Enumeration;
- import webeq3.schema.Box;
- import webeq3.schema.ContentBox;
- import webeq3.schema.MO;
- import webeq3.schema.MRow;
- import webeq3.schema.MTable;
-
- public class PreRuleSet extends P2CRuleSet {
- PreRuleSet(P2CConverter var1) {
- super(var1);
- }
-
- public void applyRule(int var1, Box var2, ContentBox var3) throws P2CConverterException {
- switch (var1) {
- case 16:
- this.processVector(var2, var3);
- break;
- case 17:
- this.processMatrix(var2, var3);
- }
-
- }
-
- public int getRuleMatch(Box var1) throws P2CConverterException {
- byte var2 = -1;
- if (isVector(var1)) {
- var2 = 16;
- } else if (isMatrix(var1)) {
- var2 = 17;
- }
-
- return var2;
- }
-
- public static boolean isVector(Box var0) throws P2CConverterException {
- if (isMatrix(var0)) {
- Box var5 = var0.getChild(1).getChild(0);
- if (var5.getChild(0).children.size() == 1) {
- return true;
- } else {
- return var5.children.size() == 1;
- }
- } else {
- if (var0.box_id != 0) {
- Box var1 = var0.getParent().getChild(var0.box_id - 1);
- if (var1 == null || var1 instanceof MO && var1.adata.equals("⁡")) {
- return false;
- }
- }
-
- if (var0.children != null && var0.children.size() == 3) {
- Box var2 = var0.getChild(0);
- if (var2 instanceof MO && var2.adata.equals("(")) {
- var2 = var0.getChild(2);
- if (var2 instanceof MO && var2.adata.equals(")")) {
- var2 = var0.getChild(1);
- if (!(var2 instanceof MRow)) {
- return false;
- } else {
- int var3 = var2.children.size();
- if (var3 > 1 && var3 % 1 == 0) {
- for(int var4 = 1; var4 < var3; var4 += 2) {
- if (!var2.getChild(var4).adata.equals(",")) {
- return false;
- }
- }
-
- return true;
- } else {
- return false;
- }
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
- }
-
- public static boolean isMatrix(Box var0) throws P2CConverterException {
- if (var0.children != null && var0.children.size() == 3) {
- Box var1 = (Box)var0.children.elementAt(0);
- if (var1 instanceof MO && (var1.adata.equals("(") || var1.adata.equals("[") || var1.adata.equals("|"))) {
- var1 = (Box)var0.children.elementAt(2);
- if (var1 instanceof MO && (var1.adata.equals(")") || var1.adata.equals("]") || var1.adata.equals("|"))) {
- var1 = (Box)var0.children.elementAt(1);
- if (var1 instanceof MRow && var1.children.size() == 1) {
- var1 = var1.getChild(0);
- if (var1 instanceof MTable && var1.children.size() != 0) {
- Box var2 = var1.getChild(0);
- int var3 = var2.children.size();
- if (var3 == 0) {
- return false;
- } else {
- Enumeration var4 = var1.children.elements();
-
- while(var4.hasMoreElements()) {
- var2 = (Box)var4.nextElement();
- if (var2.children.size() != var3) {
- throw new P2CConverterException("Matrix with different sized rows");
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-
- public void processVector(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 179, -1);
- var3.name = "vector";
- ((Box)var2).addChild(var3);
- Box var4 = var1.getChild(1);
-
- for(int var5 = 0; var5 < var4.children.size(); var5 += 2) {
- Box var6 = var4.getChild(var5);
- super.converter.processExpression(var6, var3);
- }
-
- }
-
- public void processMatrix(Box var1, ContentBox var2) throws P2CConverterException {
- Box var3 = var1.getChild(1).getChild(0);
- ContentBox var4 = new ContentBox(var2, 176, -1);
- var4.name = "matrix";
- ((Box)var2).addChild(var4);
-
- for(int var5 = 0; var5 < var3.children.size(); ++var5) {
- Box var6 = var3.getChild(var5);
- this.processRow(var6, var4);
- }
-
- }
-
- public void processRow(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 177, -1);
- var3.name = "matrixrow";
- ((Box)var2).addChild(var3);
-
- for(int var4 = 0; var4 < var1.children.size(); ++var4) {
- Box var5 = var1.getChild(var4).getChild(0);
- super.converter.processExpression(var5, var3);
- }
-
- }
- }
-