diff --git a/www/save.js b/www/save.js new file mode 100644 index 0000000..d1cc34d --- /dev/null +++ b/www/save.js @@ -0,0 +1,48 @@ +function Save(modules) { + var save = JSON.parse(localStorage.getItem('save')) || {}; + + return { + get: get, + set: set + }; + + function move(coordinates) { + if(coordinates.path.length == 1) { + return coordinates; + } else { + var newFocus = coordinates.focus[coordinates.path[0]]; + if (newFocus != undefined) { + var newCoordinates = {path: coordinates.path.slice(1), focus: newFocus}; + return move(newCoordinates); + } else { + return coordinates; + } + } + } + + function get(key) { + if(key != undefined) { + var outputCoordinates = move({path: key.split('.'), focus: save}); + if(outputCoordinates.focus != undefined && outputCoordinates.path.length == 1) { + return outputCoordinates.focus[outputCoordinates.path[0]] + } else { + return null; + } + } + } + + function set(key, value) { + if(key != undefined) { + var outputCoordinates = move({path: key.split('.'), focus: save}); + while(outputCoordinates.path.length > 1) { + outputCoordinates.focus[outputCoordinates.path[0]] = {}; + outputCoordinates.focus = outputCoordinates.focus[outputCoordinates.path[0]]; + outputCoordinates.path = outputCoordinates.path.slice(1); + } + outputCoordinates.focus[outputCoordinates.path[0]] = value; + } else { + save = value; + } + localStorage.setItem('save', JSON.stringify(save)); + } +}