12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 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() {
- // 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;
|