grunt-zuckrig-closure
Version:
Reduce a verbose syntax for Google Closure Compiler to be more Pythonic/Rubistic.
129 lines (99 loc) • 2.21 kB
Markdown
Zuckrig Closure
=====================
A Grunt task that reduces a verbose syntax for Google Closure Compiler to be more Pythonic/Rubistic.
What it does?
-------------
It reduces needed code for Google Closure Compiler (provide, require and annotation).
Automatically adds:
- provide for a class
- require for super class
- constructor annotation
- extends annotation
See examples:
```javascript
app.Employee = (function(_super) {
__extends(Employee, _super);
/**
@param {string} name
*/
function Employee(name) {
Employee.__super__.constructor.call(this);
this.name = name;
}
return Employee;
})(app.Model);
```
Compiles to:
```javascript
goog.provide('app.Employee');
goog.require('app.Model');
app.Employee = (function(_super) {
__extends(Employee, _super);
/**
@constructor
@extends {app.Model}
@param {string} name
*/
function Employee(name) {
Employee.__super__.constructor.call(this);
this.name = name;
}
return Employee;
})(app.Model);
```
Usage
-----
Modify Grunfile.coffee like that:
```coffeescript
module.exports = (grunt) ->
grunt.initConfig
zuckrig:
all:
options:
filter: (file) -> not /_test.js$/.test(file)
files: [
expand: true
src: [
'path/to/**/*.js'
]
ext: '.js'
]
esteWatch:
options:
dirs: [
'path/to/**/'
]
coffee: (filepath) ->
files = [
expand: true
src: filepath
ext: '.js'
];
grunt.config ['coffee', 'all', 'files'], files
grunt.config ['zuckrig', 'all', 'files'], files
grunt.config ['coffee2closure', 'all', 'files'], files
['coffee', 'zuckrig', 'coffee2closure']
grunt.loadNpmTasks 'grunt-zuckrig-closure'
grunt.registerTask 'build', 'Build app.' ->
tasks = [
"clean"
"coffee"
'zuckrig'
"coffee2closure"
"esteDeps"
"esteWatch"
]
grunt.task.run tasks
```
Tests
-----
```sh
grunt test
```
## Development Stack
```sh
grunt -f
```
## License
Copyright (c) 2013 Lukas Rychtecky
Licensed under the MIT license.