Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
11 years ago
|
var coffee = require('coffee-script');
|
||
|
var path = require('path');
|
||
|
var createCoffeePreprocessor = function(args, config, logger, helper) {
|
||
|
config = config || {};
|
||
|
|
||
|
var log = logger.create('preprocessor.coffee');
|
||
|
var defaultOptions = {
|
||
|
bare: true,
|
||
|
sourceMap: false
|
||
|
};
|
||
|
var options = helper.merge(defaultOptions, args.options || {}, config.options || {});
|
||
|
|
||
|
var transformPath = args.transformPath || config.transformPath || function(filepath) {
|
||
|
return filepath.replace(/\.coffee$/, '.js');
|
||
|
};
|
||
|
|
||
|
return function(content, file, done) {
|
||
|
var result = null;
|
||
|
var map;
|
||
|
var datauri;
|
||
|
|
||
|
log.debug('Processing "%s".', file.originalPath);
|
||
|
file.path = transformPath(file.originalPath);
|
||
|
|
||
|
// Clone the options because coffee.compile mutates them
|
||
|
var opts = helper._.clone(options)
|
||
|
|
||
|
try {
|
||
|
result = coffee.compile(content, opts);
|
||
|
} catch (e) {
|
||
|
log.error('%s\n at %s:%d', e.message, file.originalPath, e.location.first_line);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (result.v3SourceMap) {
|
||
|
map = JSON.parse(result.v3SourceMap)
|
||
|
map.sources[0] = path.basename(file.originalPath)
|
||
|
map.sourcesContent = [content]
|
||
|
map.file = path.basename(file.path)
|
||
|
datauri = 'data:application/json;charset=utf-8;base64,' + new Buffer(JSON.stringify(map)).toString('base64')
|
||
|
done(result.js + '\n//@ sourceMappingURL=' + datauri + '\n');
|
||
|
} else {
|
||
|
done(result.js || result)
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
|
||
|
createCoffeePreprocessor.$inject = ['args', 'config.coffeePreprocessor', 'logger', 'helper'];
|
||
|
|
||
|
// PUBLISH DI MODULE
|
||
|
module.exports = {
|
||
|
'preprocessor:coffee': ['factory', createCoffeePreprocessor]
|
||
|
};
|