diff --git a/src/another-xlsx-export/index.js b/src/another-xlsx-export/index.js index 28c2b79a..df6bd9ec 100644 --- a/src/another-xlsx-export/index.js +++ b/src/another-xlsx-export/index.js @@ -12,6 +12,9 @@ class AnotherXLSXExport extends XLSXExport { get format(){ return 'Another'; } + get defaultFilepath() { + return 'another-xlsx'; + } makeSheet(){ // filtered namespaces let nsOutput = [...this._container.namespaceStorage] diff --git a/src/core/abstract-export.js b/src/core/abstract-export.js index 464eda23..a92df6b8 100644 --- a/src/core/abstract-export.js +++ b/src/core/abstract-export.js @@ -3,7 +3,6 @@ const { ajv } = require('../utils'); const schema = { type: 'object', - required: ['filepath'], properties: { filepath: {type: 'string', pattern: '^[\\w\\d\\\\/._!-]+$'}, spaceFilter: { type: 'string' } @@ -36,7 +35,7 @@ class AbstractExport extends Top { let valid = AbstractExport.isValid(q, logger); if (!valid) { this.errored = true; return; } - if (q.filepath) this.filepath = q.filepath; + this.filepath = q.filepath || this.defaultFilepath; this.spaceFilter = q.spaceFilter || '.+'; } diff --git a/src/dbsolve-export/index.js b/src/dbsolve-export/index.js index 6bdb34b6..182b5c3f 100644 --- a/src/dbsolve-export/index.js +++ b/src/dbsolve-export/index.js @@ -36,6 +36,9 @@ class DBSolveExport extends AbstractExport{ get requireConcrete() { return true; } + get defaultFilepath() { + return 'dbsolve'; + } /** * The method creates text code to save as SLV file. * diff --git a/src/dot-export/index.js b/src/dot-export/index.js index 54c70168..de7485e5 100644 --- a/src/dot-export/index.js +++ b/src/dot-export/index.js @@ -23,6 +23,9 @@ class DotExport extends AbstractExport{ get format(){ return 'Dot'; } + get defaultFilepath() { + return 'dot'; + } makeText(){ let logger = this._container.logger; diff --git a/src/heta-code-export/index.js b/src/heta-code-export/index.js index 2c209c0a..c0c65ee5 100644 --- a/src/heta-code-export/index.js +++ b/src/heta-code-export/index.js @@ -23,6 +23,9 @@ class HetaCodeExport extends AbstractExport{ get format(){ return 'heta'; } + get defaultFilepath() { + return 'heta-code'; + } /** * The method creates text code to save as Heta code file. * diff --git a/src/json-export/index.js b/src/json-export/index.js index 65fd524d..89234f49 100644 --- a/src/json-export/index.js +++ b/src/json-export/index.js @@ -25,6 +25,9 @@ class JSONExport extends AbstractExport { get className(){ return 'JSONExport'; } + get defaultFilepath() { + return 'json'; + } get format(){ return 'JSON'; } diff --git a/src/julia-export/index.js b/src/julia-export/index.js index 95a45f49..5f98d0fa 100644 --- a/src/julia-export/index.js +++ b/src/julia-export/index.js @@ -31,6 +31,9 @@ class JuliaExport extends AbstractExport { get requireConcrete() { return true; } + get defaultFilepath() { + return 'julia'; + } // skipVersionCode means that the version will not be printed in output // this is required for autotests makeText(skipVersionCode = false){ diff --git a/src/matlab-export/index.js b/src/matlab-export/index.js index 8ce0162e..228a718a 100644 --- a/src/matlab-export/index.js +++ b/src/matlab-export/index.js @@ -22,6 +22,9 @@ class MatlabExport extends AbstractExport { get className(){ return 'MatlabExport'; } + get defaultFilepath() { + return 'matlab'; + } get format(){ return 'Matlab'; } diff --git a/src/mrgsolve-export/index.js b/src/mrgsolve-export/index.js index 70896f29..7766b1b2 100644 --- a/src/mrgsolve-export/index.js +++ b/src/mrgsolve-export/index.js @@ -21,6 +21,9 @@ class MrgsolveExport extends AbstractExport { get className(){ return 'MrgsolveExport'; } + get defaultFilepath() { + return 'mrgsolve'; + } get format(){ return 'Mrgsolve'; } diff --git a/src/sbml-export/index.js b/src/sbml-export/index.js index d539b582..d14ad64a 100644 --- a/src/sbml-export/index.js +++ b/src/sbml-export/index.js @@ -29,6 +29,9 @@ class SBMLExport extends AbstractExport { get className(){ return 'SBMLExport'; } + get defaultFilepath() { + return 'sbml'; + } get format(){ return 'SBML'; } diff --git a/src/simbio-export/index.js b/src/simbio-export/index.js index 7fd62873..fad58a29 100644 --- a/src/simbio-export/index.js +++ b/src/simbio-export/index.js @@ -21,6 +21,9 @@ class SimbioExport extends AbstractExport{ get className(){ return 'SimbioExport'; } + get defaultFilepath() { + return 'simbio'; + } get format(){ return 'Simbio'; } diff --git a/src/slv-export/index.js b/src/slv-export/index.js index 7d66182c..e04ddb5a 100644 --- a/src/slv-export/index.js +++ b/src/slv-export/index.js @@ -35,6 +35,9 @@ class SLVExport extends AbstractExport{ get className(){ return 'SLVExport'; } + get defaultFilepath() { + return 'slv'; + } get format(){ return 'SLV'; } diff --git a/src/table-export/index.js b/src/table-export/index.js index 31850b09..946d4159 100644 --- a/src/table-export/index.js +++ b/src/table-export/index.js @@ -75,6 +75,9 @@ class TableExport extends AbstractExport { get className(){ return 'TableExport'; } + get defaultFilepath() { + return 'table'; + } get format(){ return 'Table'; } diff --git a/src/xlsx-export/index.js b/src/xlsx-export/index.js index 82f0e9cf..2994d226 100644 --- a/src/xlsx-export/index.js +++ b/src/xlsx-export/index.js @@ -23,6 +23,9 @@ class XLSXExport extends TableExport { get className(){ return 'XLSXExport'; } + get defaultFilepath() { + return 'xlsx'; + } get format(){ return 'XLSX'; } diff --git a/src/yaml-export/index.js b/src/yaml-export/index.js index aafc11c2..7b4e65ba 100644 --- a/src/yaml-export/index.js +++ b/src/yaml-export/index.js @@ -26,6 +26,9 @@ class YAMLExport extends AbstractExport { get className(){ return 'YAMLExport'; } + get defaultFilepath() { + return 'yaml'; + } get format(){ return 'YAML'; } diff --git a/test/export/export-check.js b/test/export/export-check.js index 716ffefb..7e0c2b86 100644 --- a/test/export/export-check.js +++ b/test/export/export-check.js @@ -59,7 +59,8 @@ describe('General argument checking', () => { let json_export = p.export({ format: 'JSON' }); - expect(p.logger).to.have.property('hasErrors').true; + expect(p.logger).to.have.property('hasErrors').false; + expect(json_export).to.have.property('filepath', 'json'); expect(json_export).to.be.instanceOf(p.classes.JSON); p.logger.resetErrors(); });