yc-jsnice
Version:
a node tool for jsnice in yc
66 lines (49 loc) • 2.76 kB
JavaScript
;
//core
var fs = require('fs');
var path = require('path');
//thire-part
var request = require('request');
//TODO we will support more beautify server urls
var URLS = require('./lib/urls.json');
function exists() {
var filepath = path.join.apply(path, arguments);
return fs.existsSync(filepath);
}
function isUrl(value) {
return /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
}
module.exports = function(data){
//TODO support url js
//support local single file
var filepath = path.join(process.cwd(), data);
if (!exists(filepath)) {
console.log('arguments type error'.red);
console.log(filepath + ' is not exit'.red);
process.exit(-1);
}
if (fs.statSync(filepath).isFile()) {
data = fs.readFileSync(filepath, 'utf-8');
} else if (fs.statSync(filepath).isDirectory()) {
console.log('arguments type error'.red);
console.log(filepath + ' is not directory'.red);
process.exit(-1);
}
//TODO options
var options = {
method: 'POST',
json: true,
encoding: 'utf-8',
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
},
url: URLS['jsnice'] + '?pretty=1&rename=1&types=1&suggest=0',
body: data
};
request(options, function(error, response, body){
if (!error && response.statusCode == 200) {
console.log(body.js);
}
});
};