// BRICO


var through = require('through')
var fern = require('fern')
var proc = process.title // node or browser

var filter = {
  put: {
    make: function (d) {
      var m = d.key.split(':')[1]
      var mPath = config.dir_wilds+m
      _[m] = require(mPath)(d.value)
    },
    conn: function (d) {

    }
  },
  del: {
    destroy: function (d) {
      var m = d.key.split(':')[1]
      _[m].emit('close')
      delete _[m]
    },
    disconn: function (d) {

    }
  }
}

module.exports.commands = filter

module.exports = function bricoleur (data) { // YES! only use db
  var conf
  var _ = {}

  // CONFIG : resolve brico filter with paths
  
  // 2 spaces : live modules : connections :: link with filters
  
  data.get('config', function handleConfig (e, d) {
    e ? interface.emit('error', e) : conf = JSON.parse(d);
  })


  // DATA
  
  var liveStream = data.liveStream({old:false}) 
  liveStream.pipe(fern(filter))


  // UTIL
  
  function search (args, cb) {
    var match = false
    var ks = data.createKeyStream()
    ks.on('data', function (d) {
      var path = d.split(':')
      if (args[1] === path[1]) {
        match = true
        for (var i=2; i<args.length;i++) {
          var pair = args[i].split('=')
          var key = pair[0]
          var val = pair[1]
          opts[key] = val
        }
        if (opts === {}) opts = null
        // don't use spaces!
        // data.put(config.spaces.active+':'+args[1],JSON.stringify(opts))
      }
    })
    ks.on('end', function () {
      if (match !== true) interface.emit('error', new Error('could not find module'))
    })
  }


  // EVENT STREAM

  var interface = through(function write (d) {
    this.emit('data', d)
  }, function end () {
    this.emit('end')
  })

  return interface
}

@@ -130,15 +130,30 @@
 %7B%0A  
+in
 put: %7B%0A
+    put: %7B%0A  
     
@@ -171,32 +171,34 @@
 ion (d) %7B%0A      
+  
 var m = d.key.sp
@@ -205,24 +205,26 @@
 lit(':')%5B1%5D%0A
+  
       var mP
@@ -250,24 +250,26 @@
 lds+m%0A      
+ 
+ 
 _%5Bm%5D = requi
@@ -287,27 +287,31 @@
 .value)%0A    
+  
 %7D,%0A
+  
     conn: fu
@@ -332,24 +332,32 @@
     
+  
 %7D%0A  
+ 
+ 
 %7D,%0A  
+ 
+ 
 del: %7B%0A
+  
     
@@ -372,32 +372,34 @@
  function (d) %7B%0A
+  
       var m = d.
@@ -418,24 +418,26 @@
 ')%5B1%5D%0A      
+  
 _%5Bm%5D.emit('c
@@ -443,16 +443,18 @@
 close')%0A
+  
       de
@@ -463,27 +463,31 @@
 te _%5Bm%5D%0A    
+  
 %7D,%0A
+  
     disconn:
@@ -507,17 +507,38 @@
  %7B%0A%0A    
-%7D
+  %7D%0A    %7D%0A  output: %7B%0A
 %0A  %7D%0A%7D%0A%0A
@@ -556,16 +556,14 @@
 rts.
-commands
+filter
  = f
@@ -1678,20 +1678,42 @@
  // 
-EVENT STREAM
+INTERFACE : control db writes here
 %0A%0A  

fix module exports, seperate filter with input/output