mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-21 16:08:24 +03:00
Register deserializers on telepath as representation classes
This commit is contained in:
parent
105f74e15e
commit
9df69f801b
@ -121,7 +121,7 @@ class Atom extends Model
|
||||
# Private: Called by telepath. I'd like this to be merged with initialize eventually.
|
||||
created: ->
|
||||
DeserializerManager = require './deserializer-manager'
|
||||
@deserializers = new DeserializerManager()
|
||||
@deserializers = new DeserializerManager(this)
|
||||
|
||||
# Public: Sets up the basic services that should be available in all modes
|
||||
# (both spec and application). Call after this instance has been assigned to
|
||||
|
@ -5,17 +5,19 @@
|
||||
# Should be accessed via `atom.deserializers`
|
||||
module.exports =
|
||||
class DeserializerManager
|
||||
constructor: ->
|
||||
constructor: (@environment) ->
|
||||
@deserializers = {}
|
||||
@deferredDeserializers = {}
|
||||
|
||||
# Public: Register the given class(es) as deserializers.
|
||||
add: (klasses...) ->
|
||||
@deserializers[klass.name] = klass for klass in klasses
|
||||
@environment?.registerRepresentationClasses(klasses...)
|
||||
|
||||
# Public: Add a deferred deserializer for the given class name.
|
||||
addDeferred: (name, fn) ->
|
||||
@deferredDeserializers[name] = fn
|
||||
@environment?.registerDeferredRepresentationClass(name, fn)
|
||||
|
||||
# Public: Remove the given class(es) as deserializers.
|
||||
remove: (klasses...) ->
|
||||
@ -24,8 +26,7 @@ class DeserializerManager
|
||||
# Public: Deserialize the state and params.
|
||||
deserialize: (state, params) ->
|
||||
return unless state?
|
||||
|
||||
return state if state instanceof Model
|
||||
return state unless state.constructor is Object or state instanceof TelepathicObject
|
||||
|
||||
if deserializer = @get(state)
|
||||
stateVersion = state.get?('version') ? state.version
|
||||
|
Loading…
Reference in New Issue
Block a user