mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-11-11 04:48:44 +03:00
Add a ‘sources’ and ‘excludeSources’ options to Config::get
If the option is supplied, we will only retrieve values from the specified sources.
This commit is contained in:
parent
0e1ef201c1
commit
73df017d83
@ -34,6 +34,30 @@ describe "Config", ->
|
||||
atom.config.setDefaults("bar", baz: 7)
|
||||
expect(atom.config.get("bar.baz")).toEqual {a: 3}
|
||||
|
||||
describe "when a 'sources' option is specified", ->
|
||||
it "only retrieves values from the specified sources", ->
|
||||
atom.config.set("x.y", 1, scopeSelector: ".foo", source: "a")
|
||||
atom.config.set("x.y", 2, scopeSelector: ".foo", source: "b")
|
||||
atom.config.set("x.y", 3, scopeSelector: ".foo", source: "c")
|
||||
atom.config.setSchema("x.y", type: "integer", default: 4)
|
||||
|
||||
expect(atom.config.get("x.y", sources: ["a"], scope: [".foo"])).toBe 1
|
||||
expect(atom.config.get("x.y", sources: ["b"], scope: [".foo"])).toBe 2
|
||||
expect(atom.config.get("x.y", sources: ["c"], scope: [".foo"])).toBe 3
|
||||
expect(atom.config.get("x.y", sources: ["x"], scope: [".foo"])).toBe 4
|
||||
|
||||
describe "when an 'excludeSources' option is specified", ->
|
||||
it "only retrieves values from the specified sources", ->
|
||||
atom.config.set("x.y", 1, scopeSelector: ".foo", source: "a")
|
||||
atom.config.set("x.y", 2, scopeSelector: ".foo", source: "b")
|
||||
atom.config.set("x.y", 3, scopeSelector: ".foo", source: "c")
|
||||
atom.config.setSchema("x.y", type: "integer", default: 4)
|
||||
|
||||
expect(atom.config.get("x.y", excludeSources: ["a"], scope: [".foo"])).toBe 3
|
||||
expect(atom.config.get("x.y", excludeSources: ["c"], scope: [".foo"])).toBe 2
|
||||
expect(atom.config.get("x.y", excludeSources: ["b", "c"], scope: [".foo"])).toBe 1
|
||||
expect(atom.config.get("x.y", excludeSources: ["b", "c", "a"], scope: [".foo"])).toBe 4
|
||||
|
||||
describe ".set(keyPath, value)", ->
|
||||
it "allows a key path's value to be written", ->
|
||||
expect(atom.config.set("foo.bar.baz", 42)).toBe true
|
||||
|
@ -472,10 +472,10 @@ class Config
|
||||
keyPath = arguments[0]
|
||||
|
||||
if scope?
|
||||
value = @getRawScopedValue(scope, keyPath)
|
||||
value ? @getRawValue(keyPath)
|
||||
value = @getRawScopedValue(scope, keyPath, options)
|
||||
value ? @getRawValue(keyPath, options)
|
||||
else
|
||||
@getRawValue(keyPath)
|
||||
@getRawValue(keyPath, options)
|
||||
|
||||
# Essential: Sets the value for a configuration setting.
|
||||
#
|
||||
@ -806,7 +806,7 @@ class Config
|
||||
catch e
|
||||
console.warn("'#{keyPath}' could not be set. Attempted value: #{JSON.stringify(value)}; Schema: #{JSON.stringify(@getSchema(keyPath))}")
|
||||
|
||||
getRawValue: (keyPath) ->
|
||||
getRawValue: (keyPath, options) ->
|
||||
value = _.valueForKeyPath(@settings, keyPath)
|
||||
defaultValue = _.valueForKeyPath(@defaultSettings, keyPath)
|
||||
|
||||
@ -930,9 +930,9 @@ class Config
|
||||
@usersScopedSettings.add @scopedSettingsStore.addProperties(source, settingsBySelector, @usersScopedSettingPriority)
|
||||
@emitter.emit 'did-change'
|
||||
|
||||
getRawScopedValue: (scopeDescriptor, keyPath) ->
|
||||
getRawScopedValue: (scopeDescriptor, keyPath, options) ->
|
||||
scopeDescriptor = ScopeDescriptor.fromObject(scopeDescriptor)
|
||||
@scopedSettingsStore.getPropertyValue(scopeDescriptor.getScopeChain(), keyPath)
|
||||
@scopedSettingsStore.getPropertyValue(scopeDescriptor.getScopeChain(), keyPath, options)
|
||||
|
||||
observeScopedKeyPath: (scope, keyPath, callback) ->
|
||||
oldValue = @get(keyPath, {scope})
|
||||
|
Loading…
Reference in New Issue
Block a user