package com.himamis.retex.editor.share.meta; import static com.himamis.retex.editor.share.meta.MetaArray.APOSTROPHES; import static com.himamis.retex.editor.share.meta.MetaArray.ARRAY; import static com.himamis.retex.editor.share.meta.MetaArray.CEIL; import static com.himamis.retex.editor.share.meta.MetaArray.CLOSE; import static com.himamis.retex.editor.share.meta.MetaArray.CURLY; import static com.himamis.retex.editor.share.meta.MetaArray.FIELD; import static com.himamis.retex.editor.share.meta.MetaArray.FLOOR; import static com.himamis.retex.editor.share.meta.MetaArray.LINE; import static com.himamis.retex.editor.share.meta.MetaArray.MATRIX; import static com.himamis.retex.editor.share.meta.MetaArray.OPEN; import static com.himamis.retex.editor.share.meta.MetaArray.REGULAR; import static com.himamis.retex.editor.share.meta.MetaArray.ROW; import static com.himamis.retex.editor.share.meta.MetaArray.SQUARE; import java.util.ArrayList; import java.util.List; public class MetaModelArrays { private static MetaCharacter createArrayComponent(String name, char cas, String defaultTex) { String tex = defaultTex == null ? cas + "" : defaultTex; return new MetaCharacter(name, tex, cas, cas, MetaCharacter.CHARACTER); } private static MetaCharacter createArrayComponent(String name, char cas) { return createArrayComponent(name, cas, null); } public static final char LCEIL = '\u2308'; public static final char RCEIL = '\u2309'; public static final char LFLOOR = '\u230a'; public static final char RFLOOR = '\u230b'; MetaGroup createArraysGroup() { List<MetaComponent> components = new ArrayList<MetaComponent>(); List<MetaComponent> arrayComponents = new ArrayList<MetaComponent>(); arrayComponents.add(createArrayComponent(OPEN, '{', "\\left\\lbrace ")); arrayComponents .add(createArrayComponent(CLOSE, '}', "\\right\\rbrace ")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, CURLY, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents.add(createArrayComponent(OPEN, '(', "\\left(")); arrayComponents.add(createArrayComponent(CLOSE, ')', "\\right)")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, REGULAR, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents.add(createArrayComponent(OPEN, '[', "\\left[")); arrayComponents.add(createArrayComponent(CLOSE, ']', "\\right]")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, SQUARE, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents.add(createArrayComponent(OPEN, '\"', " \\text{\"")); arrayComponents.add(createArrayComponent(CLOSE, '\"', "\"} ")); arrayComponents.add(createArrayComponent(FIELD, '\0')); arrayComponents.add(createArrayComponent(ROW, '\0')); components.add(new MetaArray(ARRAY, APOSTROPHES, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents.add(createArrayComponent(OPEN, '|', "|")); arrayComponents.add(createArrayComponent(CLOSE, '|', "|")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, LINE, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents .add(createArrayComponent(OPEN, LCEIL, "\\left\\lceil ")); arrayComponents .add(createArrayComponent(CLOSE, RCEIL, "\\right\\rceil ")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, CEIL, arrayComponents)); arrayComponents = new ArrayList<MetaComponent>(); arrayComponents .add(createArrayComponent(OPEN, LFLOOR, "\\left\\lfloor ")); arrayComponents .add(createArrayComponent(CLOSE, RFLOOR, "\\right\\rfloor ")); arrayComponents.add(createArrayComponent(FIELD, ',')); arrayComponents.add(createArrayComponent(ROW, ';')); components.add(new MetaArray(ARRAY, FLOOR, arrayComponents)); return new ListMetaGroup(MetaModel.ARRAYS, MetaModel.ARRAYS, components); } MetaGroup createMatrixGroup() { List<MetaComponent> arrayComponents = new ArrayList<MetaComponent>(); arrayComponents .add(createArrayComponent(OPEN, '{', "\\begin{pmatrix} ")); arrayComponents .add(createArrayComponent(CLOSE, '}', " \\end{pmatrix}")); arrayComponents.add(createArrayComponent(FIELD, ',', " & ")); arrayComponents.add(createArrayComponent(ROW, ',', " \\\\ ")); return new MetaArray(MATRIX, MATRIX, arrayComponents); } }