diff --git a/src/stdlib/storage.coffee b/src/stdlib/storage.coffee index db60408b6..9dfe8631b 100644 --- a/src/stdlib/storage.coffee +++ b/src/stdlib/storage.coffee @@ -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() \ No newline at end of file