window.memo =
set: (key, value)-> unless value is undefined serializedValue = JSON.stringify(value) window.localStorage[key] = serializedValue value get: (key) -> if value = localStorage[key] try JSON.parse(value) catch error # It's not valid JSON, so probably set by something using localStorage directly. value else null keys: -> Object.keys(localStorage) delete: (key) -> localStorage.removeItem(key) clear: -> localStorage.clear() all: -> object = {} @keys().map (key) => object[key] = @get(key) object