View Javadoc

1   package fr.ove.openmath.jome.formaters.mml;
2   
3   import fr.ove.utils.*;
4   import fr.ove.openmath.jome.model.*;
5   import fr.ove.openmath.jome.formaters.mml.*;
6   
7   /***
8   * Formats the formula tree structure as its corresponding MathML object.<BR>
9   * This is the formater for the lambda expressions
10  *
11  * @author © 2000 DIRAT Laurent
12  * @version 1.0 23/05/2000
13  */
14  public class LambdaFormater implements Formater {
15      /***
16      * Returns the specified object formatted as a string.
17      * @param formatedObject the formatted object (for structured object, could represents the beginning).
18      * @param formaterRepository where the different other formaters are.
19      * @param obj the object to format.
20      */
21      public String format(String formatedObject, FormaterRepository formaterRepository, Object obj) {
22          MathMLFormater mmlFormater = (MathMLFormater) formaterRepository;
23          FormulaTreeStructure fts = (FormulaTreeStructure) obj;
24          
25          FormulaTreeStructure ftsChild;
26          Formater formater;
27          
28          // CrČation du bind
29          formatedObject += mmlFormater.writeStartLambda();
30          // On met les variables liČes.
31          formatedObject += mmlFormater.writeStartBoundVariables();
32          
33          FormulaTreeStructure child = (FormulaTreeStructure) fts.getChild(1);
34          String objectId = child.getResourceIdentifier();
35          formater = formaterRepository.getFormater(objectId);
36          formatedObject = formater.format(formatedObject, formaterRepository, child);
37          
38          int nbChildren = fts.getNbChildren();
39          for (int i = 2; i < nbChildren; i++) {
40              child = (FormulaTreeStructure) fts.getChild(i);
41              formatedObject = formater.format(formatedObject, formaterRepository, child);
42          }
43          
44          formatedObject += mmlFormater.writeEndBoundVariables();
45          
46          // On met maintenant l'objet du bind.
47          child = (FormulaTreeStructure) fts.getChild(0);
48          objectId = child.getResourceIdentifier();
49          formater = formaterRepository.getFormater(objectId);
50          formatedObject = formater.format(formatedObject, formaterRepository, child);
51          
52          formatedObject += mmlFormater.writeEndLambda();
53          
54          return formatedObject;
55      }
56  }