From cd517821c37bade0b801b86a1203dda16ab27394 Mon Sep 17 00:00:00 2001 From: Tissevert Date: Sun, 24 Nov 2019 17:52:22 +0100 Subject: [PATCH] Add a module to wrap around localStorage and make it handy --- www/save.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 www/save.js 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)); + } +}