fecs lint

This commit is contained in:
kekee000 2015-07-19 14:33:58 +08:00
parent c374e3a4ad
commit 3b6bcd2897
7 changed files with 57 additions and 47 deletions

18
.fecsignore Normal file
View File

@ -0,0 +1,18 @@
src/fonteditor/template/dialog/*
src/fonteditor/template/export/*
src/editor/shapes/*
src/ttf/data/*
build/*
css/*
demo/*
dep/*
font/*
node_modules
release
test
index.html
index-en.html
empty.html
edp-build-config.js
edp-build-config-node.js
edp-webserver-config.js

View File

@ -4,8 +4,9 @@
*/
var esprima = require('esprima');
var estraverse = require( 'estraverse' );
var escodegen = require('escodegen');
var estraverse = require('estraverse');
var SYNTAX = estraverse.Syntax;
// 顶级模块,用来生成相对位置
@ -32,7 +33,8 @@ function getAst(code) {
ast = esprima.parse(code, {
range: true
});
} catch (ex) {
}
catch (e) {
throw 'can\'t parse amd code';
}
@ -41,12 +43,12 @@ function getAst(code) {
/**
* 获取define的factory
*
* @param {Object} defineExpr define表达式
* @return {astNode}
*/
function getDefineFactory(defineExpr) {
var args = defineExpr['arguments'];
var args = defineExpr.arguments;
var factoryAst;
// 解析参数
@ -74,9 +76,9 @@ function getDefineBlock(code) {
// require('fs').writeFileSync('ast.json', JSON.stringify(ast));
estraverse.traverse(ast, {
enter: function (node, parent) {
if ( node.type == SYNTAX.ExpressionStatement
&& node.expression.type == SYNTAX.CallExpression
&& node.expression.callee.name == 'define'
if (node.type === SYNTAX.ExpressionStatement
&& node.expression.type === SYNTAX.CallExpression
&& node.expression.callee.name === 'define'
) {
var factory = getDefineFactory(node.expression);
@ -91,7 +93,7 @@ function getDefineBlock(code) {
}
// define(function() {})
else if (factory.type === SYNTAX.FunctionExpression){
else if (factory.type === SYNTAX.FunctionExpression) {
defineBlock = {
type: 'function',
defineRange: node.range,
@ -101,6 +103,18 @@ function getDefineBlock(code) {
var body = factory.body.body;
var returnRange = defineBlock.returnRange = [];
var enterHandler = function (returnNode) {
if (
returnNode.type === SYNTAX.FunctionExpression
|| returnNode.type === SYNTAX.FunctionDeclaration
) {
this.skip();
}
else if (returnNode.type === SYNTAX.ReturnStatement) {
returnRange.push(returnNode.range);
}
};
// 替换return
for (var i = 0, l = body.length; i < l; i++) {
// 直接在函数体里的return
@ -109,19 +123,9 @@ function getDefineBlock(code) {
}
// 在函数内部块里的return
else if (body[i].type !== SYNTAX.FunctionExpression) {
var functionEnter = 0;
estraverse.traverse(body[i], {
enter: function (returnNode) {
if (
returnNode.type === SYNTAX.FunctionExpression
|| returnNode.type === SYNTAX.FunctionDeclaration
) {
this.skip();
}
else if (returnNode.type === SYNTAX.ReturnStatement){
returnRange.push(returnNode.range);
}
}
enter: enterHandler
});
}
}
@ -166,7 +170,7 @@ function replaceDefine(code) {
index = block.defineRange[1];
}
else if (block.type === 'object'){
else if (block.type === 'object') {
segments.push(code.slice(index, block.defineRange[0]));
segments.push('module.exports =');
segments.push(code.slice(block.factoryRange[0], block.factoryRange[1]) + ';');
@ -202,16 +206,6 @@ function replaceRequire(code, codeDepth) {
});
}
/**
* 生成commonjs代码
* @param {Object} ast ast树
* @return {string} 生成后的代码
*/
function genCommonJS(ast) {
return escodegen.generate(ast);
}
module.exports = function (code, codeDepth) {
if (codeDepth && codeDepth[codeDepth.length - 1] !== '/') {

View File

@ -3,6 +3,7 @@
* @author mengke01(kekee000@gmail.com)
*/
/* eslint-disable*/
// 测试define函数
@ -11,14 +12,14 @@
test1: 'test1',
test2: 'test2'
});
// 测试 string
module.exports = 'test string';
// 测试commonjs wrapper
@ -28,7 +29,7 @@
test1: 'test1',
test2: 'test2'
};
@ -56,7 +57,7 @@ module.exports ={
};
};
}
// 测试 nodejs兼容写法
@ -65,7 +66,7 @@ if (typeof exports !== 'undefined') {
module.exports = exports = require('xmldom').DOMParser;
}
else {
module.exports = window.DOMParser;
}

View File

@ -3,10 +3,11 @@
* @author mengke01(kekee000@gmail.com)
*/
/* eslint-disable*/
// 测试define函数
define(
function(require) {
function (require) {
return require('common/test').test({
test1: 'test1',
@ -19,7 +20,7 @@ define(
// 测试 string
define(
function(require) {
function (require) {
return 'test string';
}
);
@ -28,7 +29,7 @@ define(
// 测试commonjs wrapper
define('test-module', ['test-module'],
function(require) {
function (require) {
return {
test1: 'test1',
test2: 'test2'
@ -49,7 +50,7 @@ define('test-module', {
// 测试多return
define(
function(require) {
function (require) {
var string = require('common/string');

View File

@ -1,4 +0,0 @@
fonteditor/template/dialog/*
fonteditor/template/export/*
editor/shapes/*
ttf/data/*

View File

@ -124,7 +124,7 @@ define(
var buffer = e.target.result;
var imported = svg2ttf(buffer);
// 设置单个字形名字
if (imported.glyf && imported.glyf.length == 1) {
if (imported.glyf && imported.glyf.length === 1) {
imported.glyf[0].name = fName;
}
fileReader = null;