mirror of
https://github.com/atom/atom.git
synced 2026-01-23 22:08:08 -05:00
Nearly pure JS storage.
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user