diff options
| author | Waref Haque <warefhaque@Warefs-MacBook-Pro.local> | 2016-07-17 20:24:49 +0000 |
|---|---|---|
| committer | Waref Haque <warefhaque@Warefs-MacBook-Pro.local> | 2016-07-17 20:24:49 +0000 |
| commit | e58943c3e620f05937656fdde032254ae3373f36 (patch) | |
| tree | 77072aa55efa1753c8c8ae584669cf3589551268 /node_modules/mongodb/lib/metadata.js | |
| parent | 55098c767afb0b119aaeda330eaedba5c1a87dc3 (diff) | |
redirect commit
Diffstat (limited to 'node_modules/mongodb/lib/metadata.js')
| -rw-r--r-- | node_modules/mongodb/lib/metadata.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/node_modules/mongodb/lib/metadata.js b/node_modules/mongodb/lib/metadata.js new file mode 100644 index 0000000..7dae562 --- /dev/null +++ b/node_modules/mongodb/lib/metadata.js @@ -0,0 +1,64 @@ +var f = require('util').format; + +var Define = function(name, object, stream) { + this.name = name; + this.object = object; + this.stream = typeof stream == 'boolean' ? stream : false; + this.instrumentations = {}; +} + +Define.prototype.classMethod = function(name, options) { + var keys = Object.keys(options).sort(); + var key = generateKey(keys, options); + + // Add a list of instrumentations + if(this.instrumentations[key] == null) { + this.instrumentations[key] = { + methods: [], options: options + } + } + + // Push to list of method for this instrumentation + this.instrumentations[key].methods.push(name); +} + +var generateKey = function(keys, options) { + var parts = []; + for(var i = 0; i < keys.length; i++) { + parts.push(f('%s=%s', keys[i], options[keys[i]])); + } + + return parts.join(); +} + +Define.prototype.staticMethod = function(name, options) { + options.static = true; + var keys = Object.keys(options).sort(); + var key = generateKey(keys, options); + + // Add a list of instrumentations + if(this.instrumentations[key] == null) { + this.instrumentations[key] = { + methods: [], options: options + } + } + + // Push to list of method for this instrumentation + this.instrumentations[key].methods.push(name); +} + +Define.prototype.generate = function(keys, options) { + // Generate the return object + var object = { + name: this.name, obj: this.object, stream: this.stream, + instrumentations: [] + } + + for(var name in this.instrumentations) { + object.instrumentations.push(this.instrumentations[name]); + } + + return object; +} + +module.exports = Define;
\ No newline at end of file |
