Nearly pure JS storage.

This commit is contained in:
Corey Johnson
2011-11-29 15:22:31 -05:00
parent 1c985bd899
commit 6ea1766945

View File

@@ -1,18 +1,31 @@
module.exports =
class Storage
get: (key, defaultValue) ->
storagePath: (require.resolve '~/.atom/.storage')
get: (key, defaultValue=null) ->
try
value = OSX.NSApp.storageGet_defaultValue(key, defaultValue)
@toJS value
value = @storage().valueForKeyPath key
@toJS value or defaultValue
catch error
error.message += "\nGetting #{key}"
console.error(error)
set: (key, value) ->
OSX.NSApp.storageSet_value key, value
keys = key.split '.'
parent = storage = @storage()
for key in keys.slice 0, -1
parent[key] = {} unless parent[key]
parent = parent[key]
parent[keys.slice -1] = value
storage.writeToFile_atomically @storagePath, true
storage: ->
storage = OSX.NSMutableDictionary.dictionaryWithContentsOfFile @storagePath
storage ?= OSX.NSMutableDictionary.dictionary
toJS: (value) ->
if not value
if not value or not value.isKindOfClass
value
else if value.isKindOfClass OSX.NSDictionary.class
dict = {}
@@ -23,4 +36,4 @@ class Storage
array.push @toJS v for v in value
array
else
value.valueOf()
value.valueOf()