use of org.matheclipse.core.interfaces.IASTDataset in project symja_android_library by axkr.
the class Export method evaluate.
@Override
public IExpr evaluate(final IAST ast, EvalEngine engine) {
if (Config.isFileSystemEnabled(engine)) {
if (!(ast.arg1() instanceof IStringX)) {
return F.NIL;
}
IStringX arg1 = (IStringX) ast.arg1();
Extension format = Extension.exportFilename(arg1.toString());
if (ast.size() == 4) {
if (!(ast.arg3() instanceof IStringX)) {
return F.NIL;
}
// format = ((IStringX) ast.arg3()).toString();
format = Extension.exportExtension(((IStringX) ast.arg3()).toString());
}
IExpr arg2 = ast.arg2();
try (FileWriter writer = new FileWriter(arg1.toString())) {
if (arg2 instanceof GraphExpr) {
graphExport(((GraphExpr<DefaultEdge>) arg2).toData(), writer, format);
return arg1;
}
if (format.equals(Extension.CSV) || format.equals(Extension.TSV)) {
if (arg2.isDataset()) {
((IASTDataset) arg2).csv(writer);
return arg1;
}
} else if (format.equals(Extension.TABLE)) {
int[] dims = arg2.isMatrix();
if (dims != null) {
for (int j = 0; j < dims[0]; j++) {
IAST rowList = (IAST) arg2.getAt(j + 1);
for (int i = 1; i <= dims[1]; i++) {
if (rowList.get(i).isReal()) {
writer.append(rowList.get(i).toString());
} else {
writer.append("\"");
writer.append(rowList.get(i).toString());
writer.append("\"");
}
if (i < dims[1]) {
writer.append(" ");
}
}
writer.append("\n");
}
return arg1;
} else {
if (arg2.isList()) {
}
}
} else if (format.equals(Extension.DAT)) {
File file = new File(arg1.toString());
com.google.common.io.Files.write(arg2.toString(), file, Charset.defaultCharset());
return arg1;
} else if (format.equals(Extension.WXF)) {
File file = new File(arg1.toString());
byte[] bArray = WL.serialize(arg2);
com.google.common.io.Files.write(bArray, file);
return arg1;
}
} catch (IOException ioe) {
LOGGER.log(engine.getLogLevel(), "Export: file {} not found!", arg1, ioe);
} catch (Exception ex) {
LOGGER.log(engine.getLogLevel(), "Export: file {}", arg1, ex);
}
}
return F.NIL;
}
use of org.matheclipse.core.interfaces.IASTDataset in project symja_android_library by axkr.
the class ExportString method evaluate.
@Override
public IExpr evaluate(final IAST ast, EvalEngine engine) {
IExpr arg1 = ast.arg1();
if (!(ast.arg2() instanceof IStringX)) {
return F.NIL;
}
Extension format = Extension.exportExtension(((IStringX) ast.arg2()).toString());
try (StringWriter writer = new StringWriter()) {
if (format.equals(Extension.EXPRESSIONJSON)) {
if (arg1.isNumber() || arg1.isSymbol()) {
return F.stringx(arg1.toString());
} else if (arg1.isString()) {
return F.stringx("'" + arg1.toString() + "'");
}
return ExpressionJSONConvert.exportExpressionJSONIStringX(arg1);
}
if (arg1 instanceof GraphExpr) {
graphExport(((GraphExpr<DefaultEdge>) arg1).toData(), writer, format);
return F.stringx(writer.toString());
}
if (format.equals(Extension.CSV) || format.equals(Extension.TSV)) {
if (arg1.isDataset()) {
((IASTDataset) arg1).csv(writer);
return F.stringx(writer.toString());
}
} else if (format.equals(Extension.TABLE)) {
int[] dims = arg1.isMatrix();
if (dims != null) {
for (int j = 0; j < dims[0]; j++) {
IAST rowList = (IAST) arg1.getAt(j + 1);
for (int i = 1; i <= dims[1]; i++) {
if (rowList.get(i).isReal()) {
writer.append(rowList.get(i).toString());
} else {
writer.append("\"");
writer.append(rowList.get(i).toString());
writer.append("\"");
}
if (i < dims[1]) {
writer.append(" ");
}
}
writer.append("\n");
}
return F.stringx(writer.toString());
} else {
if (arg1.isList()) {
}
}
// } else if (format.equals(Extension.DAT)) {
// File file = new File(arg1.toString());
// com.google.common.io.Files.write(arg2.toString(), file, Charset.defaultCharset());
// return arg1;
// } else if (format.equals(Extension.WXF)) {
// File file = new File(arg1.toString());
// byte[] bArray = WL.serialize(arg2);
// com.google.common.io.Files.write(bArray, file);
// return arg1;
}
// } catch (IOException ioe) {
// return engine.printMessage("ExportString: " + arg1.toString() + " not found!");
} catch (Exception ex) {
LOGGER.log(engine.getLogLevel(), "format: {}", arg1, ex);
return F.NIL;
}
return F.NIL;
}
Aggregations