grunt-at-class

Wrap any JavaScript file in an Aria Templates class definition.

Wrap any JavaScript file in an Aria Templates class definition.

It allows to create either plain classes or a singleton.

This plugin requires Grunt ~0.4.4.

Install the plugin with npm install grunt-at-class or put it in your package.json and add the following line to your Gruntfile.js

grunt.loadNpmTasks("grunt-eco-amd");

at_class is a multitask that generates a JavaScript file with a class definition from a source file.

Task targets, files and options may be specified according to the grunt Configuring tasks guide.

In your project's Grunfile.js add a section named at_class to the object passed to grunt.initConfig().

at_class: {
myLibrary: {
src: ['path/to/the/library/to/wrap.js'],
dest: 'target/wrappedLibrary.js',
options: {
singleton: true,
exports: "myLibrary",
classpath: "wrapped.Library",
license: "path/to/library/license"
}
}
}

Classpath of the generated Aria Templates class.

Wheter the generated class should be a singleton. Defaults to true.

Name of the variable exported by the wrapped script.

If the generated class is a singleton, this variable will be accessible at the specified classpath, otherwise it'll be used as a constructor when an instance of that classpath is created.

Optional license header to include along with the source code.

Given the following library

var trivial = (function () {
return {
getOne : function () {
return 1;
}
}
})();

The following configuration

at_class: {
myLibrary: {
src: ['somewhere/trivial.js'],
dest: 'target/trivial.js',
options: {
exports: "trivial",
classpath: "wrapped.TrivialLibrary"
}
}
}

generates a class that can be used like this

Aria.load({
classes : ["wrapped.TrivialLibrary"],
oncomplete : function () {
console.log(wrapped.TrivialLibrary.getOne());  // -> 1 
 
// trivial would be undefined 
}
})

The task can be used also to generate plain classes, consider the following example

var Useless = function (name) {
this.name = name;
};
 
Useless.prototype.whoAmI = function () {
return this.name;
};

The following configuration

at_class: {
myLibrary: {
src: ['somewhere/useless.js'],
dest: 'target/useless.js',
options: {
exports: "Useless",
classpath: "wrapped.UselessLibrary",
singleton: false
}
}
}

generates a class that can be used like this

Aria.load({
classes : ["wrapped.UselessLibrary"],
oncomplete : function () {
var robert = Aria.getClassInstance("wrapped.UselessLibrary", "Robert");
var peter = Aria.getClassInstance("wrapped.UselessLibrary", "Peter");
robert.whoAmI(); // -> Robert 
peter.whoAmI(); // -> Robert 
}
})
  • Creation of the project
  • Support singleton and plain class
  • Include license information

This project is licensed under the Apache License v2.0. Read the license here.