A simple storage scheme.

This commit is contained in:
Corey Johnson
2011-09-16 16:01:13 -07:00
parent 39080d0132
commit 64dafdfad9
2 changed files with 33 additions and 50 deletions

View File

@@ -10,14 +10,7 @@ class Pane
keymap: {}
persistantProperties: {}
editableProperties: {}
constructor: (options={}) ->
@createPersistentProperty(k, v) for k, v of @persistantProperties
@createPersistentProperty(k, v) for k, v of @editableProperties
for option, value of options
@[option] = value
@@ -34,35 +27,20 @@ class Pane
@initialize options
createPersistentProperty: (property, defaultValue) ->
storedPropertyName = "__" + property + "__"
Object.defineProperty @, property,
get: ->
key = @persistentanceNamespace() + property
storage: (key, value) ->
try
object = JSON.parse(localStorage[@storageNamespace()] ? "{}")
catch error
error.message += "\n#{key}: #{value}"
console.log(error)
if @[storedPropertyName]
# Cool, just chill for awhile
else if localStorage[key]
try
@[storedPropertyName] = JSON.parse(localStorage[key] ? "null")
catch error
@[storedPropertyName] = defaultValue
error.message += "\n#{key}: #{JSON.stringify localStorage[key]}"
console.log(error)
else
@[storedPropertyName] = defaultValue
return @[storedPropertyName]
set: (value) ->
key = @persistentanceNamespace() + property
try
@[storedPropertyName] = value
localStorage[key] = JSON.stringify value
catch error
error.message += "\n value = #{JSON.stringify value}"
console.log(error)
if value?
# Putting data in
object[key] = value
localStorage[@storageNamespace()] = JSON.stringify(object)
else
# Getting data out
object[key]
toggle: ->
if @showing
@@ -78,4 +56,4 @@ class Pane
# Override these in your subclass
initialize: ->
persistentanceNamespace: -> @.constructor.name
storageNamespace: -> @.constructor.name