Pass atom environment as second arg when deserializing objects

This commit is contained in:
Nathan Sobo
2015-10-02 21:20:35 -06:00
parent eb2ace37b4
commit 3d118b8a33
4 changed files with 15 additions and 12 deletions

View File

@@ -114,7 +114,7 @@ class Atom extends Model
@disposables = new CompositeDisposable
DeserializerManager = require './deserializer-manager'
@deserializers = new DeserializerManager()
@deserializers = new DeserializerManager(this)
@deserializeTimings = {}
@registerDeserializers()

View File

@@ -21,7 +21,7 @@
# ```
module.exports =
class DeserializerManager
constructor: ->
constructor: (@atomEnvironment) ->
@deserializers = {}
# Public: Register the given class(es) as deserializers.
@@ -29,7 +29,10 @@ class DeserializerManager
# * `deserializers` One or more deserializers to register. A deserializer can
# be any object with a `.name` property and a `.deserialize()` method. A
# common approach is to register a *constructor* as the deserializer for its
# instances by adding a `.deserialize()` class method.
# instances by adding a `.deserialize()` class method. When your method is
# called, it will be passed serialized state as the first argument and the
# {Atom} environment object as the second argument, which is useful if you
# wish to avoid referencing the `atom` global.
add: (deserializers...) ->
@deserializers[deserializer.name] = deserializer for deserializer in deserializers
new Disposable =>
@@ -39,15 +42,13 @@ class DeserializerManager
# Public: Deserialize the state and params.
#
# * `state` The state {Object} to deserialize.
# * `params` The params {Object} to pass as the second arguments to the
# deserialize method of the deserializer.
deserialize: (state, params) ->
deserialize: (state) ->
return unless state?
if deserializer = @get(state)
stateVersion = state.get?('version') ? state.version
return if deserializer.version? and deserializer.version isnt stateVersion
deserializer.deserialize(state, params)
deserializer.deserialize(state, @atomEnvironment)
else
console.warn "No deserializer found for", state

View File

@@ -11,10 +11,10 @@ class PaneAxis extends Model
@deserialize: (state, params) ->
container = params?.container
state.container = container
state.children = state.children.map (childState) -> atom.deserializers.deserialize(childState, {container})
state.children = state.children.map (childState) -> atom.deserializers.deserialize(childState)
new this(state)
constructor: ({@container, @orientation, children, flexScale}={}) ->
constructor: ({@orientation, children, flexScale}={}) ->
@emitter = new Emitter
@subscriptionsByChild = new WeakMap
@subscriptions = new CompositeDisposable
@@ -41,7 +41,10 @@ class PaneAxis extends Model
getContainer: -> @container
setContainer: (@container) -> @container
setContainer: (container) ->
if container and container isnt @container
@container = container
child.setContainer(container) for child in @children
getOrientation: -> @orientation

View File

@@ -29,7 +29,6 @@ class Pane extends Model
constructor: (params) ->
super
@container = params?.container
@activeItem = params?.activeItem
@focused = params?.focused
@@ -59,7 +58,7 @@ class Pane extends Model
getContainer: -> @container
setContainer: (container) ->
unless container is @container
if container and container isnt @container
@container = container
container.didAddPane({pane: this})