mirror of
https://github.com/atom/atom.git
synced 2026-02-18 02:21:43 -05:00
A simple storage scheme.
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user