diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-18 10:54:08 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-18 10:54:08 +0000 |
| commit | a35da9f9ccc1124d9b6f4461c7216ffbb0285e2f (patch) | |
| tree | d5b4b8548caae36a20e1258a8341dab4b3d522d2 /node_modules/mongodb/lib/metadata.js | |
| parent | 16bbc66ebafc6f1a55e47dbda3f3c0f658fe715c (diff) | |
| parent | c1ce89359a7b54ec97b54ce577e5534c180c5c4b (diff) | |
merged
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 |
