package com.himamis.retex.editor.share.meta; import static com.himamis.retex.editor.share.meta.MetaCharacter.OPERATOR; import static com.himamis.retex.editor.share.meta.MetaCharacter.SYMBOL; import java.util.ArrayList; import java.util.List; class MetaModelSymbols { private static MetaComponent createSymbol(String name, String cas, String tex, char key, char unicode, int type) { return new MetaSymbol(name, cas, tex, key, unicode, type); } private static MetaComponent createOperator(String name, String cas, String tex, char key, char unicode) { return createSymbol(name, cas, tex, key, unicode, OPERATOR); } private static MetaComponent createOperator(String name, String cas, String tex, char unicode) { char key = name.length() == 1 ? name.charAt(0) : 0; return createOperator(name, cas, tex, key, unicode); } private static MetaComponent createOperator(String name, String cas, String tex) { char key = name.length() == 1 ? name.charAt(0) : 0; return createOperator(name, cas, tex, key, key); } private static MetaComponent createOperator(String name, String tex, char unicode) { return createOperator(name, name, tex, unicode); } private static MetaComponent createOperator(String name) { return createOperator(name, name, name); } private static MetaComponent createSymbol(String name, String cas, String tex, char unicode) { char key = name.length() == 1 ? name.charAt(0) : 0; return createSymbol(name, cas, tex, key, unicode, SYMBOL); } private static MetaComponent createSymbol(String name, String tex, char unicode) { return createSymbol(name, name, tex, unicode); } private static MetaComponent createSymbol(String name, String cas, String tex) { return createSymbol(name, cas, tex, '\0'); } MetaGroup createOperators() { List<MetaComponent> operators = new ArrayList<MetaComponent>(); operators.add(createOperator("-")); operators.add(createOperator("+")); operators.add(createOperator("*", "\\cdot", '*')); operators.add(createOperator("/")); operators.add(createOperator("\\")); operators.add(createOperator("'")); operators.add(createOperator("!")); operators.add(createOperator(":")); operators.add(createOperator("=")); operators.add(createOperator("<")); operators.add(createOperator(">")); operators.add(createOperator(",")); operators.add(createOperator(";")); operators.add(createOperator("percent", "\\%", '%')); operators.add(createOperator("dollar", "\\$", '$')); operators.add(createOperator("times", "\\times", '*')); operators.add(createOperator("div", "\\div", '/')); operators.add(createOperator("ne", "!=", "\\ne", '\u2260')); operators.add(createOperator("equal", "==", "\u225f", '\u225f')); operators.add(createOperator("equiv", "NaN", "\\equiv", '\u2261')); operators.add(createOperator("neg", "!", "\\neg", '!')); operators.add(createOperator("vee", "|", "\\vee", '\u2228')); operators.add(createOperator("wedge", "&", "\\wedge", '\u2227')); operators.add(createOperator("implication", "->", "\\implies", '\u21D2')); operators.add(createOperator("<")); operators.add(createOperator(">")); operators.add(createOperator("leq", "<=", "\\leq", '\u2264')); operators.add(createOperator("geq", ">=", "\\leq", '\u2264')); operators.add(createOperator("ll", "NaN", "\\ll", '\u226a')); operators.add(createOperator("gg", "NaN", "\\gg", '\u226b')); operators.add(createOperator("sim", "NaN", "\\sim", '\u223c')); operators.add(createOperator("approx", "NaN", "\\approx", '\u2248')); operators.add(createOperator("simeq", "NaN", "\\simeq", '\u2243')); operators.add(createOperator("propto", "NaN", "\\propto", '\u221d')); operators.add(createOperator("forall", "NaN", "\\forall", '\u2200')); operators.add(createOperator("exists", "NaN", "\\exists", '\u2203')); operators.add(createOperator("perpendicular", "\\perp", '\u27c2')); operators.add(createOperator("parallel", "\\parallel", '\u2225')); operators.add(createOperator("subset", "NaN", "\\subset", '\u2282')); operators.add(createOperator("supset", "NaN", "\\supset", '\u2283')); operators.add(createOperator("subseteq", "NaN", "\\subseteq", '\u2286')); operators.add(createOperator("supseteq", "NaN", "\\supseteq", '\u2287')); operators.add(createOperator("cup", "NaN", "\\cup", '\u222a')); operators.add(createOperator("cap", "NaN", "\\cap", '\u2229')); operators.add(createOperator("in", "NaN", "\\in", '\u2208')); operators.add(createOperator("empty", "NaN", "\\emptyset", '\u2205')); operators.add(createOperator("pm", "NaN", "\\pm", '\u00b1')); operators.add(createOperator("prime", "NaN", "\\prime", '\u2032')); operators.add(createOperator("circ", "NaN", "\\circ", '\u2218')); operators.add(createOperator("partial", "NaN", "\\partial", '\u2202')); operators.add(createOperator("leftarrow", "NaN", "\\leftarrow", '\u2190')); operators.add(createOperator("rightarrow", "NaN", "\\rightarrow", '\u2192')); operators.add(createOperator("leftrightarrow", "NaN", "\\leftrightarrow", '\u2194')); operators.add(createOperator("notrightarrow", "NaN", "\\not\\rightarrow", '\u219b')); operators.add(createOperator("notleftrightarrow", "NaN", "\\not\\leftrightarrow", '\u21ae')); operators.add(createOperator("vectorprod", "\\times", '\u2a2f')); return new ListMetaGroup(MetaModel.OPERATORS, MetaModel.OPERATORS, operators); } MetaGroup createSymbols() { List<MetaComponent> symbols = new ArrayList<MetaComponent>(); symbols.add(createSymbol("inf", "\\infty", '\u221e')); symbols.add(createSymbol("alpha", "\\alpha", '\u03b1')); symbols.add(createSymbol("beta", "\\beta", '\u03b2')); symbols.add(createSymbol("gamma", "\\gamma", '\u03b3')); symbols.add(createSymbol("delta", "\\delta", '\u03b4')); symbols.add(createSymbol("epsilon", "\\epsilon", '\u03b5')); symbols.add(createSymbol("vareps", "\\varepsilon", '\u03f5')); symbols.add(createSymbol("zeta", "\\zeta", '\u03b6')); symbols.add(createSymbol("eta", "\\eta", '\u03b7')); symbols.add(createSymbol("theta", "\\theta", '\u03b8')); symbols.add(createSymbol("varth", "\\vartheta", '\u03b8')); symbols.add(createSymbol("iota", "\\iota", '\u03b9')); symbols.add(createSymbol("kappa", "\\kappa", '\u03ba')); symbols.add(createSymbol("lambda", "\\lambda", '\u03bb')); symbols.add(createSymbol("mu", "\\mu", '\u03bc')); symbols.add(createSymbol("nu", "\\nu", '\u03bd')); symbols.add(createSymbol("xi", "\\xi", '\u03be')); symbols.add(createSymbol("omicron", "\\omicron", '\u03bf')); symbols.add(createSymbol("pi", "\\pi", '\u03c0')); symbols.add(createSymbol("varpi", "\\varpi", '\u03c0')); symbols.add(createSymbol("rho", "\\rho", '\u03c1')); symbols.add(createSymbol("varrho", "\\varrho", '\u03c1')); symbols.add(createSymbol("sigma", "\\sigma", '\u03c3')); symbols.add(createSymbol("varsigma", "\\varsigma", '\u03c2')); symbols.add(createSymbol("tau", "\\tau", '\u03c4')); symbols.add(createSymbol("upsilon", "\\upsilon", '\u03c5')); symbols.add(createSymbol("phi", "\\phi", '\u03d5')); symbols.add(createSymbol("varphi", "\\varphi", '\u03c6')); symbols.add(createSymbol("chi", "\\chi", '\u03c7')); symbols.add(createSymbol("psi", "\\psi", '\u03c8')); symbols.add(createSymbol("omega", "\\omega", '\u03c9')); symbols.add(createSymbol("Gamma", "\\Gamma", '\u0393')); symbols.add(createSymbol("Delta", "\\Delta", '\u0394')); symbols.add(createSymbol("Theta", "\\Theta", '\u0398')); symbols.add(createSymbol("Lambda", "\\Lambda", '\u039b')); symbols.add(createSymbol("Xi", "\\Xi", '\u039e')); symbols.add(createSymbol("Pi", "\\Pi", '\u03a0')); symbols.add(createSymbol("Sigma", "\\Sigma", '\u03a3')); symbols.add(createSymbol("Upsilon", "\\Upsilon", '\u03a5')); symbols.add(createSymbol("Phi", "\\Phi", '\u03a6')); symbols.add(createSymbol("Psi", "\\Psi", '\u03a8')); symbols.add(createSymbol("Omega", "\\Omega", '\u03a9')); symbols.add(createSymbol("nabla", "\\nabla", '\u2207')); symbols.add(createSymbol("hbar", "\\hbar", '\u0127')); symbols.add(createSymbol("ddagger", "\\ddagger", '\u2021')); symbols.add(createSymbol("paragraph", "paragraph", "\\paragraph")); symbols.add(createSymbol("otimes", "\\otimes", '\u2297')); symbols.add(createSymbol("degree", "\\degree", '\u00b0')); symbols.add(createSymbol("quotes", "\"", '"')); return new ListMetaGroup(MetaModel.SYMBOLS, MetaModel.SYMBOLS, symbols); } }