UNPKG

dataframe-js

Version:

Immutable and functional data structure for datascientists and developpers

180 lines (140 loc) 5.54 kB
"use strict"; require("core-js/modules/es.array.includes"); require("core-js/modules/es.date.to-json"); require("core-js/modules/es.object.to-string"); require("core-js/modules/es.promise"); require("core-js/modules/es.regexp.exec"); require("core-js/modules/es.string.includes"); require("core-js/modules/es.string.match"); require("core-js/modules/web.url.to-json"); Object.defineProperty(exports, "__esModule", { value: true }); exports.toDSV = toDSV; exports.toCSV = toCSV; exports.toTSV = toTSV; exports.toPSV = toPSV; exports.toText = toText; exports.toJSON = toJSON; exports.fromDSV = fromDSV; exports.fromCSV = fromCSV; exports.fromTSV = fromTSV; exports.fromPSV = fromPSV; exports.fromText = fromText; exports.fromJSON = fromJSON; var _d3Request = require("d3-request"); var _d3Dsv = require("d3-dsv"); var _symbol = require("./symbol"); var _errors = require("./errors"); var FILE_PATTERN = /^(?:[/]|[./]|(?:[a-zA-z]:\/)).*$/; function saveFile(path, content) { try { require("fs").writeFileSync(path, content); } catch (e) { console.warn("File system module is not available."); } } function loadTextFile(file, func) { if (FileReader && File) { var reader = new FileReader(); reader.onload = function (event) { return func(event.target.result); }; reader.readAsText(file); } } function addFileProtocol(path) { var isValidFilePath = String(path).match(FILE_PATTERN); if (isValidFilePath) { return "file://".concat(path); } return path; } function toDSV(df) { var sep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ";"; var header = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined; var parser = (0, _d3Dsv.dsvFormat)(sep); var csvContent = header ? parser.format(df.toCollection(), df[_symbol.__columns__]) : parser.formatRows(df.toArray()); if (path) { saveFile(df._cleanSavePath(path), csvContent); } return csvContent; } function toText(df) { var sep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ";"; var header = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined; return df.toDSV(sep, header, path); } function toCSV(df) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; return df.toDSV(",", header, path); } function toTSV(df) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; return df.toDSV("\t", header, path); } function toPSV(df) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; return df.toDSV("|", header, path); } function toJSON(df) { var asCollection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; var jsonContent = JSON.stringify(asCollection ? df.toCollection() : df.toDict()); if (path) { saveFile(df._cleanSavePath(path), jsonContent); } return jsonContent; } function fromDSV(pathOrFile) { var sep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ";"; var header = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var parser = (0, _d3Dsv.dsvFormat)(sep); return new Promise(function (resolve) { var parseText = function parseText(fileContent) { if (fileContent.includes("Error: ENOENT")) return resolve(null); var data = header ? parser.parse(fileContent) : parser.parseRows(fileContent); return resolve(data); }; return typeof pathOrFile === "string" ? (0, _d3Request.text)(addFileProtocol(pathOrFile), parseText) : loadTextFile(pathOrFile, parseText); }).then(function (fileContent) { if (fileContent === null) { throw new _errors.FileNotFoundError(pathOrFile); } return fileContent; }); } function fromText(pathOrFile) { var sep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ";"; var header = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; return fromDSV(pathOrFile, sep, header); } function fromCSV(pathOrFile) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; return fromDSV(pathOrFile, ",", header); } function fromTSV(pathOrFile) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; return fromDSV(pathOrFile, "\t", header); } function fromPSV(pathOrFile) { var header = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; return fromDSV(pathOrFile, "|", header); } function fromJSON(pathOrFile) { return new Promise(function (resolve) { return typeof pathOrFile === "string" ? (0, _d3Request.json)(addFileProtocol(pathOrFile), resolve) : loadTextFile(pathOrFile, function (txt) { return resolve(JSON.parse(txt)); }); }).then(function (fileContent) { if (fileContent === null) { throw new _errors.FileNotFoundError(pathOrFile); } return fileContent; }); }