diff --git a/.fecsignore b/.fecsignore new file mode 100644 index 0000000..919ffd3 --- /dev/null +++ b/.fecsignore @@ -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 diff --git a/src/.fecsrc b/.fecsrc similarity index 100% rename from src/.fecsrc rename to .fecsrc diff --git a/node/amd2module.js b/node/amd2module.js index 5f2b448..39692fc 100644 --- a/node/amd2module.js +++ b/node/amd2module.js @@ -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] !== '/') { diff --git a/node/generated.js b/node/generated.js index 4fcc2aa..29839d1 100644 --- a/node/generated.js +++ b/node/generated.js @@ -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; - + } diff --git a/node/testcase-define.js b/node/testcase-define.js index d5684cd..d5a9d19 100644 --- a/node/testcase-define.js +++ b/node/testcase-define.js @@ -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'); diff --git a/src/.fecsignore b/src/.fecsignore deleted file mode 100644 index 9adc753..0000000 --- a/src/.fecsignore +++ /dev/null @@ -1,4 +0,0 @@ -fonteditor/template/dialog/* -fonteditor/template/export/* -editor/shapes/* -ttf/data/* diff --git a/src/fonteditor/widget/loader.js b/src/fonteditor/widget/loader.js index ab507b3..9c45f33 100644 --- a/src/fonteditor/widget/loader.js +++ b/src/fonteditor/widget/loader.js @@ -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;