Skip to content

Commit

Permalink
use exportArray instead of exportStorage
Browse files Browse the repository at this point in the history
  • Loading branch information
metelkin committed Sep 5, 2024
1 parent e468556 commit 76b92a7
Show file tree
Hide file tree
Showing 11 changed files with 89 additions and 37 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ let c = (new Container)
.loadMany(qArr)
.knitMany();
// get export element
let output = c.exportStorage[0]
let output = c.exportArray[0]
.make();
// print sbml code to console
Expand Down
47 changes: 47 additions & 0 deletions cases/0-hello-world/platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,50 @@ options:
importModule:
type: heta
source: src/index.heta
export:
- format: HetaCode
filepath: heta_code
id: heta_code
- format: SBML
filepath: mm_sbml_l2v4
version: L2V4
spaceFilter: mm
- format: SBML
filepath: mm_sbml_l3v1
version: L3V1
spaceFilter: mm
- format: Simbio
filepath: mm_simbio
spaceFilter: mm
- format: JSON
filepath: full_json
spaceFilter: mm
- format: YAML
filepath: full_yaml
spaceFilter: mm
- format: SLV
filepath: mm_slv
version: 25
spaceFilter: mm
- format: Julia
filepath: mm_julia
spaceFilter: mm
- format: DBSolve
filepath: mm_dbsolve
spaceFilter: mm
- format: Mrgsolve
filepath: mm_mrg
spaceFilter: mm
- format: Matlab
filepath: matlab1
spaceFilter: mm
- format: XLSX
filepath: table
spaceFilter: mm
- format: Table
filepath: table2
spaceFilter: mm
bookType: biff8
- format: Dot
filepath: graph
- format: Summary
32 changes: 16 additions & 16 deletions cases/0-hello-world/src/index.heta
Original file line number Diff line number Diff line change
Expand Up @@ -27,79 +27,79 @@ namespace mm begin
//ss2 @StopSwitcher {trigger: S < P};
end

heta_code #export {
#export {
format: HetaCode,
filepath: heta_code
};
mm_sbml_l2v4 #export {
#export {
spaceFilter: mm,
format: SBML,
filepath: mm_sbml_l2v4,
version: L2V4
};
mm_sbml_l3v1 #export {
#export {
spaceFilter: mm,
format: SBML,
filepath: mm_sbml_l3v1,
version: L3V1
};
mm_simbio #export {
#export {
spaceFilter: mm,
format: Simbio,
filepath: mm_simbio,
};
full_json #export {
#export {
spaceFilter: mm,
format: JSON,
filepath: full_json,
};
full_yaml #export {
#export {
spaceFilter: mm,
format: YAML,
filepath: full_yaml,
};
mm_slv #export {
#export {
spaceFilter: mm,
format: SLV,
filepath: mm_slv,
version: 25
};
mm_julia #export {
#export {
spaceFilter: mm,
format: Julia,
filepath: mm_julia,
};
mm_dbsolve #export {
#export {
spaceFilter: mm,
format: DBSolve,
filepath: mm_dbsolve,
};
mm_mrg #export {
#export {
spaceFilter: mm,
format: Mrgsolve,
filepath: mm_mrg,
};
matlab1 #export {
#export {
spaceFilter: mm,
format: Matlab,
filepath: matlab1,
};
table #export {
#export {
spaceFilter: mm,
format: XLSX,
filepath: table,
splitByClass: true
};
table2 #export {
#export {
spaceFilter: mm,
format: Table,
filepath: table2,
bookType: biff8
};
graph #export {
#export {
format: Dot,
filepath: graph
};
summary0 #export {
#export {
format: Summary
};
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "Programming platform for Quantitative Systems Pharmacology modeling in NodeJS",
"main": "src/index.js",
"scripts": {
"test:dev": "mocha test/null --config=./test/.mocharc.json",
"test:dev": "mocha test/cases/0 --config=./test/.mocharc.json",
"test": "mocha test --config=./test/.mocharc.json",
"jsdoc": "jsdoc -r -c .jsdoc.json --readme api-references.md -d docs/dev src",
"test:cov": "nyc --reporter=lcov npm run test",
Expand Down
6 changes: 3 additions & 3 deletions src/builder/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,12 +179,12 @@ class Builder {
}

/**
* Run exporting of files based on components of `this.container.exportStorage`.
* Run exporting of files based on components of `this.container.exportArray`.
*
* @method Builder#exportMany
*/
exportMany(){
let exportElements = [...this.container.exportStorage].map((x) => x[1]);
let exportElements = this.container.exportArray;
this.logger.info(`Start exporting to files, total: ${exportElements.length}.`);

exportElements.forEach((exportItem) => _makeAndSave(exportItem, this._distDirname));
Expand All @@ -197,7 +197,7 @@ class Builder {
* @method Builder#exportJuliaOnly
*/
exportJuliaOnly(){
// create export without putting it to exportStorage
// create export without putting it to exportArray
let Julia = this.container.classes['Julia'];
let exportItem = new Julia({
format: 'Julia',
Expand Down
4 changes: 2 additions & 2 deletions src/container/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const reservedWords = [
];

/**
* Creates one of inheritors of `AbstractExport` and put it in `container.exportStorage`.
* Creates one of inheritors of `AbstractExport` and put it in `container.exportArray`.
* The inheritor depends on `q.format` property.
* For example `{id: 'output', format: 'JSON', ...}` creates the object of `JSONExport` type.
*
Expand All @@ -38,7 +38,7 @@ Container.prototype.export = function(q = {}, isCore = false){

// create and push to storage
let exportInstance = new this.classes[q.format](q, isCore);
if (!exportInstance.errored) this.exportStorage.set(exportInstance.id, exportInstance);
if (!exportInstance.errored) this.exportArray.push(exportInstance);

return exportInstance;
};
Expand Down
6 changes: 3 additions & 3 deletions src/container/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ const TopoSort = require('@insysbio/topo-sort');
* @property {Logger} logger object providing transport of errors, warnings and info messages on Heta platform level.
* @property {object[]} defaultLogs Default storage of errors which will be used for diagnostics.
* The {@link JSONTransport} is used here.
* @property {Map<string,_Export>} exportStorage Storage for `_Export` instances. Key is a string identifier.
* @property {object[]} exportArray Storage for `_Export` instances.
* @property {Map<string,UnitDef>} unitDefStorage Storage for `UnitDef` instances. Key is a string identifier.
* @property {Map<string,FunctionDef>} functionDefStorage Storage for `FunctionDef` instances. Key is a string identifier.
* @property {Map<string,Scenario>} scenarioStorage Storage for `Scenario` instances. Key is a string identifier.
Expand Down Expand Up @@ -75,7 +75,7 @@ class Container {
this.logger.addTransport(new JSONTransport('info', this.defaultLogs));

// storage of AbstractExport Instances
this.exportStorage = new Map();
this.exportArray = [];
// storage for UnitDef
this.unitDefStorage = new Map();
// storage for FunctionDef
Expand Down Expand Up @@ -162,7 +162,7 @@ class Container {
+ this.unitDefStorage.size // global elements
+ this.functionDefStorage.size
+ this.scenarioStorage.size
+ this.exportStorage.size;
+ this.exportArray.length;
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/templates/heta-code.heta.njk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{#-
this.exportStorage = new Map();
this.exportArray = [];
this.unitDefStorage = [...];
this.namespaceStorage = [...];
-#}
Expand Down
20 changes: 12 additions & 8 deletions test/cases/0.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,50 +48,54 @@ describe('Testing "cases/0-hello-world"', () => {
//console.log(b);
});

var exportArray = [];
it('Run include', () => {
b.run();
});

it('Run #export {format: SBML}, check and compare.', () => {
let sbml_export = b.container.exportStorage.get('mm_sbml_l2v4');
let sbml_export = b.container.exportArray
.find(x => x.filepath === 'mm_sbml_l2v4');
let code = sbml_export.makeText(true)[0].content;
expect(code).xml.to.to.be.valid();
expect(code).xml.be.deep.equal(sbml_l2v4_correct);
});

it('Run #export {format: SBML}, check and compare.', () => {
let sbml_export = b.container.exportStorage.get('mm_sbml_l3v1');
let sbml_export = b.container.exportArray
.find(x => x.filepath === 'mm_sbml_l3v1');
let code = sbml_export.makeText(true)[0].content;
expect(code).xml.to.to.be.valid();
expect(code).xml.be.deep.equal(sbml_l3v1_correct);
});

it('Run #export {format: JSON}, check and compare.', () => {
let json_export = b.container.exportStorage.get('full_json');
let json_export = b.container.exportArray
.find(x => x.filepath === 'full_json');
let code = json_export.makeText(true)[0].content;
let obj = JSON.parse(code);
expect(obj).to.be.deep.equal(json_correct);
//console.log(obj);
});

it('Run #export {format: YAML}, check and compare.', () => {
let yaml_export = b.container.exportStorage.get('full_yaml');
let yaml_export = b.container.exportArray.find(x => x.filepath === 'full_yaml');
let code = yaml_export.makeText(true)[0].content;
let obj = load(code);
expect(obj).to.be.deep.equal(yaml_correct);
//console.log(code);
});

it('Run #export {format: SLV}, check and compare.', () => {
let slv_export = b.container.exportStorage.get('mm_slv');
let slv_export = b.container.exportArray.find(x => x.filepath === 'mm_slv');
let code = slv_export.makeText(true)[0].content;
let obj = slvParse.parse(code);
expect(obj).to.be.deep.equal(slv_correct);
//console.log(obj);
});

it('Run #export {format: XLSX}, check and compare.', () => {
let xlsx_export = b.container.exportStorage.get('table');
let xlsx_export = b.container.exportArray.find(x => x.filepath === 'table');
let code = xlsx_export.makeSheet(true); // check only sheet #0

// check number of sheets
Expand All @@ -115,7 +119,7 @@ describe('Testing "cases/0-hello-world"', () => {
});

it('Run #export {format: Mrgsolve}, check and compare.', () => {
let mm_mrg = b.container.exportStorage.get('mm_mrg');
let mm_mrg = b.container.exportArray.find(x => x.filepath === 'mm_mrg');
let code = mm_mrg.makeText(true);
// compare model.cpp text content
expect(code[0].pathSuffix).to.be.equal('/mm.cpp');
Expand All @@ -124,7 +128,7 @@ describe('Testing "cases/0-hello-world"', () => {
});

it('Run #export {format: Julia}, check and compare.', () => {
let mm_mrg = b.container.exportStorage.get('mm_julia');
let mm_mrg = b.container.exportArray.find(x => x.filepath === 'mm_julia');
let code = mm_mrg.makeText(true);
// compare model.js text content
expect(code[0].pathSuffix).to.be.equal('/model.jl');
Expand Down
3 changes: 2 additions & 1 deletion test/cases/14.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ describe('Case #14: testing SBML module with units', () => {
});

it('compare JSON export', () => {
let json_export = b.container.exportStorage.get('json_export');
let json_export = b.container.exportArray
.find(x => x.filepath === 'json_export');
let code = json_export.make(true)[0].content;
let obj = JSON.parse(code);
expect(obj).to.be.deep.equal(json_correct);
Expand Down
2 changes: 1 addition & 1 deletion test/cases/6.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('Testing "cases/6-import"', () => {

it('Run include', () => {
b.run();
exportArray = [...b.container.exportStorage].map((x) => x[1]);
exportArray = b.container.exportArray;
});

it('Run @SBMLExport, check and compare.', () => {
Expand Down

0 comments on commit 76b92a7

Please sign in to comment.