From d03d2a1e00b79a804693b5bbdd180451b6a76bc9 Mon Sep 17 00:00:00 2001 From: kevinluohuan Date: Thu, 16 May 2019 17:45:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=BB=84=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=A0=87=E7=AD=BE=E4=B8=8A=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/chameleon-linter/bin/cli.js | 2 +- .../checkers/template/index.js | 19 +++++++++++++------ .../config/common-events.json | 3 +++ .../lib/knife/is_common_events.js | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 packages/chameleon-linter/config/common-events.json diff --git a/packages/chameleon-linter/bin/cli.js b/packages/chameleon-linter/bin/cli.js index 37ac4bd5..2fefd3bd 100755 --- a/packages/chameleon-linter/bin/cli.js +++ b/packages/chameleon-linter/bin/cli.js @@ -1,5 +1,5 @@ #!/usr/bin/env node - +// --inspect-brk const program = require('commander'); const packageJson = require('../package.json'); const main = require('../index'); diff --git a/packages/chameleon-linter/checkers/template/index.js b/packages/chameleon-linter/checkers/template/index.js index b6f3bd48..eaa1f116 100644 --- a/packages/chameleon-linter/checkers/template/index.js +++ b/packages/chameleon-linter/checkers/template/index.js @@ -1,7 +1,7 @@ const jsAstParser = require('./lib/js-ast-parser'); const templateAstParser = require('./lib/template-ast-parser'); const jsonAstParser = require('./lib/json-ast-parser'); - +const commonEvents = require('../../config/common-events.json'); class TemplateChecker { @@ -49,10 +49,17 @@ class TemplateChecker { if (usingComponents[compName] && usingComponents[compName].isCml) { let { props, events } = component[compName]; let { props: usingProps, events: usingEvents } = usingComponents[compName]; - usingProps = usingProps.map((prop) => prop.name).join('|'); - usingEvents = usingEvents.map((event) => event.name).join('|'); - - props.filter((prop) => usingProps.indexOf(prop.name) === -1).forEach((prop) => { + usingProps = usingProps + .map((prop) => prop.name) + .join('|'); + usingEvents = usingEvents + .map((event) => event.name) + .concat(commonEvents.events) + .join('|'); + usingProps = `|${usingProps}|`; + usingEvents = `|${usingEvents}|`; + debugger + props.filter((prop) => usingProps.indexOf('|' + prop.name + '|') === -1).forEach((prop) => { issues.push({ line: prop.pos[0], column: prop.pos[1], @@ -61,7 +68,7 @@ class TemplateChecker { }); }); - events.filter((event) => usingEvents.indexOf(event.name) === -1).forEach((event) => { + events.filter((event) => usingEvents.indexOf('|' + event.name + '|') === -1).forEach((event) => { issues.push({ line: event.pos[0], column: event.pos[1], diff --git a/packages/chameleon-linter/config/common-events.json b/packages/chameleon-linter/config/common-events.json new file mode 100644 index 00000000..7f8e8ccd --- /dev/null +++ b/packages/chameleon-linter/config/common-events.json @@ -0,0 +1,3 @@ +{ + "events": ["tap", "click", "touchstart", "touchmove", "touchend"] +} \ No newline at end of file diff --git a/packages/cml-htmllinter/lib/knife/is_common_events.js b/packages/cml-htmllinter/lib/knife/is_common_events.js index 89ec9b4b..a5085e5e 100644 --- a/packages/cml-htmllinter/lib/knife/is_common_events.js +++ b/packages/cml-htmllinter/lib/knife/is_common_events.js @@ -1,4 +1,4 @@ -const commonEvents = ['tap', 'touchstart', 'touchmove', 'touchend']; +const commonEvents = ['tap', 'click', 'touchstart', 'touchmove', 'touchend']; module.exports.isCommonEvent = function(eventName) { return ~commonEvents.indexOf(eventName); -- GitLab