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
29 formatedObject += mmlFormater.writeStartLambda();
30
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
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 }