aboutsummaryrefslogtreecommitdiff
path: root/node_modules/mongodb/lib/metadata.js
diff options
context:
space:
mode:
authornanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-18 10:54:08 +0000
committernanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-18 10:54:08 +0000
commita35da9f9ccc1124d9b6f4461c7216ffbb0285e2f (patch)
treed5b4b8548caae36a20e1258a8341dab4b3d522d2 /node_modules/mongodb/lib/metadata.js
parent16bbc66ebafc6f1a55e47dbda3f3c0f658fe715c (diff)
parentc1ce89359a7b54ec97b54ce577e5534c180c5c4b (diff)
merged
Diffstat (limited to 'node_modules/mongodb/lib/metadata.js')
-rw-r--r--node_modules/mongodb/lib/metadata.js64
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