use of org.matheclipse.core.interfaces.IAST in project symja_android_library by axkr.
the class OutputFormFactory method convertPart.
/**
* This method will only be called if <code>list.isAST2()==true</code> and the head equals "Part".
*
* @param buf
* @param list
* @throws IOException
*/
public void convertPart(final Appendable buf, final IAST list) throws IOException {
IExpr arg1 = list.arg1();
if (!(arg1 instanceof IAST)) {
append(buf, "(");
}
convert(buf, arg1);
append(buf, "[[");
for (int i = 2; i < list.size(); i++) {
convert(buf, list.get(i));
if (i < list.size() - 1) {
append(buf, ",");
}
}
append(buf, "]]");
if (!(arg1 instanceof IAST)) {
append(buf, ")");
}
}
use of org.matheclipse.core.interfaces.IAST in project symja_android_library by axkr.
the class MathMLContentFormFactory method convert.
public void convert(final StringBuffer buf, final IExpr o, final int precedence) {
if (o instanceof IAST) {
final IAST f = ((IAST) o);
// System.out.println(f.getHeader().toString());
// IConverter converter = (IConverter)
// operTab.get(f.getHeader().toString());
// if (converter == null) {
// converter = reflection(f.getHeader().toString());
// if (converter == null || (converter.convert(buf, f, 0) == false))
// {
// convertHeadList(buf, f);
// }
// } else {
// if (converter.convert(buf, f, precedence) == false) {
// convertHeadList(buf, f);
// }
// }
IAST ast = f;
IAST temp;
if (f.topHead().hasFlatAttribute()) {
// associative
if ((temp = EvalAttributes.flatten(f)).isPresent()) {
ast = temp;
}
}
IExpr h = ast.head();
if (h.isSymbol()) {
IConverter converter = reflection(((ISymbol) h).getSymbolName());
if (converter != null) {
StringBuffer sb = new StringBuffer();
if (converter.convert(sb, ast, precedence)) {
buf.append(sb);
return;
}
}
}
convertAST(buf, ast);
return;
}
if (o instanceof INum) {
convertDouble(buf, (INum) o, precedence);
return;
}
if (o instanceof IComplexNum) {
convertDoubleComplex(buf, (IComplexNum) o, precedence);
return;
}
if (o instanceof IInteger) {
convertInteger(buf, (IInteger) o, precedence);
return;
}
if (o instanceof IFraction) {
convertFraction(buf, (IFraction) o, precedence);
return;
}
if (o instanceof IComplex) {
convertComplex(buf, (IComplex) o, precedence);
return;
}
if (o instanceof ISymbol) {
convertSymbol(buf, (ISymbol) o);
return;
}
convertString(buf, o.toString());
}
use of org.matheclipse.core.interfaces.IAST in project symja_android_library by axkr.
the class MathMLFormFactory method convert.
public void convert(final StringBuffer buf, final IExpr o, final int precedence) {
String str = CONSTANT_EXPRS.get(o);
if (str != null) {
buf.append(str);
return;
}
if (o instanceof IAST) {
final IAST f = ((IAST) o);
IAST ast = f;
IAST temp;
if (f.topHead().hasFlatAttribute()) {
// associative
if ((temp = EvalAttributes.flatten(f)).isPresent()) {
ast = temp;
}
}
IExpr h = ast.head();
if (h.isSymbol()) {
IConverter converter = reflection(((ISymbol) h).getSymbolName());
if (converter != null) {
StringBuffer sb = new StringBuffer();
if (converter.convert(sb, ast, precedence)) {
buf.append(sb);
return;
}
}
}
convertAST(buf, ast);
return;
}
if (o instanceof INum) {
convertDouble(buf, (INum) o, precedence);
return;
}
if (o instanceof IComplexNum) {
convertDoubleComplex(buf, (IComplexNum) o, precedence);
return;
}
if (o instanceof IInteger) {
convertInteger(buf, (IInteger) o, precedence);
return;
}
if (o instanceof IFraction) {
convertFraction(buf, (IFraction) o, precedence);
return;
}
if (o instanceof IComplex) {
convertComplex(buf, (IComplex) o, precedence);
return;
}
if (o instanceof ISymbol) {
convertSymbol(buf, (ISymbol) o);
return;
}
convertString(buf, o.toString());
}
use of org.matheclipse.core.interfaces.IAST in project symja_android_library by axkr.
the class Limit method convert.
/** {@inheritDoc} */
public boolean convert(final StringBuffer buf, final IAST f, final int precedence) {
if (f.isAST2() && f.arg2().isRuleAST()) {
final IAST rule = (IAST) f.arg2();
buf.append("\\lim_{");
fFactory.convertSubExpr(buf, rule.arg1(), 0);
buf.append("\\to ");
fFactory.convertSubExpr(buf, rule.arg2(), 0);
buf.append(" }\\,");
fFactory.convertSubExpr(buf, f.arg1(), 0);
// fFactory.convert(buf, f.arg1(), 0);
return true;
}
return false;
}
use of org.matheclipse.core.interfaces.IAST in project symja_android_library by axkr.
the class Symbol method definitionToString.
/** {@inheritDoc} */
@Override
public String definitionToString() throws IOException {
StringWriter buf = new StringWriter();
OutputFormFactory off = OutputFormFactory.get(EvalEngine.get().isRelaxedSyntax());
off.setIgnoreNewLine(true);
List<IAST> list = definition();
buf.append("{");
for (int i = 0; i < list.size(); i++) {
off.convert(buf, list.get(i));
if (i < list.size() - 1) {
buf.append(",\n ");
off.setColumnCounter(0);
}
}
buf.append("}\n");
return buf.toString();
}
Aggregations