added; subclassing with options

will be used for imagemagick support
master
Aaron Heckmann 13 years ago
parent 3b819534d5
commit cc0afa4f6e
  1. 29
      index.js
  2. 6
      lib/options.js
  3. 26
      test/subclass.js

@ -53,10 +53,37 @@ function gm (source, height, color) {
this.source = source;
}
var super = gm;
gm.subClass =
gm.setOptions = function subClass (options) {
function gm (source, height, color) {
if (!(this instanceof super)) {
return new gm(source, height, color);
}
super.call(this, source, height, color);
}
gm.prototype.__proto__ = super.prototype;
gm.prototype._options = {};
var keys = Object.keys(options)
, i = keys.length
, key
while (i--) {
key = keys[i];
gm.prototype._options[key] = options[key];
}
return gm;
}
/**
* Augment the prototype.
*/
require("./lib/options")(gm.prototype);
require("./lib/getters")(gm);
require("./lib/args")(gm.prototype);
require("./lib/drawing")(gm.prototype);
@ -67,6 +94,6 @@ require("./lib/command")(gm.prototype);
* Expose.
*/
module.exports = gm;
module.exports = exports = gm;
module.exports.version = "0.6.0";

@ -0,0 +1,6 @@
// gm - Copyright Aaron Heckmann <aaron.heckmann+github@gmail.com> (MIT Licensed)
module.exports = exports = function (proto) {
proto._options = {};
}

@ -0,0 +1,26 @@
// gm - Copyright Aaron Heckmann <aaron.heckmann+github@gmail.com> (MIT Licensed)
var assert = require('assert')
module.exports = function (_, dir, finish, gm) {
assert.equal('gm', gm('test').constructor.name);
assert.equal(undefined, gm.prototype._options.imageMagick);
var sub = gm.subClass({ imageMagick: true });
assert.equal('gm', sub('test').constructor.name);
assert.equal(true, sub.prototype._options.imageMagick);
var s = sub('test');
assert.equal(true, s._options.imageMagick);
assert.equal(undefined, gm.prototype._options.imageMagick);
gm(dir + '/photo.JPG')
.thumb(50, 80, dir + '/SUBthumb.png', function subthumb (err) {
if (err) return finish(err);
finish();
});
}
Loading…
Cancel
Save