 
     # Pull out the key and filter from the `@keyPath`.
     @parseFilter()
-    
-    # If we're working with an `@key` and not an `@value`, find the context the key belongs to so we can 
+
+    # If we're working with an `@key` and not an `@value`, find the context the key belongs to so we can
     # hold a reference to it for passing to the `dataChange` and `nodeChange` observers.
     if @key
       [unfilteredValue, @keyContext] = @renderContext.findKey @key
 
     shouldSet = yes
-    
+
     if Batman.DOM.nodeIsEditable(@node)
       Batman.DOM.events.change @node, ->
         shouldSet = no


# The Render context class manages the stack of contexts accessible to a view during rendering.
class RenderContext
  constructor: (contexts...) -> 
    @contexts = contexts
    @storage = new Batman.Object
    @contexts.push @storage
  
  findKey: (key) ->
    base = key.split('.')[0]
    i = @contexts.length
    while i--
      context = @contexts[i]
      if context.get? 
        val = context.get(key)
      else 
        val = context[base]
      return [val, context] if val?
    return [container.get(key), container]

        if argument._keypath
          [_, argument.context] = @renderContext.findKey argument._keypath
        argument

  # Turn a piece of a `data` keypath into a usable javascript object.
  #  + replacing keypaths using the above regular expression
  #  + wrapping the `,` delimited list in square brackets
  #  + and `JSON.parse`ing them as an array.
