This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/lib/persistence.js

53 lines
1.1 KiB
JavaScript

var _dataDir = null,
_persistentData = {};
module.exports = function( rootDir, $ ) {
var _load = function( name ) {
var result = $.scloadJSON( _dataDir.canonicalPath + '/' + name + '-store.json' );
return result;
};
var _save = function( name, objToSave ) {
$.scsave( objToSave, _dataDir.canonicalPath + '/' + name + '-store.json' );
};
_dataDir = new java.io.File( rootDir, 'data' );
$.persist = function( name, data, write ) {
var i,
dataFromFile;
if ( typeof data == 'undefined' ) {
data = {};
}
if ( typeof write == 'undefined' ) {
write = false;
}
if ( !write ) {
dataFromFile = _load( name );
if ( typeof dataFromFile != 'undefined') {
for ( i in dataFromFile ) {
data[i] = dataFromFile[i];
}
}
} else {
// flush data to file
_save( name, data );
}
_persistentData[name] = data;
return data;
};
/*
persist on shutdown
*/
$.addUnloadHandler( function( ) {
var name,
data;
for ( name in _persistentData ) {
data = _persistentData[name];
_save( name, data );
}
});
};