Search in sources :

Example 1 with IASTDataset

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;
}
Also used : Extension(org.matheclipse.core.io.Extension) IASTDataset(org.matheclipse.core.interfaces.IASTDataset) GraphExpr(org.matheclipse.core.expression.data.GraphExpr) FileWriter(java.io.FileWriter) DefaultEdge(org.jgrapht.graph.DefaultEdge) IStringX(org.matheclipse.core.interfaces.IStringX) IExpr(org.matheclipse.core.interfaces.IExpr) IAST(org.matheclipse.core.interfaces.IAST) IOException(java.io.IOException) File(java.io.File) ExportException(org.jgrapht.nio.ExportException) IOException(java.io.IOException)

Example 2 with IASTDataset

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;
}
Also used : Extension(org.matheclipse.core.io.Extension) IASTDataset(org.matheclipse.core.interfaces.IASTDataset) StringWriter(java.io.StringWriter) GraphExpr(org.matheclipse.core.expression.data.GraphExpr) DefaultEdge(org.jgrapht.graph.DefaultEdge) IExpr(org.matheclipse.core.interfaces.IExpr) IStringX(org.matheclipse.core.interfaces.IStringX) IAST(org.matheclipse.core.interfaces.IAST) ExportException(org.jgrapht.nio.ExportException)

Aggregations

DefaultEdge (org.jgrapht.graph.DefaultEdge)2 ExportException (org.jgrapht.nio.ExportException)2 GraphExpr (org.matheclipse.core.expression.data.GraphExpr)2 IAST (org.matheclipse.core.interfaces.IAST)2 IASTDataset (org.matheclipse.core.interfaces.IASTDataset)2 IExpr (org.matheclipse.core.interfaces.IExpr)2 IStringX (org.matheclipse.core.interfaces.IStringX)2 Extension (org.matheclipse.core.io.Extension)2 File (java.io.File)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 StringWriter (java.io.StringWriter)1