From 337fb24a05a5f81b4d6f3a68fcc791a328921aba Mon Sep 17 00:00:00 2001 From: zhaojunxia Date: Thu, 12 May 2022 13:51:52 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90NAPI=E3=80=91=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=89=8D=E7=BC=80static=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhaojunxia --- src/gen/analyze/class.js | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/gen/analyze/class.js b/src/gen/analyze/class.js index 303b6167..62521d03 100644 --- a/src/gen/analyze/class.js +++ b/src/gen/analyze/class.js @@ -18,24 +18,29 @@ const { NumberIncrease } = require("../tools/common"); const { analyzeFunction } = require("./function"); /**interface解析 */ -function analyzeClass(data) {//same as class - let body = re.replaceAll(data, "\n", "").split(";")// # replace(" ", ""). +function analyzeClass(data) { + // # replace(" ", ""). + let body = re.replaceAll(data, "\n", "").split(";") let result = { value: [], function: [] } for (let i in body) { - let t = body[i] - while (t.length > 0 && t[0] == ' ')//去除前面的空格 - t = t.substring(1, t.length) - while (t.length > 0 && t[-1] == ' ')//去除后面的空格 - t = t.substring(0, t.length - 1) - if (t == "") break//如果t为空直接返回 - let tt = re.match(" *([a-zA-Z0-9_]+) *: *([a-zA-Z_0-9<>]+)", t) - if (tt) {//变量 - - let valueName = re.getReg(t, tt.regs[1]) - let valueType = re.getReg(t, tt.regs[2]) + let classBody = body[i] + // 去除前面的空格 + while (classBody.length > 0 && classBody[0] == ' ') { + classBody = classBody.substring(1, classBody.length) + } + // 去除后面的空格 + while (classBody.length > 0 && classBody[-1] == ' ') { + classBody = classBody.substring(0, classBody.length - 1) + } + // 如果t为空直接返回 + if (classBody == "") break + let matchNameAndType = re.match(" *([a-zA-Z0-9_]+) *: *([a-zA-Z_0-9<>]+)", classBody) + if (matchNameAndType) { + let valueName = re.getReg(classBody, matchNameAndType.regs[1]) + let valueType = re.getReg(classBody, matchNameAndType.regs[2]) if (valueType.indexOf("number") >= 0) { valueType = valueType.replace("number", "NUMBER_TYPE_" + NumberIncrease.getAndIncrease()) } @@ -44,10 +49,11 @@ function analyzeClass(data) {//same as class type: valueType }) } - tt = re.match("(static)? *([A-Za-z0-9_]+)\\(([\n a-zA-Z:;=,_0-9?<>{}|]*)\\) *: *([A-Za-z0-9_<>{}:, .]+)", t) - if (tt) {//函数 - let funcDetail = analyzeFunction(re.getReg(t, tt.regs[2]), - re.getReg(t, tt.regs[3]), re.getReg(t, tt.regs[4])) + let rules = "(static)? *([A-Za-z0-9_]+)\\(([\n a-zA-Z:;=,_0-9?<>{}|]*)\\) *: *([A-Za-z0-9_<>{}:, .]+)"; + matchNameAndType = re.match(rules, classBody) + if (matchNameAndType) { + let funcDetail = analyzeFunction(re.getReg(classBody, matchNameAndType.regs[2]), + re.getReg(classBody, matchNameAndType.regs[3]), re.getReg(classBody, matchNameAndType.regs[4])) if (funcDetail != null) result.function.push(funcDetail) } -- Gitee