Rename deserializeView to deserialize

In additional, rename `registerViewClass(es)` to `registerDeserializer(s)`.
This moves us to a situation where any kind of object may want to be
deserialized, not just views.
This commit is contained in:
Nathan Sobo
2013-02-18 19:04:14 -07:00
parent 4c01a1e600
commit 7bdd51b456
8 changed files with 20 additions and 18 deletions

View File

@@ -12,6 +12,8 @@ fs = require 'fs'
module.exports =
class EditSession
registerDeserializer(this)
@deserialize: (state, project) ->
if fs.exists(state.buffer)
session = project.buildEditSessionForPath(state.buffer)
@@ -62,6 +64,7 @@ class EditSession
@off()
serialize: ->
deserializer: 'EditSession'
buffer: @buffer.getPath()
scrollTop: @getScrollTop()
scrollLeft: @getScrollLeft()

View File

@@ -95,7 +95,7 @@ class Editor extends View
serialize: ->
@saveScrollPositionForActiveEditSession()
viewClass: "Editor"
deserializer: "Editor"
editSessions: @editSessions.map (session) -> session.serialize()
activeEditSessionIndex: @getActiveEditSessionIndex()
isFocused: @isFocused

View File

@@ -4,14 +4,14 @@ $ = require 'jquery'
module.exports =
class PaneGrid extends View
@deserialize: ({children}) ->
childViews = children.map (child) -> deserializeView(child)
childViews = children.map (child) -> deserialize(child)
new this(childViews)
initialize: (children=[]) ->
@append(children...)
serialize: ->
viewClass: @className()
deserializer: @className()
children: @childViewStates()
childViewStates: ->

View File

@@ -9,10 +9,10 @@ class Pane extends View
@subview 'wrappedView', wrappedView if wrappedView
@deserialize: ({wrappedView}) ->
new Pane(deserializeView(wrappedView))
new Pane(deserialize(wrappedView))
serialize: ->
viewClass: "Pane"
deserializer: "Pane"
wrappedView: @wrappedView?.serialize()
adjustDimensions: -> # do nothing

View File

@@ -13,7 +13,7 @@ PaneRow = require 'pane-row'
module.exports =
class RootView extends View
registerViewClasses(this, Pane, PaneRow, PaneColumn, Editor)
registerDeserializers(this, Pane, PaneRow, PaneColumn, Editor)
@configDefaults:
ignoredNames: [".git", ".svn", ".DS_Store"]
@@ -34,7 +34,7 @@ class RootView extends View
atom.atomPackageStates = packageStates ? {}
rootView = new RootView(projectOrPathToOpen, suppressOpen: true)
rootView.setRootPane(deserializeView(panesViewState)) if panesViewState
rootView.setRootPane(deserialize(panesViewState)) if panesViewState
rootView
title: null

View File

@@ -10,7 +10,7 @@ require 'jquery-extensions'
require 'underscore-extensions'
require 'space-pen-extensions'
registeredViewClasses = {}
deserializers = {}
windowAdditions =
rootViewParentSelector: 'body'
@@ -104,15 +104,14 @@ windowAdditions =
onerror: ->
atom.showDevTools()
registerViewClass: (viewClass) ->
registerViewClasses(viewClass)
registerDeserializers: (args...) ->
registerDeserializer(arg) for arg in args
registerViewClasses: (viewClasses...) ->
for viewClass in viewClasses
registeredViewClasses[viewClass.name] = viewClass
registerDeserializer: (klass) ->
deserializers[klass.name] = klass
deserializeView: (viewState) ->
registeredViewClasses[viewState.viewClass]?.deserialize(viewState)
deserialize: (state) ->
deserializers[state.deserializer]?.deserialize(state)
measure: (description, fn) ->
start = new Date().getTime()