text: var Emitter  = require('./emitter'),
      utils    = require('./utils'),
      Observer = require('./observer'),
      catcher  = new Emitter()
  
  /**
   *  Auto-extract the dependencies of a computed property
   *  by recording the getters triggered when evaluating it.
   */
  function catchDeps (binding) {
      if (binding.isFn) return
      utils.log('\n- ' + binding.key)
      var got = utils.hash()
      binding.deps = []
      catcher.on('get', function (dep) {
          var has = got[dep.key]
          if (has && has.compiler === dep.compiler) return
          got[dep.key] = dep
          utils.log('  - ' + dep.key)
          binding.deps.push(dep)
          dep.subs.push(binding)
      })
      binding.value.$get()
      catcher.off('get')
  }
  
  module.exports = {
  
      /**
       *  the observer that catches events triggered by getters
       */
      catcher: catcher,
  
      /**
       *  parse a list of computed property bindings
       */
      parse: function (bindings) {
          utils.log('\nparsing dependencies...')
          Observer.shouldGet = true
          bindings.forEach(catchDeps)
          Observer.shouldGet = false
          utils.log('\ndone.')
      }
      
  }