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

View File

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

View File

@@ -3,10 +3,11 @@
* @author mengke01(kekee000@gmail.com) * @author mengke01(kekee000@gmail.com)
*/ */
/* eslint-disable*/
// 测试define函数 // 测试define函数
define( define(
function(require) { function (require) {
return require('common/test').test({ return require('common/test').test({
test1: 'test1', test1: 'test1',
@@ -19,7 +20,7 @@ define(
// 测试 string // 测试 string
define( define(
function(require) { function (require) {
return 'test string'; return 'test string';
} }
); );
@@ -28,7 +29,7 @@ define(
// 测试commonjs wrapper // 测试commonjs wrapper
define('test-module', ['test-module'], define('test-module', ['test-module'],
function(require) { function (require) {
return { return {
test1: 'test1', test1: 'test1',
test2: 'test2' test2: 'test2'
@@ -49,7 +50,7 @@ define('test-module', {
// 测试多return // 测试多return
define( define(
function(require) { function (require) {
var string = require('common/string'); 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 buffer = e.target.result;
var imported = svg2ttf(buffer); var imported = svg2ttf(buffer);
// 设置单个字形名字 // 设置单个字形名字
if (imported.glyf && imported.glyf.length == 1) { if (imported.glyf && imported.glyf.length === 1) {
imported.glyf[0].name = fName; imported.glyf[0].name = fName;
} }
fileReader = null; fileReader = null;