1 # This files deals with handling all, or many, of VimFx’s prefs in bulk.
3 defaults = require('./defaults')
4 prefs = require('./prefs')
7 prefs.set(pref, null) for pref of defaults.all_prefs
11 regular = (pref for pref of defaults.all_prefs)
12 custom = Services.prefs.getBranch(defaults.BRANCH).getChildList('custom.')
14 for pref in regular.concat(custom) when prefs.has(pref)
15 exported[pref] = prefs.get(pref)
18 importExported = (exportedString) ->
21 exported = JSON.parse(exportedString)
25 errors: [error.message]
28 unless Object::toString.call(exported) == '[object Object]' and
29 Object.keys(exported).length > 0
32 errors: ["The input must be a non-empty object. Got: #{exportedString}"]
38 for pref, value of exported
39 unless Object::hasOwnProperty.call(defaults.all_prefs, pref) or
40 pref.startsWith('custom.')
41 errors.push("#{pref}: Unknown pref.")
45 # `prefs.set` handles validation of `value`.
46 prefs.set(pref, value)
48 errors.push("#{pref}: #{error.message.replace(/^VimFx: /, '')}")
53 return {numSuccesses, errors}
55 createImportErrorReport = ({numSuccesses, errors}) ->
58 'The stuff you entered is invalid:'
60 s1 = if numSuccesses == 1 then '' else 's'
61 s2 = if errors.length == 1 then '' else 's'
63 #{numSuccesses} option#{s1} imported successfully.
65 #{errors.length} error#{s2} also occurred:
71 #{errors.join('\n\n')}
78 createImportErrorReport