From 62e5403be7d6235517b26dc0d50a59b8dfd190cd Mon Sep 17 00:00:00 2001 From: educoder_weapp Date: Wed, 4 Mar 2020 14:10:12 +0800 Subject: [PATCH] =?UTF-8?q?Add=20=E8=AF=BE=E5=A0=82-=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * A 课堂-普通作业模块 * A 页面不存在时进入主页 * A referrerInfo 分析 * A 主页课堂菜单操作 * A error-page组件错误处理界面 * U 加入课堂对话框功能升级 * U 课堂页面错误处理 * U 课程邀请界面改进,增加已停用时的图标 * U 改变小程序码生成接口为getWXACodeUnlimited * F 试卷题目富文本显示异常 * D 隐藏发现页入口 --- cloudfunctions/login/index.js | 16 +- cloudfunctions/openapi/config.json | 1 + cloudfunctions/openapi/index.js | 25 +- miniprogram/.gitignore | 3 - miniprogram/account/pages/about/about.js | 12 +- miniprogram/account/pages/about/about.json | 2 +- miniprogram/account/pages/about/about.wxml | 2 +- miniprogram/account/pages/about/about.wxss | 4 + .../account/pages/agreement/agreement.js | 13 + .../account/pages/agreement/agreement.json | 5 + .../account/pages/agreement/agreement.wxml | 1 + .../account/pages/agreement/agreement.wxss | 4 + miniprogram/app.js | 31 +- miniprogram/app.json | 48 ++- miniprogram/app.wxss | 12 +- miniprogram/avatar/.gitignore | 1 - .../avatar/we-cropper/dist/we-cropper.min.js | 6 + .../avatar/we-cropper/dist/we-cropper.wxml | 17 + .../challenge/pages/challenge/challenge.js | 66 +++ .../challenge/pages/challenge/challenge.json | 3 + .../challenge/pages/challenge/challenge.wxml | 2 + .../challenge/pages/challenge/challenge.wxss | 1 + .../pages/common-homework/common-homework.js | 183 +++++++++ .../common-homework/common-homework.json | 4 + .../common-homework/common-homework.wxml | 20 + .../common-homework/common-homework.wxss | 40 ++ .../components/course-item/course-item.js | 121 +++++- .../components/course-item/course-item.wxml | 11 +- .../components/course-item/course-item.wxss | 21 +- miniprogram/components/course-item/more.png | Bin 0 -> 457 bytes .../components/error-page/error-page.js | 43 +- .../components/error-page/error-page.wxml | 10 +- .../components/error-page/error-page.wxss | 33 +- .../modal/join-course/join-course.js | 43 +- .../modal/join-course/join-course.wxml | 12 +- .../modal/join-course/join-course.wxss | 20 +- miniprogram/components/nav-bar/nav-bar.wxml | 4 +- miniprogram/components/nav-bar/nav-bar.wxss | 24 +- miniprogram/components/rich-md/rich-md.js | 41 +- miniprogram/components/rich-md/rich-md.wxml | 7 +- .../components/tiding-item/tiding-item.js | 16 + .../tiding-item/tiding-item.json} | 0 .../components/tiding-item/tiding-item.wxml | 7 + .../components/tiding-item/tiding-item.wxss | 22 + miniprogram/config.js | 17 +- .../components/attachment/attachment.wxml | 17 - .../common-homework-item.js | 11 +- .../common-homework-item.wxml | 8 +- .../common-homework-item.wxss | 6 +- .../common-homework/common-homework.js | 22 - .../common-homework/common-homework.wxml | 2 - .../common-homework/common-homework.wxss | 1 - .../course/components/file-item/file-item.js | 34 ++ .../file-item.json} | 0 .../components/file-item/file-item.wxml | 4 + .../components/file-item/file-item.wxss | 11 + miniprogram/course/images/move-right.png | Bin 0 -> 1742 bytes .../attachment/attachment.js | 27 +- .../course/modules/attachment/attachment.json | 6 + .../course/modules/attachment/attachment.wxml | 14 + .../attachment/attachment.wxss | 21 +- .../common-homework/common-homework.js | 45 +++ .../common-homework/common-homework.json | 7 + .../common-homework/common-homework.wxml | 8 + .../common-homework/common-homework.wxss | 3 + .../exercise/exercise.js | 2 +- .../exercise/exercise.json | 0 .../exercise/exercise.wxml | 4 +- .../exercise/exercise.wxss | 3 +- miniprogram/course/pages/course/course.js | 62 ++- miniprogram/course/pages/course/course.json | 7 +- miniprogram/course/pages/course/course.wxml | 11 +- miniprogram/course/pages/course/course.wxss | 5 +- .../pages/course_invite/course_invite.js | 74 ++-- .../pages/course_invite/course_invite.json | 3 +- .../pages/course_invite/course_invite.wxml | 8 +- .../pages/course_invite/course_invite.wxss | 13 +- .../choice-question/choice-question.js | 47 ++- .../choice-question/choice-question.wxml | 48 +-- .../choice-question/choice-question.wxss | 38 +- .../components/main-question/main-question.js | 7 +- .../main-question/main-question.json | 4 +- .../main-question/main-question.wxml | 10 +- .../main-question/main-question.wxss | 11 +- .../components/null-question/null-question.js | 17 +- .../null-question/null-question.json | 4 +- .../null-question/null-question.wxml | 28 +- .../null-question/null-question.wxss | 20 +- .../exercise/components/question-common.wxss | 14 + .../shixun-question/shixun-question.js | 16 + .../shixun-question/shixun-question.json | 6 + .../shixun-question/shixun-question.wxml | 5 + .../shixun-question/shixun-question.wxss | 1 + .../exercise/pages/exercise/exercise.js | 93 +---- .../exercise/pages/exercise/exercise.json | 6 +- .../exercise/pages/exercise/exercise.wxml | 23 +- .../exercise/pages/exercise/exercise.wxss | 17 +- .../exercise_setting/exercise_setting.js | 41 +- miniprogram/images/tab_tiding_default.png | Bin 0 -> 1272 bytes miniprogram/images/tab_tiding_pressed.png | Bin 0 -> 908 bytes miniprogram/js/apiConfig.js | 172 ++++++++ miniprogram/js/client.js | 1 + miniprogram/js/edu.js | 91 +++-- miniprogram/js/requests.js | 11 +- miniprogram/pages/courses/courses.js | 5 - miniprogram/pages/findmore/findmore.json | 3 +- miniprogram/pages/findmore/findmore.wxml | 5 +- miniprogram/pages/my/my.js | 25 +- miniprogram/pages/my/my.json | 2 +- miniprogram/pages/my/my.wxml | 4 +- miniprogram/pages/my_courses/my_courses.js | 35 +- miniprogram/pages/my_courses/my_courses.wxml | 6 +- miniprogram/pages/my_courses/my_courses.wxss | 1 + miniprogram/pages/tidings/tidings.js | 27 ++ miniprogram/pages/tidings/tidings.json | 6 + miniprogram/pages/tidings/tidings.wxml | 3 + miniprogram/pages/tidings/tidings.wxss | 3 + miniprogram/path/pages/path/path.js | 66 +++ miniprogram/path/pages/path/path.json | 3 + miniprogram/path/pages/path/path.wxml | 2 + miniprogram/path/pages/path/path.wxss | 1 + .../challenge-item/challenge-item.js | 23 ++ .../challenge-item/challenge-item.json | 4 + .../challenge-item/challenge-item.wxml | 2 + .../challenge-item/challenge-item.wxss | 1 + miniprogram/shixun/pages/shixun/shixun.js | 26 ++ miniprogram/shixun/pages/shixun/shixun.json | 3 + miniprogram/shixun/pages/shixun/shixun.wxml | 2 + miniprogram/shixun/pages/shixun/shixun.wxss | 1 + miniprogram/towxml/config.js | 126 ++++++ miniprogram/towxml/decode.js | 26 ++ miniprogram/towxml/decode.json | 9 + miniprogram/towxml/decode.wxml | 1 + miniprogram/towxml/decode.wxss | 0 miniprogram/towxml/img/img.js | 87 ++++ miniprogram/towxml/img/img.json | 3 + miniprogram/towxml/img/img.wxml | 1 + miniprogram/towxml/img/img.wxss | 0 miniprogram/towxml/index.js | 19 + miniprogram/towxml/latex/latex.js | 48 +++ miniprogram/towxml/latex/latex.json | 5 + miniprogram/towxml/latex/latex.wxml | 1 + miniprogram/towxml/latex/latex.wxss | 0 .../towxml/parse/highlight/highlight.js | 1 + miniprogram/towxml/parse/highlight/index.js | 6 + .../towxml/parse/highlight/languages/css.js | 1 + .../towxml/parse/highlight/languages/java.js | 1 + .../parse/highlight/languages/javascript.js | 1 + .../parse/highlight/languages/python.js | 1 + .../towxml/parse/highlight/style/github.wxss | 77 ++++ .../towxml/parse/highlight/style/monokai.wxss | 59 +++ miniprogram/towxml/parse/index.js | 107 +++++ miniprogram/towxml/parse/markdown/index.js | 53 +++ miniprogram/towxml/parse/markdown/markdown.js | 4 + .../towxml/parse/markdown/plugins/ins.js | 1 + .../towxml/parse/markdown/plugins/latex.js | 158 ++++++++ .../towxml/parse/markdown/plugins/sub.js | 1 + .../towxml/parse/markdown/plugins/sup.js | 1 + miniprogram/towxml/parse/parse2/Parser.js | 2 + miniprogram/towxml/parse/parse2/Tokenizer.js | 2 + .../towxml/parse/parse2/domhandler/index.js | 2 + .../towxml/parse/parse2/domhandler/node.js | 2 + .../towxml/parse/parse2/entities/decode.js | 2 + .../parse/parse2/entities/decode_codepoint.js | 2 + .../towxml/parse/parse2/entities/encode.js | 2 + .../towxml/parse/parse2/entities/index.js | 2 + .../parse/parse2/entities/maps/decode.js | 2 + .../parse/parse2/entities/maps/entities.js | 2 + .../parse/parse2/entities/maps/legacy.js | 2 + .../towxml/parse/parse2/entities/maps/xml.js | 2 + miniprogram/towxml/parse/parse2/index.js | 2 + miniprogram/towxml/style/main.wxss | 377 ++++++++++++++++++ miniprogram/towxml/style/theme/dark.wxss | 73 ++++ miniprogram/towxml/style/theme/light.wxss | 63 +++ miniprogram/towxml/table/table.js | 11 + miniprogram/towxml/table/table.json | 6 + miniprogram/towxml/table/table.wxml | 22 + miniprogram/towxml/table/table.wxss | 0 miniprogram/towxml/towxml.js | 16 + miniprogram/towxml/towxml.json | 6 + miniprogram/towxml/towxml.wxml | 5 + miniprogram/towxml/towxml.wxss | 8 + project.config.json | 42 +- 183 files changed, 3235 insertions(+), 621 deletions(-) create mode 100644 miniprogram/account/pages/agreement/agreement.js create mode 100644 miniprogram/account/pages/agreement/agreement.json create mode 100644 miniprogram/account/pages/agreement/agreement.wxml create mode 100644 miniprogram/account/pages/agreement/agreement.wxss create mode 100644 miniprogram/avatar/we-cropper/dist/we-cropper.min.js create mode 100644 miniprogram/avatar/we-cropper/dist/we-cropper.wxml create mode 100644 miniprogram/challenge/pages/challenge/challenge.js create mode 100644 miniprogram/challenge/pages/challenge/challenge.json create mode 100644 miniprogram/challenge/pages/challenge/challenge.wxml create mode 100644 miniprogram/challenge/pages/challenge/challenge.wxss create mode 100644 miniprogram/common-homework/pages/common-homework/common-homework.js create mode 100644 miniprogram/common-homework/pages/common-homework/common-homework.json create mode 100644 miniprogram/common-homework/pages/common-homework/common-homework.wxml create mode 100644 miniprogram/common-homework/pages/common-homework/common-homework.wxss create mode 100644 miniprogram/components/course-item/more.png create mode 100644 miniprogram/components/tiding-item/tiding-item.js rename miniprogram/{course/components/attachment/attachment.json => components/tiding-item/tiding-item.json} (100%) create mode 100644 miniprogram/components/tiding-item/tiding-item.wxml create mode 100644 miniprogram/components/tiding-item/tiding-item.wxss delete mode 100644 miniprogram/course/components/attachment/attachment.wxml delete mode 100644 miniprogram/course/components/common-homework/common-homework.js delete mode 100644 miniprogram/course/components/common-homework/common-homework.wxml delete mode 100644 miniprogram/course/components/common-homework/common-homework.wxss create mode 100644 miniprogram/course/components/file-item/file-item.js rename miniprogram/course/components/{common-homework/common-homework.json => file-item/file-item.json} (100%) create mode 100644 miniprogram/course/components/file-item/file-item.wxml create mode 100644 miniprogram/course/components/file-item/file-item.wxss create mode 100644 miniprogram/course/images/move-right.png rename miniprogram/course/{components => modules}/attachment/attachment.js (60%) create mode 100644 miniprogram/course/modules/attachment/attachment.json create mode 100644 miniprogram/course/modules/attachment/attachment.wxml rename miniprogram/course/{components => modules}/attachment/attachment.wxss (60%) create mode 100644 miniprogram/course/modules/common-homework/common-homework.js create mode 100644 miniprogram/course/modules/common-homework/common-homework.json create mode 100644 miniprogram/course/modules/common-homework/common-homework.wxml create mode 100644 miniprogram/course/modules/common-homework/common-homework.wxss rename miniprogram/course/{components => modules}/exercise/exercise.js (99%) rename miniprogram/course/{components => modules}/exercise/exercise.json (100%) rename miniprogram/course/{components => modules}/exercise/exercise.wxml (98%) rename miniprogram/course/{components => modules}/exercise/exercise.wxss (97%) create mode 100644 miniprogram/exercise/components/question-common.wxss create mode 100644 miniprogram/exercise/components/shixun-question/shixun-question.js create mode 100644 miniprogram/exercise/components/shixun-question/shixun-question.json create mode 100644 miniprogram/exercise/components/shixun-question/shixun-question.wxml create mode 100644 miniprogram/exercise/components/shixun-question/shixun-question.wxss create mode 100644 miniprogram/images/tab_tiding_default.png create mode 100644 miniprogram/images/tab_tiding_pressed.png create mode 100644 miniprogram/js/apiConfig.js create mode 100644 miniprogram/pages/tidings/tidings.js create mode 100644 miniprogram/pages/tidings/tidings.json create mode 100644 miniprogram/pages/tidings/tidings.wxml create mode 100644 miniprogram/pages/tidings/tidings.wxss create mode 100644 miniprogram/path/pages/path/path.js create mode 100644 miniprogram/path/pages/path/path.json create mode 100644 miniprogram/path/pages/path/path.wxml create mode 100644 miniprogram/path/pages/path/path.wxss create mode 100644 miniprogram/shixun/components/challenge-item/challenge-item.js create mode 100644 miniprogram/shixun/components/challenge-item/challenge-item.json create mode 100644 miniprogram/shixun/components/challenge-item/challenge-item.wxml create mode 100644 miniprogram/shixun/components/challenge-item/challenge-item.wxss create mode 100644 miniprogram/shixun/pages/shixun/shixun.js create mode 100644 miniprogram/shixun/pages/shixun/shixun.json create mode 100644 miniprogram/shixun/pages/shixun/shixun.wxml create mode 100644 miniprogram/shixun/pages/shixun/shixun.wxss create mode 100644 miniprogram/towxml/config.js create mode 100644 miniprogram/towxml/decode.js create mode 100644 miniprogram/towxml/decode.json create mode 100644 miniprogram/towxml/decode.wxml create mode 100644 miniprogram/towxml/decode.wxss create mode 100644 miniprogram/towxml/img/img.js create mode 100644 miniprogram/towxml/img/img.json create mode 100644 miniprogram/towxml/img/img.wxml create mode 100644 miniprogram/towxml/img/img.wxss create mode 100644 miniprogram/towxml/index.js create mode 100644 miniprogram/towxml/latex/latex.js create mode 100644 miniprogram/towxml/latex/latex.json create mode 100644 miniprogram/towxml/latex/latex.wxml create mode 100644 miniprogram/towxml/latex/latex.wxss create mode 100644 miniprogram/towxml/parse/highlight/highlight.js create mode 100644 miniprogram/towxml/parse/highlight/index.js create mode 100644 miniprogram/towxml/parse/highlight/languages/css.js create mode 100644 miniprogram/towxml/parse/highlight/languages/java.js create mode 100644 miniprogram/towxml/parse/highlight/languages/javascript.js create mode 100644 miniprogram/towxml/parse/highlight/languages/python.js create mode 100644 miniprogram/towxml/parse/highlight/style/github.wxss create mode 100644 miniprogram/towxml/parse/highlight/style/monokai.wxss create mode 100644 miniprogram/towxml/parse/index.js create mode 100644 miniprogram/towxml/parse/markdown/index.js create mode 100644 miniprogram/towxml/parse/markdown/markdown.js create mode 100644 miniprogram/towxml/parse/markdown/plugins/ins.js create mode 100644 miniprogram/towxml/parse/markdown/plugins/latex.js create mode 100644 miniprogram/towxml/parse/markdown/plugins/sub.js create mode 100644 miniprogram/towxml/parse/markdown/plugins/sup.js create mode 100644 miniprogram/towxml/parse/parse2/Parser.js create mode 100644 miniprogram/towxml/parse/parse2/Tokenizer.js create mode 100644 miniprogram/towxml/parse/parse2/domhandler/index.js create mode 100644 miniprogram/towxml/parse/parse2/domhandler/node.js create mode 100644 miniprogram/towxml/parse/parse2/entities/decode.js create mode 100644 miniprogram/towxml/parse/parse2/entities/decode_codepoint.js create mode 100644 miniprogram/towxml/parse/parse2/entities/encode.js create mode 100644 miniprogram/towxml/parse/parse2/entities/index.js create mode 100644 miniprogram/towxml/parse/parse2/entities/maps/decode.js create mode 100644 miniprogram/towxml/parse/parse2/entities/maps/entities.js create mode 100644 miniprogram/towxml/parse/parse2/entities/maps/legacy.js create mode 100644 miniprogram/towxml/parse/parse2/entities/maps/xml.js create mode 100644 miniprogram/towxml/parse/parse2/index.js create mode 100644 miniprogram/towxml/style/main.wxss create mode 100644 miniprogram/towxml/style/theme/dark.wxss create mode 100644 miniprogram/towxml/style/theme/light.wxss create mode 100644 miniprogram/towxml/table/table.js create mode 100644 miniprogram/towxml/table/table.json create mode 100644 miniprogram/towxml/table/table.wxml create mode 100644 miniprogram/towxml/table/table.wxss create mode 100644 miniprogram/towxml/towxml.js create mode 100644 miniprogram/towxml/towxml.json create mode 100644 miniprogram/towxml/towxml.wxml create mode 100644 miniprogram/towxml/towxml.wxss diff --git a/cloudfunctions/login/index.js b/cloudfunctions/login/index.js index 3c524f3..34061c2 100644 --- a/cloudfunctions/login/index.js +++ b/cloudfunctions/login/index.js @@ -1,28 +1,16 @@ -// 云函数模板 -// 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署” const cloud = require('wx-server-sdk') -// 初始化 cloud cloud.init({ - // API 调用都保持和云函数当前所在环境一致 + env: cloud.DYNAMIC_CURRENT_ENV }) -/** - * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端 - * - * event 参数包含小程序端调用传入的 data - * - */ + exports.main = (event, context) => { console.log(event) console.log(context) - // 可执行其他自定义逻辑 - // console.log 的内容可以在云开发云函数调用日志查看 - - // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息 const wxContext = cloud.getWXContext() return { diff --git a/cloudfunctions/openapi/config.json b/cloudfunctions/openapi/config.json index 0074569..b6090b9 100644 --- a/cloudfunctions/openapi/config.json +++ b/cloudfunctions/openapi/config.json @@ -2,6 +2,7 @@ "permissions": { "openapi": [ "wxacode.get", + "wxacode.getUnlimited", "subscribeMessage.send", "subscribeMessage.addTemplate", "templateMessage.send", diff --git a/cloudfunctions/openapi/index.js b/cloudfunctions/openapi/index.js index 6d38b11..8e5659c 100644 --- a/cloudfunctions/openapi/index.js +++ b/cloudfunctions/openapi/index.js @@ -1,7 +1,7 @@ // 云函数入口文件 const cloud = require('wx-server-sdk') -cloud.init() +cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV}) // 云函数入口函数 exports.main = async (event, context) => { @@ -13,6 +13,9 @@ exports.main = async (event, context) => { case 'sendSubscribeMessage': { return sendSubscribeMessage(event) } + case "getWXACodeUnlimited":{ + return getWXACodeUnlimited(event) + } case 'getWXACode': { return getWXACode(event) } @@ -54,6 +57,26 @@ async function sendSubscribeMessage(event) { return sendResult } +async function getWXACodeUnlimited(event){ + let {scene, page} = event; + const wxacodeResult = await cloud.openapi.wxacode.getUnlimited({ + scene, page + }) + const fileExtensionMatches = wxacodeResult.contentType.match(/\/([^\/]+)/) + const fileExtension = (fileExtensionMatches && fileExtensionMatches[1]) || 'jpg' + + const uploadResult = await cloud.uploadFile({ + cloudPath: `images/wxacode/${(page+"?"+scene).replace(/[\/?&]/g, "_")}.${fileExtension}`, + fileContent: wxacodeResult.buffer, + }) + + if (!uploadResult.fileID) { + throw new Error(`upload failed with empty fileID and storage server status code ${uploadResult.statusCode}`) + } + + return uploadResult.fileID +} + async function getWXACode(event) { let {path} = event; diff --git a/miniprogram/.gitignore b/miniprogram/.gitignore index 275e7b9..36c44c1 100644 --- a/miniprogram/.gitignore +++ b/miniprogram/.gitignore @@ -1,6 +1,3 @@ -js/apiConfig.js -towxml/ -wemark/ # Windows [Dd]esktop.ini diff --git a/miniprogram/account/pages/about/about.js b/miniprogram/account/pages/about/about.js index 0029f94..6a44d5d 100644 --- a/miniprogram/account/pages/about/about.js +++ b/miniprogram/account/pages/about/about.js @@ -1,19 +1,13 @@ -if (!global.towxml) - global.towxml = require('../../../towxml/index'); Page({ - md: '# 服务协议\n\n尊敬的用户,您好!\n欢迎使用本平台,在您使用本平台前,请您认真阅读并遵守《服务协议》(以下简称”本协议”),请您务必审慎阅读、充分理解协议的各条款内容。\n当您在注册过程中点击查看”看过并同意本服务协议”,按照注册流程成功注册为平台的用户即表示您已充分阅读、理解并完全接受本协议中的全部条款。您承诺接受并遵守本协议的约定,届时您不应以未阅读本协议的内容等理由,主张本协议无效或本协议中的某些条款无效,或要求撤销本协议。\n\n## 本平台权利和义务\n1. 尊重用户隐私:尊重用户隐私,保障用户隐私安全是平台的一项基本政策;\n2. 管理平台用户:平台依据国家法律、地方法律和国际法律等的标准以及本行业的规则来管理平台注册用户;\n3. 处理用户反馈:平台的相关人员会及时处理用户反馈的问题并给予及时回复。\n## 用户权利和义务\n1. 用户在使用平台的过程中,必须遵守如下原则:\n2. 遵守中国的有关法律和法规;\n3. 使用网络服务不作非法用途;\n4. 不干扰和混乱网络服务;\n5. 遵守所有使用网络服务的网络协议、规定、程序和惯例;\n6. 不传输任何非法的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的,淫秽等信息资料;\n7. 不传输任何教唆他人构成犯罪行为的资料;\n8. 用户不得故意或者过失损害平台合法权利和利益。及时回复。\n## 关于责任\n鉴于网络服务的特殊性,本平台有权在事先通知的情况下,变更、中断、升级部分网络服务。本平台不担保网络服务不会中断,但承诺在用户可承受的时间内快速恢复服务,同时确保用户数据的安全性和可靠性。\n\n## 免责条款\n鉴于互联网服务的特点,本平台对用户自行上传的资料不承担任何法律责任,希望各网友对平台提供的互动服务中的内容进行监督,若发现存在侵犯任何第三人著作权等合法权益的内容,请及时告知,我们将严格按照《信息网络传播权保护条例》中的规定予以删除。\n\n1. 本平台属于非赢利性平台,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请来信告知:zhongjin@educoder.net\n2. 本平台转载文章仅为传播更多信息之目的,凡在本平台出现的信息,均仅供参考。本平台将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。\n3. 任何透过本平台网页而链接及得到的资讯、产品及服务,本平台概不负责,亦不负任何法律责任。\n4. 本平台所刊发、转载的文章,其版权均归原作者所有,如其他媒体、平台或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。\n## 侵权投诉\nEducoder平台是一个接受外来投稿的平台,部分图片和文字来自互联网或原作者自行编辑。投稿到Educoder平台的文章,默认作者授权其全部图文内容在Educoder平台、在其微信公众号及微博帐号进行发布,Educoder平台对这一部分内容不进行预先审查。\n如您发现平台上文章或图片涉嫌侵犯您的权利请您将所涉及的文章 URL 和侵权理由以邮件形式发送到邮箱(zhongjin@educoder.net),我们将在核实情况后依照《中华人民共和国侵权责任法》及其司法解释对内容进行屏蔽、删除和通知原作者。\n\n## 服务条款的修改\n本平台保留在必要时对本协议修改的权利,一旦发生变动,这些条款可由平台项目组及时更新,且毋须另行通知,修改后的条款一旦在网页上公布即有效代替原来的服务条款。您可随时查阅最新版服务条款。\n\n**本协议最终解释权归本平台所有**。' -, + data: { - article: {} + md: '# 关于\n\n## 简介\n\nEducoder是一个面向计算机类的互联网IT教育和实战平台,提供企业级工程实训,以实现工程化专业教学的自动化和智能化。高校和企业人员可以在此开展计算机实践性教学活动,将传统的知识传授和时兴的工程实战一体化。\n\n本平台核心技术源自国家863计划和重点研发计划科技成果。国防科技大学、北京大学、北京航空航天大学、中科院软件所等单位合作研制,曾获2015国家技术发明奖、2013教育部科技成果奖等重要奖项。目前,EduCoder已被选为中国计算机协会长沙分部教育实训指定平台、全军大学计算机教改支撑平台。\n\n##优势\n\n- 随时随地动手实训\n\n覆盖不同专业的IT实验和实训,每周更新,无需配置本机实验环境,随时随地开启企业级真实实训。\n\n- 敏捷化工程人才培养\n\n通过伴随式实时指导和辅助,将专业知识和动手实践结合起来,真正做到即学即用,让学生突破纸上谈兵的局限,提高就业竞争力。\n\n- 循序渐进的实训路径\n\n平台提供涵盖基础入门、案例实践和创新应用的完整实训项目体系,通过由浅入深的实训路径,帮助学生快速提升实战能力。\n\n- 自动化工程能力评测\n\n自动评测实训任务,支持技能统计,提供教学活动分析报告,减轻教师和助教的辅导压力,免去作业发布和批改的困扰,实时了解学生学习情况,全面提升教师施教效率和水平。' }, onLoad: function (options) { - let article = global.towxml(this.md, 'markdown') - this.setData({ - article - }); + }, onShareAppMessage: function () { diff --git a/miniprogram/account/pages/about/about.json b/miniprogram/account/pages/about/about.json index 1184b39..dc69edc 100644 --- a/miniprogram/account/pages/about/about.json +++ b/miniprogram/account/pages/about/about.json @@ -1,5 +1,5 @@ { "usingComponents": { - "towxml": "/towxml/towxml" + "rich-md": "/components/rich-md/rich-md" } } \ No newline at end of file diff --git a/miniprogram/account/pages/about/about.wxml b/miniprogram/account/pages/about/about.wxml index 0494fa5..adc152c 100644 --- a/miniprogram/account/pages/about/about.wxml +++ b/miniprogram/account/pages/about/about.wxml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/miniprogram/account/pages/about/about.wxss b/miniprogram/account/pages/about/about.wxss index e69de29..7524be8 100644 --- a/miniprogram/account/pages/about/about.wxss +++ b/miniprogram/account/pages/about/about.wxss @@ -0,0 +1,4 @@ +.body{ + padding-bottom: 12px; + background: white; +} \ No newline at end of file diff --git a/miniprogram/account/pages/agreement/agreement.js b/miniprogram/account/pages/agreement/agreement.js new file mode 100644 index 0000000..acbced4 --- /dev/null +++ b/miniprogram/account/pages/agreement/agreement.js @@ -0,0 +1,13 @@ + +Page({ + data: { + md: '# 服务协议\n\n尊敬的用户,您好!\n欢迎使用本平台,在您使用本平台前,请您认真阅读并遵守《服务协议》(以下简称”本协议”),请您务必审慎阅读、充分理解协议的各条款内容。\n当您在注册过程中点击查看”看过并同意本服务协议”,按照注册流程成功注册为平台的用户即表示您已充分阅读、理解并完全接受本协议中的全部条款。您承诺接受并遵守本协议的约定,届时您不应以未阅读本协议的内容等理由,主张本协议无效或本协议中的某些条款无效,或要求撤销本协议。\n\n## 本平台权利和义务\n1. 尊重用户隐私:尊重用户隐私,保障用户隐私安全是平台的一项基本政策;\n2. 管理平台用户:平台依据国家法律、地方法律和国际法律等的标准以及本行业的规则来管理平台注册用户;\n3. 处理用户反馈:平台的相关人员会及时处理用户反馈的问题并给予及时回复。\n## 用户权利和义务\n1. 用户在使用平台的过程中,必须遵守如下原则:\n2. 遵守中国的有关法律和法规;\n3. 使用网络服务不作非法用途;\n4. 不干扰和混乱网络服务;\n5. 遵守所有使用网络服务的网络协议、规定、程序和惯例;\n6. 不传输任何非法的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的,淫秽等信息资料;\n7. 不传输任何教唆他人构成犯罪行为的资料;\n8. 用户不得故意或者过失损害平台合法权利和利益。及时回复。\n## 关于责任\n鉴于网络服务的特殊性,本平台有权在事先通知的情况下,变更、中断、升级部分网络服务。本平台不担保网络服务不会中断,但承诺在用户可承受的时间内快速恢复服务,同时确保用户数据的安全性和可靠性。\n\n## 免责条款\n鉴于互联网服务的特点,本平台对用户自行上传的资料不承担任何法律责任,希望各网友对平台提供的互动服务中的内容进行监督,若发现存在侵犯任何第三人著作权等合法权益的内容,请及时告知,我们将严格按照《信息网络传播权保护条例》中的规定予以删除。\n\n1. 本平台属于非赢利性平台,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请来信告知:zhongjin@educoder.net\n2. 本平台转载文章仅为传播更多信息之目的,凡在本平台出现的信息,均仅供参考。本平台将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。\n3. 任何透过本平台网页而链接及得到的资讯、产品及服务,本平台概不负责,亦不负任何法律责任。\n4. 本平台所刊发、转载的文章,其版权均归原作者所有,如其他媒体、平台或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。\n## 侵权投诉\nEducoder平台是一个接受外来投稿的平台,部分图片和文字来自互联网或原作者自行编辑。投稿到Educoder平台的文章,默认作者授权其全部图文内容在Educoder平台、在其微信公众号及微博帐号进行发布,Educoder平台对这一部分内容不进行预先审查。\n如您发现平台上文章或图片涉嫌侵犯您的权利请您将所涉及的文章 URL 和侵权理由以邮件形式发送到邮箱(zhongjin@educoder.net),我们将在核实情况后依照《中华人民共和国侵权责任法》及其司法解释对内容进行屏蔽、删除和通知原作者。\n\n## 服务条款的修改\n本平台保留在必要时对本协议修改的权利,一旦发生变动,这些条款可由平台项目组及时更新,且毋须另行通知,修改后的条款一旦在网页上公布即有效代替原来的服务条款。您可随时查阅最新版服务条款。\n\n**本协议最终解释权归本平台所有**。' + }, + + onLoad: function (options) { + + }, + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/account/pages/agreement/agreement.json b/miniprogram/account/pages/agreement/agreement.json new file mode 100644 index 0000000..dc69edc --- /dev/null +++ b/miniprogram/account/pages/agreement/agreement.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "rich-md": "/components/rich-md/rich-md" + } +} \ No newline at end of file diff --git a/miniprogram/account/pages/agreement/agreement.wxml b/miniprogram/account/pages/agreement/agreement.wxml new file mode 100644 index 0000000..adc152c --- /dev/null +++ b/miniprogram/account/pages/agreement/agreement.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/miniprogram/account/pages/agreement/agreement.wxss b/miniprogram/account/pages/agreement/agreement.wxss new file mode 100644 index 0000000..7524be8 --- /dev/null +++ b/miniprogram/account/pages/agreement/agreement.wxss @@ -0,0 +1,4 @@ +.body{ + padding-bottom: 12px; + background: white; +} \ No newline at end of file diff --git a/miniprogram/app.js b/miniprogram/app.js index a0b401c..7a73efe 100644 --- a/miniprogram/app.js +++ b/miniprogram/app.js @@ -16,8 +16,31 @@ App({ callApi(options){return client.callApi(options)}, user(){ return client.user}, syncUser(options){return client.syncUser(options)}, - onLaunch: function () { - + onLaunch: function (options) { + console.log("applaunch",options); + if(Object.keys(options.referrerInfo).length>0){ + let { appId, extraData } = options.referrerInfo + const db = wx.cloud.database(); + db.collection("referrer_info") + .add({ + data:{ + appId, + extraData, + createdAt: db.serverDate() + } + }) + } + }, + onShow(){ + this.api("users.unread_message_info")().then(res=>{ + if(res.unread_message_count) + wx.setTabBarBadge({index:1,text:res.unread_message_count.toString()}); + else if(res.unread_tiding_count) + wx.showTabBarRedDot({index:1}) + }) + }, + onPageNotFound(res) { + this.redirectTo({url:"{my_courses}"}); }, showError(e){ wx.showToast({ @@ -30,11 +53,11 @@ App({ title: res.message, }) }, - getPageUrl(url){ + getPageUrl(url,root="/"){ return url.replace(/{(.*)}/, function (match, name) { for (var u of __wxConfig.pages) { if (u.endsWith("/"+name)) - return "/" + u; + return root + u; } return match; }); diff --git a/miniprogram/app.json b/miniprogram/app.json index 4d84ee7..d6713f3 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -3,7 +3,9 @@ "pages/my_courses/my_courses", "pages/findmore/findmore", "pages/courses/courses", - "pages/my/my" + "pages/my/my", + "pages/tidings/tidings", + "path/pages/path/path" ], "subpackages": [ { @@ -12,6 +14,7 @@ "pages/login/login", "pages/reset_password/reset_password", "pages/register/register", + "pages/agreement/agreement", "pages/about/about" ] }, @@ -30,13 +33,31 @@ ] }, { - "root":"exercise", - "pages":[ + "root": "exercise", + "pages": [ "pages/exercise/exercise", "pages/exercise_grade/exercise_grade", "pages/exercise_setting/exercise_setting", "pages/question_setting/question_setting" ] + }, + { + "root": "common-homework", + "pages": [ + "pages/common-homework/common-homework" + ] + }, + { + "root": "shixun", + "pages": [ + "pages/shixun/shixun" + ] + }, + { + "root": "challenge", + "pages": [ + "pages/challenge/challenge" + ] } ], "preloadRule": { @@ -50,13 +71,15 @@ "pages/my_courses/my_courses": { "network": "all", "packages": [ - "course","account" + "course", + "account" ] }, - "course/pages/course/course":{ - "network":"all", - "packages":[ - "exercise","account" + "course/pages/course/course": { + "network": "all", + "packages": [ + "exercise", + "account" ] } }, @@ -77,12 +100,11 @@ "iconPath": "images/tab_study_default.png", "selectedIconPath": "images/tab_study_pressed.png" }, - { - "pagePath": "pages/findmore/findmore", - "text": "发现", - "iconPath": "images/tab_findmore_default.png", - "selectedIconPath": "images/tab_findmore_pressed.png" + "pagePath": "pages/tidings/tidings", + "text": "消息中心", + "iconPath": "images/tab_tiding_default.png", + "selectedIconPath": "images/tab_tiding_pressed.png" }, { "pagePath": "pages/my/my", diff --git a/miniprogram/app.wxss b/miniprogram/app.wxss index 048dcaf..79cc539 100644 --- a/miniprogram/app.wxss +++ b/miniprogram/app.wxss @@ -1,6 +1,5 @@ page { - height: 100%; - background-color: #f0f0f0; + background-color: #f1f1f1; } .flex-wrap{ display: flex; @@ -45,4 +44,13 @@ button.button-main{background:#00b0f0} .round{ border-radius: 50%; overflow: hidden; +} + + +radio .wx-radio-input.wx-radio-input-checked{ + background: #00b0f0; + border-color: #00b0f0; +} +checkbox .wx-checkbox-input.wx-checkbox-input-checked { + color: #00b0f0; } \ No newline at end of file diff --git a/miniprogram/avatar/.gitignore b/miniprogram/avatar/.gitignore index 58bc90a..e69de29 100644 --- a/miniprogram/avatar/.gitignore +++ b/miniprogram/avatar/.gitignore @@ -1 +0,0 @@ -we-cropper/ \ No newline at end of file diff --git a/miniprogram/avatar/we-cropper/dist/we-cropper.min.js b/miniprogram/avatar/we-cropper/dist/we-cropper.min.js new file mode 100644 index 0000000..7966ab3 --- /dev/null +++ b/miniprogram/avatar/we-cropper/dist/we-cropper.min.js @@ -0,0 +1,6 @@ +/** + * we-cropper v1.3.7 + * (c) 2019 dlhandsome + * @license MIT + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.WeCropper=e()}(this,function(){"use strict";var t=void 0,e=["touchstarted","touchmoved","touchended"];function r(n){for(var o=[],t=arguments.length-1;0>18&63)+d.charAt(r>>12&63)+d.charAt(r>>6&63)+d.charAt(63&r);return 2==a?(e=t.charCodeAt(c)<<8,n=t.charCodeAt(++c),i+=d.charAt((r=e+n)>>10)+d.charAt(r>>4&63)+d.charAt(r<<2&63)+"="):1==a&&(r=t.charCodeAt(c),i+=d.charAt(r>>2)+d.charAt(r<<4&63)+"=="),i},decode:function(t){var e=(t=String(t).replace(c,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var n,o,r=0,a="",i=-1;++i>(-2*r&6)));return a},version:"0.1.0"};if(e&&!e.nodeType)if(n)n.exports=a;else for(var i in a)a.hasOwnProperty(i)&&(e[i]=a[i]);else t.base64=a}(f)});function x(t){var e="";if("string"==typeof t)e=t;else for(var n=0;n>8&255,r>>16&255,r>>24&255,0,0,0,0,54,0,0,0],i=[40,0,0,0,255&e,e>>8&255,e>>16&255,e>>24&255,255&n,n>>8&255,n>>16&255,n>>24&255,1,0,24,0,0,0,0,0,255&o,o>>8&255,o>>16&255,o>>24&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=(4-3*e%4)%4,u=t.data,s="",d=e<<2,h=n,f=String.fromCharCode;do{for(var l=d*(h-1),p="",g=0;g=h&&(g.newScale=h),g.scaleWidth=Math.round(g.newScale*g.baseWidth),g.scaleHeight=Math.round(g.newScale*g.baseHeight);var l=Math.round(g.touchX1-g.scaleWidth/2),p=Math.round(g.touchY1-g.scaleHeight/2);g.outsideBound(l,p),g.updateCanvas()},g.__xtouchEnd=function(){g.oldScale=g.newScale,g.rectX=g.imgLeft,g.rectY=g.imgTop})},w}); \ No newline at end of file diff --git a/miniprogram/avatar/we-cropper/dist/we-cropper.wxml b/miniprogram/avatar/we-cropper/dist/we-cropper.wxml new file mode 100644 index 0000000..a3995db --- /dev/null +++ b/miniprogram/avatar/we-cropper/dist/we-cropper.wxml @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/miniprogram/challenge/pages/challenge/challenge.js b/miniprogram/challenge/pages/challenge/challenge.js new file mode 100644 index 0000000..cb17974 --- /dev/null +++ b/miniprogram/challenge/pages/challenge/challenge.js @@ -0,0 +1,66 @@ +// miniprogram/challenge/pages/challenge/challenge.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/challenge/pages/challenge/challenge.json b/miniprogram/challenge/pages/challenge/challenge.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/miniprogram/challenge/pages/challenge/challenge.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/challenge/pages/challenge/challenge.wxml b/miniprogram/challenge/pages/challenge/challenge.wxml new file mode 100644 index 0000000..143f973 --- /dev/null +++ b/miniprogram/challenge/pages/challenge/challenge.wxml @@ -0,0 +1,2 @@ + +miniprogram/challenge/pages/challenge/challenge.wxml diff --git a/miniprogram/challenge/pages/challenge/challenge.wxss b/miniprogram/challenge/pages/challenge/challenge.wxss new file mode 100644 index 0000000..853d600 --- /dev/null +++ b/miniprogram/challenge/pages/challenge/challenge.wxss @@ -0,0 +1 @@ +/* miniprogram/challenge/pages/challenge/challenge.wxss */ \ No newline at end of file diff --git a/miniprogram/common-homework/pages/common-homework/common-homework.js b/miniprogram/common-homework/pages/common-homework/common-homework.js new file mode 100644 index 0000000..d072cd7 --- /dev/null +++ b/miniprogram/common-homework/pages/common-homework/common-homework.js @@ -0,0 +1,183 @@ +const app = getApp(); +Component({ + properties:{ + work_id:Number, + homework_id:Number, + homework_name:String, + }, + data: { + attachments:[], + description:"" + }, + methods:{ + updateInput({detail:{value}}){ + this.setData({description: value}); + }, + submit(){ + let {description} =this.data; + let attachment_ids = this.data.attachments.map(i=>i.id); + if(this.data.uploading) + return wx.showToast({ + title: '请等待文件上传完毕',icon:"none" + }) + if(this.data.un_commit_work){ + let { homework_id } = this.data; + app.api("homework_commons.student_works", { method: "POST" })({ description, attachment_ids, homework_id }) + .then(res => { + console.log(res); + app.showMsg(res); + this.setData({}) + }) + .catch(e => { + app.showError(e); + }) + }else{ + let { work_id } = this.data; + app.api("student_works")({ description, attachment_ids, work_id }) + .then(res => { + app.showMsg(res); + }) + .catch(e => { + app.showError(e); + }) + } + }, + uploadAttachment(){ + var cbList = ["uploadFile", "uploadImage", "uploadVideo"]; + wx.showActionSheet({ + itemList: ["微信文件","上传照片","上传视频"], + success:res=>{ + this[cbList[res.tapIndex]](); + } + }) + }, + uploadFile(){ + wx.chooseMessageFile({ + count:1, + success:res=>{ + console.log("getfilepath"); + this.upload(res.tempFiles[0]) + } + }) + }, + uploadImage(){ + wx.chooseImage({ + count:1, + success:res=>{ + this.upload(res.tempFiles[0]) + } + }) + }, + uploadVideo(){ + wx.chooseVideo({ + success:res=>{ + this.upload({path: res.tempFilePath, size:res.size}); + } + }) + }, + upload({path, size, name}){ + console.log("upload", path, name) + if(this.size>157286400) + return wx.showModal({ + title: '错误', + content: '文件不能大于150M', + showCancel: false + }) + this.setData({uploading:true}); + console.log("uploading") + app.api("attachments")({ + file:path, + complete: ()=>{this.setData({uploading:false})} + }) + .then(res=>{ + let match = path.match(/\/([^\/]+$)/); + let title = match?match[1]:path; + let attachment = {id:res.id,title,path, url:"/api/attachments/"+res.id} + this.setData({attachments: this.data.attachments.concat(attachment)}); + }) + .catch(app.showError) + }, + onTapFile({target:{dataset:{id}}}){ + if(!id) return; + wx.showActionSheet({ + itemList: ["预览","删除"], + success:res=>{ + if(res.tapIndex==0){ + let attachment = this.data.attachments.filter(i=>i.id==id)[0]; + let url = global.config.eduUrl + attachment.url; + let path = attachment.path; + let match = attachment.title.match(/.([^.\/]+$)/) + if(match&&["jpg","png","bmp","gif","jpeg"].indexOf(match[1].toLowerCase())!=-1){ + if(path) + var urls = [path]; + else + var urls = [url]; + wx.previewImage({ + urls, + fail:e=>{wx.showToast({icon:"none",title:"预览失败"})} + }) + }else{ + if(path){ + wx.openDocument({ + filePath: path, + fail:res=>{wx.showToast({icon:"none",title:"不支持该文件类型"})} + }) + }else{ + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url, + success:res=>{ + wx.openDocument({ + filePath: res.tempFilePath, + fail:e=>{wx.showToast({icon:"none",title:"不支持该文件类型"})} + }) + }, + complete:wx.hideLoading, + fail:e=>{ + wx.showToast({ + title: '预览失败',icon:"none" + }) + } + }) + } + } + }else if(res.tapIndex==1){ + app.api("attachments",{method:"DELETE"})({attachment_id: id}) + .then(res=>{ + var attachments = this.data.attachments.filter(i => i.id != id); + this.setData({ attachments }); + app.showMsg(res); + }) + .catch(e=>{ + if(e.code==404){ + e.message = "该资源已经被删除了"; + var attachments = this.data.attachments.filter(i => i.id != id); + this.setData({ attachments }); + } + app.showError(e); + }) + } + } + }) + }, + pullEdit(){ + let {work_id} = this.data; + app.api("student_works.edit")({work_id}) + .then(res=>{ + this.setData(res); + }); + }, + onLoad: function (options) { + console.log(this.data, options); + if(options.un_commit_work=="true") + this.setData({un_commit_work:true}); + if(!this.data.un_commit_work) + this.pullEdit(); + }, + onShow: function () { + + } + } +}) \ No newline at end of file diff --git a/miniprogram/common-homework/pages/common-homework/common-homework.json b/miniprogram/common-homework/pages/common-homework/common-homework.json new file mode 100644 index 0000000..8e078f9 --- /dev/null +++ b/miniprogram/common-homework/pages/common-homework/common-homework.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "普通作业" +} \ No newline at end of file diff --git a/miniprogram/common-homework/pages/common-homework/common-homework.wxml b/miniprogram/common-homework/pages/common-homework/common-homework.wxml new file mode 100644 index 0000000..c19cd0f --- /dev/null +++ b/miniprogram/common-homework/pages/common-homework/common-homework.wxml @@ -0,0 +1,20 @@ + + + + + - + 参考答案: {{question.standard_answer[0]||'暂无'}} diff --git a/miniprogram/exercise/components/main-question/main-question.wxss b/miniprogram/exercise/components/main-question/main-question.wxss index e8fbc50..d529b97 100644 --- a/miniprogram/exercise/components/main-question/main-question.wxss +++ b/miniprogram/exercise/components/main-question/main-question.wxss @@ -1 +1,10 @@ -/* exercise/components/main-question/main-question.wxss */ \ No newline at end of file +@import "../question-common.wxss"; + +.main-input{ + height: 120rpx; + margin: 18rpx 0 4rpx 18rpx; + border: 1rpx solid lightgray; + border-radius: 12rpx; + padding: 12rpx 10rpx; +} + diff --git a/miniprogram/exercise/components/null-question/null-question.js b/miniprogram/exercise/components/null-question/null-question.js index 66dd759..c1fbf2d 100644 --- a/miniprogram/exercise/components/null-question/null-question.js +++ b/miniprogram/exercise/components/null-question/null-question.js @@ -1,24 +1,23 @@ const app = getApp(); Component({ properties: { - + data:Object }, data: { }, methods: { - answer_null_question: function ({ detail: { value }, currentTarget: { dataset } }) { + answer_null_question: function ({ detail: { value }, currentTarget: { dataset:{question_id, exercise_choice_id}} }) { console.log("answer_main_question"); console.log(value); console.log(dataset); - app.api("exercise_questions.exercise_answers")({ question_id: dataset.question_id, exercise_choice_id: dataset.exercise_choice_id, answer_text: value }) - .then(res => { console.log("answer_main_question"); console.log(res); }) - .catch(error => { - console.error(error); - wx.showToast({ - title: error.toString(), - icon: "none" + app.api("exercise_questions.exercise_answers")({ question_id, exercise_choice_id, answer_text: value }) + .then(res => { + console.log("answer_main_question"); console.log(res); }) + .catch(e => { + console.error(e); + app.showError(e); }); }, } diff --git a/miniprogram/exercise/components/null-question/null-question.json b/miniprogram/exercise/components/null-question/null-question.json index e8cfaaf..8de232c 100644 --- a/miniprogram/exercise/components/null-question/null-question.json +++ b/miniprogram/exercise/components/null-question/null-question.json @@ -1,4 +1,6 @@ { "component": true, - "usingComponents": {} + "usingComponents": { + "rich-md": "/components/rich-md/rich-md" + } } \ No newline at end of file diff --git a/miniprogram/exercise/components/null-question/null-question.wxml b/miniprogram/exercise/components/null-question/null-question.wxml index fe7e240..7c6cc8f 100644 --- a/miniprogram/exercise/components/null-question/null-question.wxml +++ b/miniprogram/exercise/components/null-question/null-question.wxml @@ -1,18 +1,18 @@ - - - - 填空{{null_input.choice_id}} - + 第{{data.q_position}}题 + + + 第{{index+1}}空 + - - - - - + + + + 第{{answer.choice_id}}空答案: {{answer.answer_text}} diff --git a/miniprogram/exercise/components/null-question/null-question.wxss b/miniprogram/exercise/components/null-question/null-question.wxss index 6eb53ee..afd6a54 100644 --- a/miniprogram/exercise/components/null-question/null-question.wxss +++ b/miniprogram/exercise/components/null-question/null-question.wxss @@ -1 +1,19 @@ -/* exercise/components/null-question/null-question.wxss */ \ No newline at end of file +@import "../question-common.wxss"; + +.input-wrap{ + display: flex; + align-items: center; +} + +.null-input{ + flex: auto; + border: 1rpx solid lightgray; + padding: 10rpx 12rpx; + margin: 6rpx 10rpx; + border-radius: 10rpx; +} + +standard-null-input{ + align-items: center; + display: flex; +} diff --git a/miniprogram/exercise/components/question-common.wxss b/miniprogram/exercise/components/question-common.wxss new file mode 100644 index 0000000..be13cef --- /dev/null +++ b/miniprogram/exercise/components/question-common.wxss @@ -0,0 +1,14 @@ +.question{ + background: white; + padding: 4rpx 20rpx 22rpx 22rpx; + border-radius: 18rpx; +} +.hint{ + padding: 6px; + font-size: 15px; + color: #0080f0; +} +.title>text,.title>rich-text{ + margin: 5rpx 6rpx 12rpx 6rpx; + display: block; +} \ No newline at end of file diff --git a/miniprogram/exercise/components/shixun-question/shixun-question.js b/miniprogram/exercise/components/shixun-question/shixun-question.js new file mode 100644 index 0000000..16b854e --- /dev/null +++ b/miniprogram/exercise/components/shixun-question/shixun-question.js @@ -0,0 +1,16 @@ + +Component({ + + properties: { + data:Object + }, + + + data: { + + }, + + methods: { + + } +}) diff --git a/miniprogram/exercise/components/shixun-question/shixun-question.json b/miniprogram/exercise/components/shixun-question/shixun-question.json new file mode 100644 index 0000000..8de232c --- /dev/null +++ b/miniprogram/exercise/components/shixun-question/shixun-question.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "rich-md": "/components/rich-md/rich-md" + } +} \ No newline at end of file diff --git a/miniprogram/exercise/components/shixun-question/shixun-question.wxml b/miniprogram/exercise/components/shixun-question/shixun-question.wxml new file mode 100644 index 0000000..b58a92a --- /dev/null +++ b/miniprogram/exercise/components/shixun-question/shixun-question.wxml @@ -0,0 +1,5 @@ + + 第{{data.q_position}}题 + + 对不起,暂时不支持实训题 ╥﹏╥ + \ No newline at end of file diff --git a/miniprogram/exercise/components/shixun-question/shixun-question.wxss b/miniprogram/exercise/components/shixun-question/shixun-question.wxss new file mode 100644 index 0000000..1b910e5 --- /dev/null +++ b/miniprogram/exercise/components/shixun-question/shixun-question.wxss @@ -0,0 +1 @@ +@import "../question-common.wxss"; \ No newline at end of file diff --git a/miniprogram/exercise/pages/exercise/exercise.js b/miniprogram/exercise/pages/exercise/exercise.js index 3c8ac1e..08d5b00 100644 --- a/miniprogram/exercise/pages/exercise/exercise.js +++ b/miniprogram/exercise/pages/exercise/exercise.js @@ -10,91 +10,13 @@ Page({ app.api("exercises.start_answer")({exercise_id: this.exercise_id}) .then(res=>{ console.log("pull questions"); - console.log(res); - this.setData({exercise: res.exercise}); - if (!res.exercise_questions){ - if(res.status==401) - wx.showToast({ - title: '请登陆后重试', - icon: "none" - }) - return; - } - let questions = res.exercise_questions; - for(var i=0;ianswer.choice_id==j)[0]||{}; - console.log(user_answer); - null_inputs.push({choice_id:j, answer_text:user_answer.answer_text||""}); - console.log(null_inputs); - } - questions[i]["null_inputs"] = null_inputs; - console.log(questions); - } - } - this.setData({ exercise_questions: questions, loading: false}); - console.log(this.data); - }).catch(error => { - console.error(error); - wx.showToast({ - title: error.toString(), - icon: "none", - duration: 5000 - }) - }); - }, - answer_null_question: function ({ detail: { value }, currentTarget: { dataset } }){ - console.log("answer_main_question"); - console.log(value); - console.log(dataset); - app.api("exercise_questions.exercise_answers")({ question_id: dataset.question_id, exercise_choice_id:dataset.exercise_choice_id, answer_text: value }) - .then(res => { console.log("answer_main_question"); console.log(res); }) - .catch(error => { - console.error(error); - wx.showToast({ - title: error.toString(), - icon: "none" - }) - }); - }, - answer_main_question: function ({ detail: { value }, currentTarget: { dataset }}){ - console.log("answer_main_question"); - console.log(value); - console.log(dataset); - app.api("exercise_questions.exercise_answers")({ question_id: dataset.question_id, answer_text: value }) - .then(res => { console.log("answer_main_question"); console.log(res); }) - .catch(e => { - console.error(e); + //console.log(res); + this.setData({ exercise: res.exercise, exercise_questions: res.exercise_questions, loading: false}); + }).catch(e => { + this.setData({status:e.code}); app.showError(e); }); }, - answer_choice_question: function({detail: {value}, currentTarget: {dataset}}){ - console.log("answer_question"); - console.log(value); - console.log(dataset); - let exercise_choice_id; - if(Array.isArray(value)){ - exercise_choice_id = []; - for(var i of value){ - exercise_choice_id.push(parseInt(i)); - } - console.log(exercise_choice_id); - }else{ - exercise_choice_id = parseInt(value); - console.log(exercise_choice_id); - } - app.api("exercise_questions.exercise_answers")({ question_id: dataset.question_id, exercise_choice_id}) - .then(res=>{console.log("answer_question");console.log(res);}) - .catch(error=>{ - console.error(error); - wx.showToast({ - title: error.toString(), - icon: "none" - }) - }); - }, save_exercise: function({show_loading=true}={}){ if(show_loading){ wx.showLoading({ @@ -141,13 +63,12 @@ Page({ }, onLoad: function (options) { this.exercise_id = options.exercise_id; - this.course_name = options.exercise_name;//todo finish + this.course_name = options.exercise_name; + this.pull_questions(); }, onShow: function () { - if(this.data.loading){ - this.pull_questions(); - } + }, onHide: function () { diff --git a/miniprogram/exercise/pages/exercise/exercise.json b/miniprogram/exercise/pages/exercise/exercise.json index ea6d585..0fe1539 100644 --- a/miniprogram/exercise/pages/exercise/exercise.json +++ b/miniprogram/exercise/pages/exercise/exercise.json @@ -2,6 +2,8 @@ "usingComponents": { "choice-question":"/exercise/components/choice-question/choice-question", "main-question": "/exercise/components/main-question/main-question", - "null-question": "/exercise/components/null-question/null-question" - } + "null-question": "/exercise/components/null-question/null-question", + "shixun-question":"/exercise/components/shixun-question/shixun-question" + }, + "navigationBarTitleText": "试卷" } \ No newline at end of file diff --git a/miniprogram/exercise/pages/exercise/exercise.wxml b/miniprogram/exercise/pages/exercise/exercise.wxml index 409a880..0c3da38 100644 --- a/miniprogram/exercise/pages/exercise/exercise.wxml +++ b/miniprogram/exercise/pages/exercise/exercise.wxml @@ -1,14 +1,15 @@ - - - - - - 暂不支持实训题... - - + + + + + + + + + - - \ No newline at end of file + \ No newline at end of file diff --git a/miniprogram/exercise/pages/exercise/exercise.wxss b/miniprogram/exercise/pages/exercise/exercise.wxss index bb01dd9..32662f7 100644 --- a/miniprogram/exercise/pages/exercise/exercise.wxss +++ b/miniprogram/exercise/pages/exercise/exercise.wxss @@ -1,10 +1,12 @@ +page{ + display: flex; + flex-direction: column; + height:100%; +} .foot{ - position: fixed; + flex:none; width: 100%; - align-items: center; background: white; - bottom: 0; - z-index: 9; } .operation{ color: white; @@ -18,4 +20,11 @@ } .container{ padding-bottom: 40px; +} +.question-wrap{ + margin: 8px 10px; +} +.questions{ + flex: 1 1 1px; + height: 1px; } \ No newline at end of file diff --git a/miniprogram/exercise/pages/exercise_setting/exercise_setting.js b/miniprogram/exercise/pages/exercise_setting/exercise_setting.js index 9cc8765..10cecdd 100644 --- a/miniprogram/exercise/pages/exercise_setting/exercise_setting.js +++ b/miniprogram/exercise/pages/exercise_setting/exercise_setting.js @@ -22,13 +22,14 @@ Page({ let end_time = getNextWeekFormatDate() + " " + getNowFormatTime(); //end_time = end_time.replace("-11", "-12"); app.api("courses.exercises.publish")({ - course_id: this.course_id, exercise_ids: [this.exercise_id], + course_id: this.course_id, check_ids: [this.exercise_id], end_time: end_time }).then(res=>{ console.log(res); + app.showMsg(res); wx.navigateBack({ delta: 1 - }) + }); } ) }, @@ -41,8 +42,8 @@ Page({ }) return; } - wx.navigateTo({ - url: `../question_setting/question_setting?exercise_id=${this.exercise_id}`, + app.navigateTo({ + url: `{question_setting}?exercise_id=${this.exercise_id}`, }) }, create_exercise: function({detail:{value}}){ @@ -83,6 +84,9 @@ Page({ this.intent = options.intent; this.course_id = options.course_id; this.exercise_id = options.exercise_id; + }, + + onShow: function () { if (this.exercise_id) { app.api("exercises.edit")({ exercise_id: this.exercise_id }) .then(res => { @@ -94,37 +98,8 @@ Page({ }) }) } - - }, - - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - }, - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ onReachBottom: function () { }, diff --git a/miniprogram/images/tab_tiding_default.png b/miniprogram/images/tab_tiding_default.png new file mode 100644 index 0000000000000000000000000000000000000000..733412bb1353606770baaf240f49979ee2e39a97 GIT binary patch literal 1272 zcmVA|JUGM$cQmJ$-O`oX} z7#|-$Z*p?-6oAVB90YKr3ifsYn*p5Z?(Xgx7#NsJi$tmf^7;Ig-uplxq|GYl+==k6 zweAP-W_VAMq^DRc{&-FjXp%l>0eAqHrkzHqM8FucNkn!6SRFaCp8>GU{6VDttZMTj zV2oMiz28Yh_tbg#l8BC$%jF3o`b9*RcXf4LAR@it0T7;wh{#6(UU1I6Ggl&WCSZ)& zEFy2!IX;{u$=+hI_=2Rr>hzvq=BMXEVon5RfR6$`6I?Er>r0Yk2Y@@O zZTB+s8|{*4o4^e42bnpnFmo2Ib%fzfvO{M ziip-(Yk!U%k+ujZr4Cdl>|ti!80#cPPiy^NNGB0_-Z}SZOrM|=O`y6|9txej_qUcx zrK7PqLXs!Js#(29r^-&O!_0GB4UTRiTQ3RAyPZH56fbW?3ns$M;qp!983BVQA z?f1*A`bH7ZTE7b50RRV>c}pv!^J&*whk3RMz%VlxTG@&v@HK$zh-lDSJJ!nReA>0v z20#(OK4#w5%2q4^sjfb$A4p~btnFw;0MkCcpq1gNZ z&`F_A3bm0gjZ`}+)JdUpErpCRD@5eX|8_H{lzNtkLfP=|OeWJiGBOgj)(a*>LqjXe zOiHZyFmL`*Se}D5aJWQHVkhfIZB-y=?-*&q zg@2+5D5Y{lMqN{69d6p0n0I9z`H1 zX|10Tk(DtFh-eLf(;{*@Qh!CY`WAI(OhjSy8{R`i)rDGt(pvup;9>yVn0a3_{kkgm z@65ccmF-sTX%Pq|z+ED8#5uRVnbW!obX4hZQ3wnU4qltdWWtT(B}7!R)~ZI1jWJF{ zasYlUm&@x$M@PSD1+Z0nDiNs8nQ&+DT6ia-livGq_f@&I4_ksHN%}=3d>Dh=&&;p4 z0vFSs8iC+UDfI{uJqDoimr4T(f356x&b=4|E=DI+0>NP}m%AuQk^ul=v}+@N62Mp9 i``x8dDSTs6lYaqW>$OjIeA99O00007+wP&a?h?@hUg$^^If-A zr>G8)6`L{a1=*>KTBiCL;Rx;c{R*|qN~!@I>+T{lAJ+{B$ua-!B)Ri)RWE;lPVqb< zlT`z6s56}4)^$(w`0amI@$>`e*nZoLfU#!>!Sg96XAf?u)faxNZNc@>*EHr3Dhm{*pZfZ;H$Zf3`OVaj>o%R z%s$#p)pK__K&QJ6F-N@zP`f}TNn86gHVy#$GQt}gqo5kYagumU<5>=n+i!u#G)93n z|I)ZL!r1zGm+$HTNA3OG!Y?j^KAzt}8h_#PUmYN~y~oJyE`z?EH~h+iJnPz(-UyHt zFA&LAgspuWoZ8sTgS>;0QzWggS1MZ$kaeHIn2*%{YbTs0jYky#_A?CQYd0=!lKF$Q zd5;@l>hED1jmmF|wZrk&8S^$tbH5v4Ns)ESzIA!$*DRPWyO7USV7eh0Z*6LwV-^m}mt0Q&*(oF2gM<*m!NK0s!7V|dRMbnU!MkhX&T zS=I;WjV!lkfCm*2L6=W2FAPA>DYGA9m{=7;{ this.synch = 0; wx.setStorageSync("autologin", 0); diff --git a/miniprogram/js/edu.js b/miniprogram/js/edu.js index f028deb..2818235 100644 --- a/miniprogram/js/edu.js +++ b/miniprogram/js/edu.js @@ -1,18 +1,55 @@ import apiConfig, {baseUrl} from "./apiConfig"; +function handler({success, fail, resolve, reject}){ + return { + success: res => { + if (res.data.status == 1) console.error("!!!api response!!! status===1"); + if (res.data.status && res.data.status != 1) { + switch (res.data.status) { + case 401: + var message = "(●'◡'●)\n请先登陆哦"; + var code = res.data.status; + break; + default: + var message = res.data.message; + var code = res.data.status; + } + let e = new Error(message); + e.code = code; + if (fail) fail(e); + return reject(e); + } + if (success) success(res.data); + resolve(res.data); + }, + fail: e => { + console.error(e); + if ("errMsg" in e) + (e = new Error("(⋟﹏⋞)\n网络连接出错了呢")).code = -2; + if (!("message" in e)) + (e = new Error("(>_<)\n出现了未知错误")).code = -1; + console.debug(e); + if (fail) { fail(e); } + reject(e); + } + } +} + export default function ({ name, data:_data = {}, session, success, fail, complete, config:{method,header={}}={}}) { let api = apiConfig; for (var key of name.split(".")) api=api[key]||console.error(`no api named ${key} in apiList`, api); - let { url, query={}, form = {}, config:{method:_method,_header={}}={}} = api; + let { url, query={}, form = {}, config:{method:_method,_header={},...config}={}} = api; + method = method || _method; console.debug(`call EduCoder api ${name}`, api, arguments[0], "require arguments:",form,query); if(url){ - url = name.replace(/\.[^\.]*$|\./g, "/") + url.replace(/\{(.*)}/, function (match, k) { + if(url._) + url = url[method||"GET"]; + url = name.replace(/\.?[^\.]+$|\./g, "/") + url.replace(/\{(.*)}/, function (match, k) { return _data[k]||console.error(`${k} was not given in data`, _data) }).replace(/\*/g,key); }else url = name.replace(/\./g, "/"); url = baseUrl + url + ".json"; - method = method||_method; header = {..._header,...header}; var data={},param={}; if(form._) @@ -44,38 +81,24 @@ export default function ({ name, data:_data = {}, session, success, fail, comple let queryStr = Object.keys(param).map(key => `${key}=${param[key]}`).join("&"); if(queryStr) url = url+"?"+queryStr; - return new Promise((resolve, reject) => { + if(method=="uploadFile"){ + console.log("uploadFile") + var formData = data; + var {name:_name, timeout} = config; + if(!_name) + _name = Object.keys(formData)[0]; + var filePath = formData[_name]; + delete formData[_name]; + console.log({ url, filePath, name: _name, header, timeout, formData}); + return new Promise((resolve, reject)=>{ + session.uploadFile({ + url, filePath, name:_name, header, timeout, formData,complete, ...handler({success, fail, resolve, reject}) + }) + }); + }else + return new Promise((resolve, reject) => { session.request({ - url, method, data, header,complete, - success: res => { - if(res.data.status==1)console.error("!!!api response!!! status===1"); - if (res.data.status&&res.data.status!=1) { - switch(res.data.status){ - case 401: - var message = "(●'◡'●)\n请先登陆哦"; - var code = res.data.status; - break; - default: - var message = res.data.message; - var code = res.data.status; - } - let e = new Error(message); - e.code = code; - if (fail) fail(e); - return reject(e); - } - if (success) success(res.data); - resolve(res.data); - }, - fail: e => { - if ("errMsg" in e) - (e = new Error("(⋟﹏⋞)\n网络连接出错了呢")).code = -2; - if (!("message" in e)) - (e = new Error("(>_<)\n出现了未知错误")).code = -1; - console.debug(e); - if (fail) {fail(e);} - reject(e); - } + url, method, data, header,complete,...handler({success, fail, resolve, reject}) }); }) } diff --git a/miniprogram/js/requests.js b/miniprogram/js/requests.js index b3b9bf4..fcad935 100644 --- a/miniprogram/js/requests.js +++ b/miniprogram/js/requests.js @@ -36,7 +36,16 @@ export default class{ name, header: {"Cookie": this.cookies, ...header}, formData, - success, + success:res=>{ + try{ + res.data = JSON.parse(res.data); + }catch(e){ + //@todo + } + console.log("uploadFile",res); + if(success) + success(res) + }, fail, complete }) diff --git a/miniprogram/pages/courses/courses.js b/miniprogram/pages/courses/courses.js index 98c2942..3d9bbf6 100644 --- a/miniprogram/pages/courses/courses.js +++ b/miniprogram/pages/courses/courses.js @@ -67,10 +67,5 @@ Page({ } }) } - }, - - - onShareAppMessage: function () { - } }) \ No newline at end of file diff --git a/miniprogram/pages/findmore/findmore.json b/miniprogram/pages/findmore/findmore.json index 7360326..aa844ce 100644 --- a/miniprogram/pages/findmore/findmore.json +++ b/miniprogram/pages/findmore/findmore.json @@ -1,4 +1,5 @@ { "usingComponents": {}, - "enablePullDownRefresh": true + "enablePullDownRefresh": true, + "navigationBarTitleText": "发现" } \ No newline at end of file diff --git a/miniprogram/pages/findmore/findmore.wxml b/miniprogram/pages/findmore/findmore.wxml index 2e4287b..95d27f7 100644 --- a/miniprogram/pages/findmore/findmore.wxml +++ b/miniprogram/pages/findmore/findmore.wxml @@ -8,11 +8,10 @@ - 实训课程 + 实践课程 TRAINING COURSE - @@ -28,7 +27,7 @@ - 实训课程 + 实训项目 DEVELOPMENT COMMUNITY diff --git a/miniprogram/pages/my/my.js b/miniprogram/pages/my/my.js index c5efa4c..309d4d5 100644 --- a/miniprogram/pages/my/my.js +++ b/miniprogram/pages/my/my.js @@ -7,7 +7,30 @@ Page({ user: {}, show_join_course_modal: false }, - /**on tap */ + update(){ + const updateManager = wx.getUpdateManager() + + updateManager.onCheckForUpdate(function (res) { + if(!res.hasUpdate){ + wx.showToast({ + title: '你用的是最新版本哦',icon:"none" + }) + } + }) + + updateManager.onUpdateReady(function () { + wx.showModal({ + title: '更新提示', + content: "(●'◡'●)\n新版本已经准备好了,是否重启应用呢?", + success(res) { + if (res.confirm) { + // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 + updateManager.applyUpdate() + } + } + }) + }) + }, onTapAvatar: function({currentTarget:{dataset}}){ wx.showActionSheet({ itemList: ["查看图片","更改头像"], diff --git a/miniprogram/pages/my/my.json b/miniprogram/pages/my/my.json index 358cdcd..03aafbf 100644 --- a/miniprogram/pages/my/my.json +++ b/miniprogram/pages/my/my.json @@ -1,5 +1,5 @@ { - "navigationBarTitleText": "设置", + "navigationBarTitleText": "我的", "enablePullDownRefresh": false, "usingComponents": { "join-course-modal": "/components/modal/join-course/join-course" diff --git a/miniprogram/pages/my/my.wxml b/miniprogram/pages/my/my.wxml index ab39178..dc112ae 100644 --- a/miniprogram/pages/my/my.wxml +++ b/miniprogram/pages/my/my.wxml @@ -8,9 +8,9 @@ 加入课程 创建课程 - + - 版本号:{{version}} + 当前版本:{{version}} 关于 diff --git a/miniprogram/pages/my_courses/my_courses.js b/miniprogram/pages/my_courses/my_courses.js index 557d996..1c8c0c7 100644 --- a/miniprogram/pages/my_courses/my_courses.js +++ b/miniprogram/pages/my_courses/my_courses.js @@ -1,4 +1,7 @@ const app = getApp(); +/* +statuses:[] +*/ const getDataForRender = class_ => ({ name: class_.get('name'), @@ -23,6 +26,7 @@ Page({ this.options["category"] = value.value; if(current>=0) this.pull_courses(this.options); + this.setData({ category: value.value }); }, onStatusChange: function ({detail: {value} }){ this.options["status"] = value.value; @@ -41,36 +45,41 @@ Page({ }, pull_courses: function({category="",status=""}={}){ - app.callApi({name:"users.courses",data:{ + app.callApi({name:"weapps.home",data:{ category: category, status: status}, complete:()=>{this.setData({loading:false})} }) .then(res=>{ - console.log(res); - this.setData({courses: res.courses||[]}); + //console.log(res); + let {courses} = res; + if(status) + courses = courses.filter(i=>{ + return i.is_end==(status=="end") + }) + this.setData({courses}); }).catch(e=>{ this.setData({courses:[]}); console.error }); - console.log(this.data); + //console.log(this.data); }, onLoad: function (options) { - app.syncUser().then(r=>{ - if(r.user.is_teacher) - var current_cate = 1; - else - var current_cate = 0; - this.setData({current_cate}); - }) + console.log(app.user()); + if(app.user().is_teacher) + var current_cate = 1; + else + var current_cate = 0; + this.setData({current_cate}); }, onShow: function () { - app.syncUser().then(r =>{ + app.syncUser().then(r => { this.setData({ user: r.user }) }); - if(this.data.current_cate>=0) + if(this.data.current_cate>=0){ this.pull_courses(this.options); + } }, onPullDownRefresh: function () { diff --git a/miniprogram/pages/my_courses/my_courses.wxml b/miniprogram/pages/my_courses/my_courses.wxml index d3b3bc4..9d64b71 100644 --- a/miniprogram/pages/my_courses/my_courses.wxml +++ b/miniprogram/pages/my_courses/my_courses.wxml @@ -4,13 +4,13 @@ - + - - + + diff --git a/miniprogram/pages/my_courses/my_courses.wxss b/miniprogram/pages/my_courses/my_courses.wxss index e828751..7c880ba 100644 --- a/miniprogram/pages/my_courses/my_courses.wxss +++ b/miniprogram/pages/my_courses/my_courses.wxss @@ -1,4 +1,5 @@ page{ + height: 100%; display: flex; flex-direction: column; } diff --git a/miniprogram/pages/tidings/tidings.js b/miniprogram/pages/tidings/tidings.js new file mode 100644 index 0000000..200cdc0 --- /dev/null +++ b/miniprogram/pages/tidings/tidings.js @@ -0,0 +1,27 @@ +const app = getApp(); +Page({ + data: { + tidings:[] + }, + + onLoad: function (options) { + + }, + + onShow: function () { + app.api("users.tidings")().then(res=>{ + console.log(res); + this.setData({tidings: res.tidings}); + }) + wx.hideTabBarRedDot({index: 1}); + wx.removeTabBarBadge({index: 1}); + }, + + onPullDownRefresh: function () { + + }, + + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/pages/tidings/tidings.json b/miniprogram/pages/tidings/tidings.json new file mode 100644 index 0000000..59c2b7d --- /dev/null +++ b/miniprogram/pages/tidings/tidings.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "tiding-item":"/components/tiding-item/tiding-item" + }, + "navigationBarTitleText": "消息中心" +} \ No newline at end of file diff --git a/miniprogram/pages/tidings/tidings.wxml b/miniprogram/pages/tidings/tidings.wxml new file mode 100644 index 0000000..f0eb54a --- /dev/null +++ b/miniprogram/pages/tidings/tidings.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/miniprogram/pages/tidings/tidings.wxss b/miniprogram/pages/tidings/tidings.wxss new file mode 100644 index 0000000..ac20814 --- /dev/null +++ b/miniprogram/pages/tidings/tidings.wxss @@ -0,0 +1,3 @@ +.tiding-wrap{ + margin: 4px 0; +} \ No newline at end of file diff --git a/miniprogram/path/pages/path/path.js b/miniprogram/path/pages/path/path.js new file mode 100644 index 0000000..a15ad70 --- /dev/null +++ b/miniprogram/path/pages/path/path.js @@ -0,0 +1,66 @@ +// miniprogram/path/pages/path/path.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/path/pages/path/path.json b/miniprogram/path/pages/path/path.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/miniprogram/path/pages/path/path.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/path/pages/path/path.wxml b/miniprogram/path/pages/path/path.wxml new file mode 100644 index 0000000..c63e4b2 --- /dev/null +++ b/miniprogram/path/pages/path/path.wxml @@ -0,0 +1,2 @@ + +miniprogram/path/pages/path/path.wxml diff --git a/miniprogram/path/pages/path/path.wxss b/miniprogram/path/pages/path/path.wxss new file mode 100644 index 0000000..061c509 --- /dev/null +++ b/miniprogram/path/pages/path/path.wxss @@ -0,0 +1 @@ +/* miniprogram/path/pages/path/path.wxss */ \ No newline at end of file diff --git a/miniprogram/shixun/components/challenge-item/challenge-item.js b/miniprogram/shixun/components/challenge-item/challenge-item.js new file mode 100644 index 0000000..b843992 --- /dev/null +++ b/miniprogram/shixun/components/challenge-item/challenge-item.js @@ -0,0 +1,23 @@ +// shixun/components/challenge-item/challenge-item.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) diff --git a/miniprogram/shixun/components/challenge-item/challenge-item.json b/miniprogram/shixun/components/challenge-item/challenge-item.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/miniprogram/shixun/components/challenge-item/challenge-item.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/shixun/components/challenge-item/challenge-item.wxml b/miniprogram/shixun/components/challenge-item/challenge-item.wxml new file mode 100644 index 0000000..2991e94 --- /dev/null +++ b/miniprogram/shixun/components/challenge-item/challenge-item.wxml @@ -0,0 +1,2 @@ + +shixun/components/challenge-item/challenge-item.wxml diff --git a/miniprogram/shixun/components/challenge-item/challenge-item.wxss b/miniprogram/shixun/components/challenge-item/challenge-item.wxss new file mode 100644 index 0000000..9c7423f --- /dev/null +++ b/miniprogram/shixun/components/challenge-item/challenge-item.wxss @@ -0,0 +1 @@ +/* shixun/components/challenge-item/challenge-item.wxss */ \ No newline at end of file diff --git a/miniprogram/shixun/pages/shixun/shixun.js b/miniprogram/shixun/pages/shixun/shixun.js new file mode 100644 index 0000000..4eba79a --- /dev/null +++ b/miniprogram/shixun/pages/shixun/shixun.js @@ -0,0 +1,26 @@ +const app = getApp(); +Page({ + + data: { + + }, + + onLoad: function (options) { + + }, + + + onShow: function () { + + }, + + onPullDownRefresh: function () { + + }, + onReachBottom: function () { + + }, + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/shixun/pages/shixun/shixun.json b/miniprogram/shixun/pages/shixun/shixun.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/miniprogram/shixun/pages/shixun/shixun.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/shixun/pages/shixun/shixun.wxml b/miniprogram/shixun/pages/shixun/shixun.wxml new file mode 100644 index 0000000..580eeaf --- /dev/null +++ b/miniprogram/shixun/pages/shixun/shixun.wxml @@ -0,0 +1,2 @@ + +miniprogram/shixun/pages/shixun/shixun.wxml diff --git a/miniprogram/shixun/pages/shixun/shixun.wxss b/miniprogram/shixun/pages/shixun/shixun.wxss new file mode 100644 index 0000000..cef5e41 --- /dev/null +++ b/miniprogram/shixun/pages/shixun/shixun.wxss @@ -0,0 +1 @@ +/* miniprogram/shixun/pages/shixun/shixun.wxss */ \ No newline at end of file diff --git a/miniprogram/towxml/config.js b/miniprogram/towxml/config.js new file mode 100644 index 0000000..bc2e47f --- /dev/null +++ b/miniprogram/towxml/config.js @@ -0,0 +1,126 @@ +module.exports = { + // LaTex公式、yuml解析服务架设参见 https://github.com/sbfkcel/markdown-server + + // 数学公式解析API + latex:{ + api:'http://towxml.vvadd.com/?tex' + }, + + // yuml图解析APPI + //yuml:{ + // api:'http://towxml.vvadd.com/?yuml' + //}, + + // markdown解析配置,保留需要的选项即可 + markdown:[ + 'sub', // 下标支持 + 'sup', // 上标支持 + 'ins', // 文本删除线支持 + //'mark', // 文本高亮支持 + //'emoji', // emoji表情支持 + //'todo' // todo支持 + ], + + // 代码高亮配置,保留需要的选项即可 + highlight:[ + //'bash', + 'javascript', + //'json', + 'python', + //'htmlbars', + 'css', + //'php', + //'scss', + //'shell', + + // 'coffeescript', + // 'dns', + // 'dos', + // 'erlang', + // 'go', + // 'http', + 'java', + // 'less', + // 'makefile', + // 'markdown', + // 'nginx', + // 'powershell', + // 'ruby', + // 'sql', + // 'swift', + // 'typescript' + ], + + // wxml原生标签,该系列标签将不会被转换 + wxml:[ + 'view', + 'video', + 'text', + 'image', + 'navigator', + 'swiper', + 'swiper-item', + 'block', + 'form', + 'input', + 'textarea', + 'button', + 'checkbox-group', + 'checkbox', + 'radio-group', + 'radio', + + // 可以解析的标签(html或markdown中会很少使用) + // 'canvas', + // 'map', + // 'slider', + // 'scroll-view', + // 'movable-area', + // 'movable-view', + // 'progress', + // 'label', + // 'switch', + // 'picker', + // 'picker-view', + // 'switch', + // 'contact-button' + ], + + // 自定义组件 + components:[ + //'audio-player', // 音频组件,建议保留,由于小程序原生audio存在诸多问题,towxml解决了原生音频播放器的相关问题 + //'echarts', // echarts图表支持 + 'latex', // 数学公式支持 + 'table', // 表格支持 + //'todogroup', // todo支持 + //'yuml', // yuml图表支持 + 'img' // 图片解析组件 + ], + + // 保留原本的元素属性(建议不要变动) + attrs:[ + 'class', + 'data', + 'id', + 'style' + ], + + // 事件绑定方式(catch或bind),catch 会阻止事件向上冒泡。更多请参考:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html + bindType:'catch', + + // 需要激活的事件 + events:[ + // 'touchstart', + // 'touchmove', + // 'touchcancel', + // 'touchend', + 'tap', // 用于元素的点击事件 + //'change', // 用于todoList的change事件 + ], + + // 图片倍数 + dpr:1, + + // 代码块显示行号 + showLineNumber:true +} \ No newline at end of file diff --git a/miniprogram/towxml/decode.js b/miniprogram/towxml/decode.js new file mode 100644 index 0000000..18d3a7b --- /dev/null +++ b/miniprogram/towxml/decode.js @@ -0,0 +1,26 @@ +const config = require('./config'); + +Component({ + options: { + styleIsolation: 'apply-shared' + }, + properties: { + nodes: { + type: Object, + value: {} + } + }, + lifetimes: { + attached: function () { + const _ts = this; + + config.events.forEach(item => { + _ts['_' + item] = function (...arg) { + if (global._events && typeof global._events[item] === 'function') { + global._events[item](...arg); + } + }; + }); + } + } +}) \ No newline at end of file diff --git a/miniprogram/towxml/decode.json b/miniprogram/towxml/decode.json new file mode 100644 index 0000000..33d3a1a --- /dev/null +++ b/miniprogram/towxml/decode.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "decode": "/towxml/decode", + "latex": "/towxml/latex/latex", + "table": "/towxml/table/table", + "img": "/towxml/img/img" + } +} \ No newline at end of file diff --git a/miniprogram/towxml/decode.wxml b/miniprogram/towxml/decode.wxml new file mode 100644 index 0000000..da09eb7 --- /dev/null +++ b/miniprogram/towxml/decode.wxml @@ -0,0 +1 @@ +{{item.text}}
\ No newline at end of file diff --git a/miniprogram/towxml/decode.wxss b/miniprogram/towxml/decode.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram/towxml/img/img.js b/miniprogram/towxml/img/img.js new file mode 100644 index 0000000..a75ffcd --- /dev/null +++ b/miniprogram/towxml/img/img.js @@ -0,0 +1,87 @@ +const config = require('../config'); +Component({ + options: { + styleIsolation: 'shared' + }, + properties: { + data: { + type: Object, + value: {} + } + }, + data: { + attr:{ + src:'', + class:'', + style:'' + }, + size:{ + w:0, + h:0 + }, + styleObj:{} + }, + lifetimes:{ + attached:function(){ + const _ts = this; + let dataAttr = this.data.data.attr; + if(dataAttr.width){ + _ts.data.size.w = +dataAttr.width / config.dpr; + }; + + if(dataAttr.height){ + _ts.data.size.h = +dataAttr.height / config.dpr; + }; + if(dataAttr.style){ + let re = /;\s{0,}/ig; + dataAttr.style = dataAttr.style.replace(re,';'); + dataAttr.style.split(';').forEach(item => { + let itemArr = item.split(':'); + if(/^(width|height)$/i.test(itemArr[0])){ + let num = parseInt(itemArr[1]) || 0, + key = ''; + switch (itemArr[1].toLocaleLowerCase()) { + case 'width': + key = 'w'; + break; + case 'height': + key = 'h'; + break; + }; + _ts.data.size[key] = num / config.dpr; + }else{ + _ts.data.styleObj[itemArr[0]] = itemArr[1]; + }; + }); + }; + _ts.setData({ + attr:{ + src:dataAttr.src, + class:dataAttr.class, + style:_ts.setStyle(_ts.data.styleObj), + size:_ts.data.size + } + }); + } + }, + methods: { + setStyle:function(o){ + let str = ``; + for(let key in o){ + str += `${key}:${o[key]};`; + }; + return str; + }, + load:function(e){ + const _ts = this; + if(!_ts.data.styleObj.width || !_ts.data.styleObj.height){ + _ts.setData({ + size:{ + w:e.detail.width / config.dpr, + h:e.detail.height / config.dpr + } + }); + }; + } + } +}) \ No newline at end of file diff --git a/miniprogram/towxml/img/img.json b/miniprogram/towxml/img/img.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/miniprogram/towxml/img/img.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/miniprogram/towxml/img/img.wxml b/miniprogram/towxml/img/img.wxml new file mode 100644 index 0000000..8f05e88 --- /dev/null +++ b/miniprogram/towxml/img/img.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/miniprogram/towxml/img/img.wxss b/miniprogram/towxml/img/img.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram/towxml/index.js b/miniprogram/towxml/index.js new file mode 100644 index 0000000..ce87938 --- /dev/null +++ b/miniprogram/towxml/index.js @@ -0,0 +1,19 @@ +const md = require('./parse/markdown/index'), + parse = require('./parse/index') + +module.exports = (str,type,option)=>{ + option = option || {}; + let result; + switch (type) { + case 'markdown': + result = parse(md(str),option); + break; + case 'html': + result = parse(str,option); + break; + default: + throw new Error('Invalid type, only markdown and html are supported'); + break; + }; + return result; +}; \ No newline at end of file diff --git a/miniprogram/towxml/latex/latex.js b/miniprogram/towxml/latex/latex.js new file mode 100644 index 0000000..5ae0982 --- /dev/null +++ b/miniprogram/towxml/latex/latex.js @@ -0,0 +1,48 @@ +const config = require('../config'); +Component({ + options: { + styleIsolation: 'shared' + }, + properties: { + data: { + type: Object, + value: {} + } + }, + data: { + attr:{ + src:'', + class:'' + }, + size:{ + w:0, + h:0 + } + }, + lifetimes:{ + attached:function(){ + const _ts = this; + let dataAttr = this.data.data.attr; + _ts.setData({ + attr:{ + src:`${config.latex.api}=${dataAttr.value}&theme=${global._theme}`, + class:`${dataAttr.class} ${dataAttr.class}--${dataAttr.type}` + } + }); + } + }, + methods: { + load:function(e){ + const _ts = this; + let scale = 20, + w = e.detail.width / scale, + h = e.detail.height /scale; + _ts.setData({ + size:{ + w:w, + h:h + } + }); + } + } +}) \ No newline at end of file diff --git a/miniprogram/towxml/latex/latex.json b/miniprogram/towxml/latex/latex.json new file mode 100644 index 0000000..78013bd --- /dev/null +++ b/miniprogram/towxml/latex/latex.json @@ -0,0 +1,5 @@ +{ + "component": true, + "usingComponents": { + } +} \ No newline at end of file diff --git a/miniprogram/towxml/latex/latex.wxml b/miniprogram/towxml/latex/latex.wxml new file mode 100644 index 0000000..2171946 --- /dev/null +++ b/miniprogram/towxml/latex/latex.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/miniprogram/towxml/latex/latex.wxss b/miniprogram/towxml/latex/latex.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram/towxml/parse/highlight/highlight.js b/miniprogram/towxml/parse/highlight/highlight.js new file mode 100644 index 0000000..9172ff0 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/highlight.js @@ -0,0 +1 @@ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return O.test(e)}function i(e){var n,t,r,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",t=y.exec(s))return R(t[1])?t[1]:"no-highlight";for(s=s.split(/\s+/),n=0,r=s.length;n"}function o(e){u+=""}function l(e){("start"===e.event?s:o)(e.node)}for(var c=0,u="",g=[];e.length||r.length;){var f=i();if(u+=n(a.substring(c,f[0].offset)),c=f[0].offset,f===e){g.reverse().forEach(o);do l(f.splice(0,1)[0]),f=i();while(f===e&&f.length&&f[0].offset===c);g.reverse().forEach(s)}else"start"===f[0].event?g.push(f[0].node):g.pop(),l(f.splice(0,1)[0])}return u+n(a.substr(c))}function c(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(n){return s(e,{variants:null},n)})),e.cached_variants||e.endsWithParent&&[s(e)]||[e]}function u(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.keywords=a.keywords||a.beginKeywords,a.keywords){var s={},o=function(n,t){e.case_insensitive&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");s[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.keywords?o("keyword",a.keywords):w(a.keywords).forEach(function(e){o(e,a.keywords[e])}),a.keywords=s}a.lexemesRe=t(a.lexemes||/\w+/,!0),i&&(a.beginKeywords&&(a.begin="\\b("+a.beginKeywords.split(" ").join("|")+")\\b"),a.begin||(a.begin=/\B|\b/),a.beginRe=t(a.begin),a.end||a.endsWithParent||(a.end=/\B|\b/),a.end&&(a.endRe=t(a.end)),a.terminator_end=n(a.end)||"",a.endsWithParent&&i.terminator_end&&(a.terminator_end+=(a.end?"|":"")+i.terminator_end)),a.illegal&&(a.illegalRe=t(a.illegal)),null==a.relevance&&(a.relevance=1),a.contains||(a.contains=[]),a.contains=Array.prototype.concat.apply([],a.contains.map(function(e){return c("self"===e?a:e)})),a.contains.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([a.terminator_end,a.illegal]).map(n).filter(Boolean);a.terminators=l.length?t(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function g(e,t,a,i){function s(e,n){var t,a;for(t=0,a=n.contains.length;t',i+n+s}function E(){var e,t,r,a;if(!N.keywords)return n(O);for(a="",t=0,N.lexemesRe.lastIndex=0,r=N.lexemesRe.exec(O);r;)a+=n(O.substring(t,r.index)),e=c(N,r),e?(y+=e[1],a+=d(e[0],n(r[0]))):a+=n(r[0]),t=N.lexemesRe.lastIndex,r=N.lexemesRe.exec(O);return a+n(O.substr(t))}function v(){var e="string"==typeof N.subLanguage;if(e&&!M[N.subLanguage])return n(O);var t=e?g(N.subLanguage,O,!0,w[N.subLanguage]):f(O,N.subLanguage.length?N.subLanguage:void 0);return N.relevance>0&&(y+=t.relevance),e&&(w[N.subLanguage]=t.top),d(t.language,t.value,!1,!0)}function p(){x+=null!=N.subLanguage?v():E(),O=""}function h(e){x+=e.className?d(e.className,"",!0):"",N=Object.create(e,{parent:{value:N}})}function m(e,n){if(O+=e,null==n)return p(),0;var t=s(n,N);if(t)return t.skip?O+=n:(t.excludeBegin&&(O+=n),p(),t.returnBegin||t.excludeBegin||(O=n)),h(t,n),t.returnBegin?0:n.length;var r=o(N,n);if(r){var a=N;a.skip?O+=n:(a.returnEnd||a.excludeEnd||(O+=n),p(),a.excludeEnd&&(O=n));do N.className&&(x+=C),N.skip||(y+=N.relevance),N=N.parent;while(N!==r.parent);return r.starts&&h(r.starts,""),a.returnEnd?0:n.length}if(l(n,N))throw new Error('Illegal lexeme "'+n+'" for mode "'+(N.className||"")+'"');return O+=n,n.length||1}var b=R(e);if(!b)throw new Error('Unknown language: "'+e+'"');u(b);var _,N=i||b,w={},x="";for(_=N;_!==b;_=_.parent)_.className&&(x=d(_.className,"",!0)+x);var O="",y=0;try{for(var S,A,B=0;;){if(N.terminators.lastIndex=B,S=N.terminators.exec(t),!S)break;A=m(t.substring(B,S.index),S[0]),B=S.index+A}for(m(t.substr(B)),_=N;_.parent;_=_.parent)_.className&&(x+=C);return{relevance:y,value:x,language:e,top:N}}catch(T){if(T.message&&T.message.indexOf("Illegal")!==-1)return{relevance:0,value:n(t)};throw T}}function f(e,t){t=t||L.languages||w(M);var r={relevance:0,value:n(e)},a=r;return t.filter(R).forEach(function(n){var t=g(n,e,!1);t.language=n,t.relevance>a.relevance&&(a=t),t.relevance>r.relevance&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function d(e){return L.tabReplace||L.useBR?e.replace(S,function(e,n){return L.useBR&&"\n"===e?"
":L.tabReplace?n.replace(/\t/g,L.tabReplace):""}):e}function E(e,n,t){var r=n?x[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.indexOf(r)===-1&&a.push(r),a.join(" ").trim()}function v(e){var n,t,r,s,c,u=i(e);a(u)||(L.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,c=n.textContent,r=u?g(u,c,!0):f(c),t=o(n),t.length&&(s=document.createElementNS("http://www.w3.org/1999/xhtml","div"),s.innerHTML=r.value,r.value=l(t,o(s),c)),r.value=d(r.value),e.innerHTML=r.value,e.className=E(e.className,u,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function p(e){L=s(L,e)}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");N.forEach.call(e,v)}}function m(){addEventListener("DOMContentLoaded",h,!1),addEventListener("load",h,!1)}function b(n,t){var r=M[n]=t(e);r.aliases&&r.aliases.forEach(function(e){x[e]=n})}function _(){return w(M)}function R(e){return e=(e||"").toLowerCase(),M[e]||M[x[e]]}var N=[],w=Object.keys,M={},x={},O=/^(no-?highlight|plain|text)$/i,y=/\blang(?:uage)?-([\w-]+)\b/i,S=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="",L={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=g,e.highlightAuto=f,e.fixMarkup=d,e.highlightBlock=v,e.configure=p,e.initHighlighting=h,e.initHighlightingOnLoad=m,e.registerLanguage=b,e.listLanguages=_,e.getLanguage=R,e.inherit=s,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(n,t,r){var a=e.inherit({className:"comment",begin:n,end:t,contains:[]},r||{});return a.contains.push(e.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e}); \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/index.js b/miniprogram/towxml/parse/highlight/index.js new file mode 100644 index 0000000..d01a365 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/index.js @@ -0,0 +1,6 @@ +const config = require('../../config'), + hljs = require('./highlight'); +config.highlight.forEach(item => { + hljs.registerLanguage(item, require(`./languages/${item}`)); +}); +module.exports = hljs; \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/languages/css.js b/miniprogram/towxml/parse/highlight/languages/css.js new file mode 100644 index 0000000..e64a4d8 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/languages/css.js @@ -0,0 +1 @@ +module.exports=function(e){var n="[a-zA-Z-][a-zA-Z0-9_-]*",a={begin:/[A-Z\_\.\-]+\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:n,relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,a]}]}}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/languages/java.js b/miniprogram/towxml/parse/highlight/languages/java.js new file mode 100644 index 0000000..9100ee2 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/languages/java.js @@ -0,0 +1 @@ +module.exports=function(e){var a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+"(<"+a+"(\\s*,\\s*"+a+")*>)?",s="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",t="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",r={className:"number",begin:t,relevance:0};return{aliases:["jsp"],keywords:s,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"("+n+"\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:s,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:s,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},r,{className:"meta",begin:"@[A-Za-z]+"}]}}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/languages/javascript.js b/miniprogram/towxml/parse/highlight/languages/javascript.js new file mode 100644 index 0000000..d949ea6 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/languages/javascript.js @@ -0,0 +1 @@ +module.exports=function(e){var n="[A-Za-z$_][0-9A-Za-z$_]*",a={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},s={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,s]};s.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,r,e.REGEXP_MODE];var t=s.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:a,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:n+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:n,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+n+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:t}]}]},{begin://,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:n}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:t}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/languages/python.js b/miniprogram/towxml/parse/highlight/languages/python.js new file mode 100644 index 0000000..a4415a8 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/languages/python.js @@ -0,0 +1 @@ +module.exports=function(e){var n={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},a={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[a,s]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[a,s]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[s]},{begin:/(fr|rf|f)"/,end:/"/,contains:[s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},r={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},l={className:"params",begin:/\(/,end:/\)/,contains:["self",a,r,i]};return s.contains=[i,r,a],{aliases:["py","gyp"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,r,i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,l,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/highlight/style/github.wxss b/miniprogram/towxml/parse/highlight/style/github.wxss new file mode 100644 index 0000000..156d68f --- /dev/null +++ b/miniprogram/towxml/parse/highlight/style/github.wxss @@ -0,0 +1,77 @@ +.h2w-light .hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} +.h2w-light .hljs-comment, +.h2w-light .hljs-quote { + color: #998; + font-style: italic; +} +.h2w-light .hljs-keyword, +.h2w-light .hljs-selector-tag, +.h2w-light .hljs-subst { + color: #333; + font-weight: bold; +} +.h2w-light .hljs-number, +.h2w-light .hljs-literal, +.h2w-light .hljs-variable, +.h2w-light .hljs-template-variable, +.h2w-light .hljs-tag .hljs-attr { + color: #008080; +} +.h2w-light .hljs-string, +.h2w-light .hljs-doctag { + color: #d14; +} +.h2w-light .hljs-title, +.h2w-light .hljs-section, +.h2w-light .hljs-selector-id { + color: #900; + font-weight: bold; +} +.h2w-light .hljs-subst { + font-weight: normal; +} +.h2w-light .hljs-type, +.h2w-light .hljs-class .hljs-title { + color: #458; + font-weight: bold; +} +.h2w-light .hljs-tag, +.h2w-light .hljs-name, +.h2w-light .hljs-attribute { + color: #000080; + font-weight: normal; +} +.h2w-light .hljs-regexp, +.h2w-light .hljs-link { + color: #009926; +} +.h2w-light .hljs-symbol, +.h2w-light .hljs-bullet { + color: #990073; +} +.h2w-light .hljs-built_in, +.h2w-light .hljs-builtin-name { + color: #0086b3; +} +.h2w-light .hljs-meta { + color: #999; + font-weight: bold; +} +.h2w-light .hljs-deletion { + background: #fdd; +} +.h2w-light .hljs-addition { + background: #dfd; +} +.h2w-light .hljs-emphasis { + font-style: italic; +} +.h2w-light .hljs-strong { + font-weight: bold; +} diff --git a/miniprogram/towxml/parse/highlight/style/monokai.wxss b/miniprogram/towxml/parse/highlight/style/monokai.wxss new file mode 100644 index 0000000..f6e4369 --- /dev/null +++ b/miniprogram/towxml/parse/highlight/style/monokai.wxss @@ -0,0 +1,59 @@ +.h2w-dark .hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; color: #ddd; +} +.h2w-dark .hljs-tag, +.h2w-dark .hljs-keyword, +.h2w-dark .hljs-selector-tag, +.h2w-dark .hljs-literal, +.h2w-dark .hljs-strong, +.h2w-dark .hljs-name { + color: #f92672; +} +.h2w-dark .hljs-code { + color: #66d9ef; +} +.h2w-dark .hljs-class .hljs-title { + color: white; +} +.h2w-dark .hljs-attribute, +.h2w-dark .hljs-symbol, +.h2w-dark .hljs-regexp, +.h2w-dark .hljs-link { + color: #bf79db; +} +.h2w-dark .hljs-string, +.h2w-dark .hljs-bullet, +.h2w-dark .hljs-subst, +.h2w-dark .hljs-title, +.h2w-dark .hljs-section, +.h2w-dark .hljs-emphasis, +.h2w-dark .hljs-type, +.h2w-dark .hljs-built_in, +.h2w-dark .hljs-builtin-name, +.h2w-dark .hljs-selector-attr, +.h2w-dark .hljs-selector-pseudo, +.h2w-dark .hljs-addition, +.h2w-dark .hljs-variable, +.h2w-dark .hljs-template-tag, +.h2w-dark .hljs-template-variable { + color: #a6e22e; +} +.h2w-dark .hljs-comment, +.h2w-dark .hljs-quote, +.h2w-dark .hljs-deletion, +.h2w-dark .hljs-meta { + color: #75715e; +} +.h2w-dark .hljs-keyword, +.h2w-dark .hljs-selector-tag, +.h2w-dark .hljs-literal, +.h2w-dark .hljs-doctag, +.h2w-dark .hljs-title, +.h2w-dark .hljs-section, +.h2w-dark .hljs-type, +.h2w-dark .hljs-selector-id { + font-weight: bold; +} diff --git a/miniprogram/towxml/parse/index.js b/miniprogram/towxml/parse/index.js new file mode 100644 index 0000000..023d7cf --- /dev/null +++ b/miniprogram/towxml/parse/index.js @@ -0,0 +1,107 @@ +const parse2 = require('./parse2/index'), + // parse5 = require('./parse5/index').parse, + config = require('../config'), + + // html与wxml转换关系 + correspondTag = (()=>{ + let result = { + a:'navigator', + todogroup:'checkbox-group', + audio:'audio-player' + }; + + // // 该系列的标签都转换为text + // ['span','b','strong','i','em','code','sub','sup','g-emoji','mark','ins'].forEach(item => { + // result[item] = 'text'; + // }); + + // 该系列小程序原生tag,不需转换 + [...config.wxml,...config.components].forEach(item => { + result[item] = item; + }); + return result; + })(), + + // 元素与html对应的wxml标签名 + getWxmlTag = tagStr => !tagStr ? undefined : correspondTag[tagStr] || 'view', + + // 精简数据,并初始化相关事件等 + initObj = (obj,option)=>{ + const result = { + theme:option.theme || 'light', + _e:{} + }, + events = global._events = {}, + base = option.base; + + // 主题保存到全局 + global._theme = result.theme; + + // 事件添加到全局中,各个组件在触发事件时会从全局调用 + if(option.events){ + for(let key in option.events){ + events[key] = option.events[key]; + }; + }; + + // 遍历原始数据,处理成能解析的数据 + let eachFn; + (eachFn = (arr,obj,_e) => { + obj.child = obj.child || []; + _e.child = _e.child || []; + + arr.forEach(item => { + if(item.type === 'comment'){ + return; + }; + let o = {}, + e = {}; + o.type = e.type = item.type; + o._e = e; + if(item.type === 'text'){ + o.text = e.text = item.data; + }else{ + o.tag = getWxmlTag(item.name); // 转换之后的标签 + // o.tag = o.tag === 'text' ? 'view' : o.tag; + e.tag = item.name; // 原始 + o.attr = item.attribs; + e.attr = JSON.parse(JSON.stringify(item.attribs)); + + o.attr.class = o.attr.class ? `h2w__${item.name} ${o.attr.class}` : `h2w__${item.name}`; + + // 处理资源相对路径 + if(base && o.attr.src){ + let src = o.attr.src; + switch (src.indexOf('//')) { + case 0: + o.attr.src = `https:${src}`; + break; + case -1: + o.attr.src = `${base}${src}`; + break; + }; + }; + + if(item.children){ + eachFn(item.children,o,e); + }; + }; + _e.child.push(e); + obj.child.push(o); + }); + })(obj,result,result._e); + return result; + }; + +module.exports = (str,option) => { + str = (()=>{ + let re = /]*>([\s\S]*)<\/body>/i; + if(re.test(str)){ + let result = re.exec(str); + return result[1] || str; + }else{ + return str; + }; + })(); + return initObj(parse2(str,{decodeEntities:true}),option); +}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/markdown/index.js b/miniprogram/towxml/parse/markdown/index.js new file mode 100644 index 0000000..0b58780 --- /dev/null +++ b/miniprogram/towxml/parse/markdown/index.js @@ -0,0 +1,53 @@ +let hljs; +hljs = require('../highlight/index'); + +const config = require('../../config'), + mdOption = (()=>{ + let result = { + html: true, + xhtmlOut: true, + typographer: true, + breaks: true, + }; + + if(config.highlight.length && hljs){ + result.highlight = (code,lang,callback)=>{ + let lineLen = code.split(/\r|\n/ig).length, + result = hljs.highlightAuto(code).value; + + if(config.showLineNumber){ + let lineStr = (()=>{ + let str = `
    `; + for(let i=0;i${i+1}` + }; + + str += `
`; + return str; + })(); + return lineStr + result; + }; + return result; + } + }; + return result; + })(), + md = require('./markdown')(mdOption); + +// 应用Markdown解析扩展,包括自定义组件(['sub','sup','ins','mark','emoji','todo','latex','yuml','echarts']) +[...config.markdown,...config.components].forEach(item => { + if(!/^audio-player|table|todogroup|img$/.test(item)){ + md.use(require(`./plugins/${item}`)); + }; +}); + +// 定义emoji渲染规则 +md.renderer.rules.emoji = (token,index)=>{ + let item = token[index]; + return `${item.content}`; +}; + +// 导出模块 +module.exports = str => { + return md.render(str); +}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/markdown/markdown.js b/miniprogram/towxml/parse/markdown/markdown.js new file mode 100644 index 0000000..0204f9c --- /dev/null +++ b/miniprogram/towxml/parse/markdown/markdown.js @@ -0,0 +1,4 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownit=e()}}(function(){var e;return function e(r,t,n){function s(i,a){if(!t[i]){if(!r[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[i]={exports:{}};r[i][0].call(u.exports,function(e){var t=r[i][1][e];return s(t?t:e)},u,u.exports,e,r,t,n)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",s="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",o=new RegExp("^(?:"+n+"|"+s+"|||<[?].*?[?]>|]*>|)"),i=new RegExp("^(?:"+n+"|"+s+")");r.exports.HTML_TAG_RE=o,r.exports.HTML_OPEN_CLOSE_TAG_RE=i},{}],4:[function(e,r,t){"use strict";function n(e){return Object.prototype.toString.call(e)}function s(e){return"[object String]"===n(e)}function o(e,r){return y.call(e,r)}function i(e){return Array.prototype.slice.call(arguments,1).forEach(function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach(function(t){e[t]=r[t]})}}),e}function a(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))}function c(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function l(e){if(e>65535){e-=65536;var r=55296+(e>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}function u(e,r){var t=0;return o(w,r)?w[r]:35===r.charCodeAt(0)&&A.test(r)&&(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10),c(t))?l(t):e}function p(e){return e.indexOf("\\")<0?e:e.replace(x,"$1")}function h(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(C,function(e,r,t){return r?r:u(e,t)})}function f(e){return q[e]}function d(e){return D.test(e)?e.replace(/[&<>"]/g,f):e}function m(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function _(e){switch(e){case 9:case 32:return!0}return!1}function g(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function b(e){return E.test(e)}function k(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function v(e){return e.trim().replace(/\s+/g," ").toUpperCase()}var y=Object.prototype.hasOwnProperty,x=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,C=new RegExp(x.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),A=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,w=e("./entities"),D=/[&<>"]/,q={"&":"&","<":"<",">":">",'"':"""},E=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=i,t.isString=s,t.has=o,t.unescapeMd=p,t.unescapeAll=h,t.isValidEntityCode=c,t.fromCodePoint=l,t.escapeHtml=d,t.arrayReplaceAt=a,t.isSpace=_,t.isWhiteSpace=g,t.isMdAsciiPunct=k,t.isPunctChar=b,t.escapeRE=m,t.normalizeReference=v},{"./entities":1,mdurl:58,"uc.micro":65,"uc.micro/categories/P/regex":63}],5:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":6,"./parse_link_label":7,"./parse_link_title":8}],6:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace,s=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var o,i,a=r,c={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;r1)break;if(41===o&&--i<0)break;r++}return a===r?c:(c.str=s(e.slice(a,r)),c.lines=0,c.pos=r,c.ok=!0,c)}},{"../common/utils":4}],7:[function(e,r,t){"use strict";r.exports=function(e,r,t){var n,s,o,i,a=-1,c=e.posMax,l=e.pos;for(e.pos=r+1,n=1;e.pos=t)return c;if(34!==(o=e.charCodeAt(r))&&39!==o&&40!==o)return c;for(r++,40===o&&(o=41);r=0))try{r.hostname=m.toASCII(r.hostname)}catch(e){}return d.encode(d.format(r))}function o(e){var r=d.parse(e,!0);if(r.hostname&&(!r.protocol||k.indexOf(r.protocol)>=0))try{r.hostname=m.toUnicode(r.hostname)}catch(e){}return d.decode(d.format(r))}function i(e,r){if(!(this instanceof i))return new i(e,r);r||a.isString(e)||(r=e||{},e="default"),this.inline=new h,this.block=new p,this.core=new u,this.renderer=new l,this.linkify=new f,this.validateLink=n,this.normalizeLink=s,this.normalizeLinkText=o,this.utils=a,this.helpers=a.assign({},c),this.options={},this.configure(e),r&&this.set(r)}var a=e("./common/utils"),c=e("./helpers"),l=e("./renderer"),u=e("./parser_core"),p=e("./parser_block"),h=e("./parser_inline"),f=e("linkify-it"),d=e("mdurl"),m=e("punycode"),_={default:e("./presets/default"),zero:e("./presets/zero"),commonmark:e("./presets/commonmark")},g=/^(vbscript|javascript|file|data):/,b=/^data:image\/(gif|png|jpeg|webp);/,k=["http:","https:","mailto:"];i.prototype.set=function(e){return a.assign(this.options,e),this},i.prototype.configure=function(e){var r,t=this;if(a.isString(e)&&(r=e,!(e=_[r])))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)}),this},i.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.enable(e,!0))},this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},i.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(r){t=t.concat(this[r].ruler.disable(e,!0))},this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(e){return t.indexOf(e)<0});if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},i.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},i.prototype.parse=function(e,r){if("string"!=typeof e)throw new Error("Input data should be a String");var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},i.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},i.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},i.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=i},{"./common/utils":4,"./helpers":5,"./parser_block":10,"./parser_core":11,"./parser_inline":12,"./presets/commonmark":13,"./presets/default":14,"./presets/zero":15,"./renderer":16,"linkify-it":53,mdurl:58,punycode:60}],10:[function(e,r,t){"use strict";function n(){this.ruler=new s;for(var e=0;e=t))&&!(e.sCount[i]=c){e.line=t;break}for(n=0;n=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},n.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),o=this.ruler2.getRules(""),i=o.length,s=0;s"+i(e[r].content)+""},a.code_block=function(e,r,t,n,s){var o=e[r];return""+i(e[r].content)+"\n"},a.fence=function(e,r,t,n,s){var a,c,l,u,p=e[r],h=p.info?o(p.info).trim():"",f="";return h&&(f=h.split(/\s+/g)[0]),a=t.highlight?t.highlight(p.content,f)||i(p.content):i(p.content),0===a.indexOf(""+a+"\n"):"
"+a+"
\n"},a.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},a.hardbreak=function(e,r,t){return t.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,r){return i(e[r].content)},a.html_block=function(e,r){return e[r].content},a.html_inline=function(e,r){return e[r].content},n.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;r\n":">")},n.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;i=4)return!1;if(62!==e.src.charCodeAt(D++))return!1;if(s)return!0;for(c=d=e.sCount[r]+D-(e.bMarks[r]+e.tShift[r]),32===e.src.charCodeAt(D)?(D++,c++,d++,o=!1,y=!0):9===e.src.charCodeAt(D)?(y=!0,(e.bsCount[r]+d)%4==3?(D++,c++,d++,o=!1):o=!0):y=!1,m=[e.bMarks[r]],e.bMarks[r]=D;D=q,k=[e.sCount[r]],e.sCount[r]=d-c,v=[e.tShift[r]],e.tShift[r]=D-e.bMarks[r],C=e.md.block.ruler.getRules("blockquote"),b=e.parentType,e.parentType="blockquote",f=r+1;f=q));f++)if(62!==e.src.charCodeAt(D++)||l){if(p)break;for(x=!1,a=0,u=C.length;a=q,_.push(e.bsCount[f]),e.bsCount[f]=e.sCount[f]+1+(y?1:0),k.push(e.sCount[f]),e.sCount[f]=d-c,v.push(e.tShift[f]),e.tShift[f]=D-e.bMarks[f]}for(g=e.blkIndent,e.blkIndent=0,A=e.push("blockquote_open","blockquote",1),A.markup=">",A.map=h=[r,0],e.md.block.tokenize(e,r,f),A=e.push("blockquote_close","blockquote",-1),A.markup=">",e.lineMax=w,e.parentType=b,h[1]=e.line,a=0;a=4))break;n++,s=n}return e.line=s,o=e.push("code_block","code",0),o.content=e.getLines(r,s,4+e.blkIndent,!0),o.map=[r,e.line],!0}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(h+3>f)return!1;if(126!==(s=e.src.charCodeAt(h))&&96!==s)return!1;if(c=h,h=e.skipChars(h,s),(o=h-c)<3)return!1;if(u=e.src.slice(c,h),i=e.src.slice(h,f),i.indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;for(a=r;!(++a>=t)&&(h=c=e.bMarks[a]+e.tShift[a],f=e.eMarks[a],!(h=4||(h=e.skipChars(h,s))-c=4)return!1;if(35!==(o=e.src.charCodeAt(l))||l>=u)return!1;for(i=1,o=e.src.charCodeAt(++l);35===o&&l6||ll&&n(e.src.charCodeAt(a-1))&&(u=a),e.line=r+1,c=e.push("heading_open","h"+String(i),1),c.markup="########".slice(0,i),c.map=[r,e.line],c=e.push("inline","",0),c.content=e.src.slice(l,u).trim(),c.map=[r,e.line],c.children=[],c=e.push("heading_close","h"+String(i),-1),c.markup="########".slice(0,i),!0))}},{"../common/utils":4}],22:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(l++))&&45!==o&&95!==o)return!1;for(i=1;l|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;s=4)return!1;for(h=e.parentType,e.parentType="paragraph";f3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f],l=e.eMarks[f],c=l))){u=61===p?1:2;break}if(!(e.sCount[f]<0)){for(s=!1,o=0,i=d.length;o=o)return-1;if((t=e.src.charCodeAt(s++))<48||t>57)return-1;for(;;){if(s>=o)return-1;t=e.src.charCodeAt(s++);{if(!(t>=48&&t<=57)){if(41===t||46===t)break;return-1}if(s-n>=10)return-1}}return s=4)return!1;if(a&&"paragraph"===e.parentType&&e.tShift[r]>=e.blkIndent&&(M=!0),(F=s(e,r))>=0){if(d=!0,z=e.bMarks[r]+e.tShift[r],v=Number(e.src.substr(z,F-z-1)),M&&1!==v)return!1}else{if(!((F=n(e,r))>=0))return!1;d=!1}if(M&&e.skipSpaces(F)>=e.eMarks[r])return!1;if(k=e.src.charCodeAt(F-1),a)return!0;for(b=e.tokens.length,d?(R=e.push("ordered_list_open","ol",1),1!==v&&(R.attrs=[["start",v]])):R=e.push("bullet_list_open","ul",1),R.map=g=[r,0],R.markup=String.fromCharCode(k),x=r,L=!1,I=e.md.block.ruler.getRules("list"),D=e.parentType,e.parentType="list";x=y?1:C-f,h>4&&(h=1),p=f+h,R=e.push("list_item_open","li",1),R.markup=String.fromCharCode(k),R.map=m=[r,0],A=e.blkIndent,E=e.tight,q=e.tShift[r],w=e.sCount[r],e.blkIndent=p,e.tight=!0,e.tShift[r]=l-e.bMarks[r],e.sCount[r]=C,l>=y&&e.isEmpty(r+1)?e.line=Math.min(e.line+2,t):e.md.block.tokenize(e,r,t,!0),e.tight&&!L||(B=!1),L=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=A,e.tShift[r]=q,e.sCount[r]=w,e.tight=E,R=e.push("list_item_close","li",-1),R.markup=String.fromCharCode(k),x=r=e.line,m[1]=x,l=e.bMarks[r],x>=t)break;if(e.sCount[x]3||e.sCount[c]<0)){for(n=!1,s=0,o=l.length;s=4)return!1;if(91!==e.src.charCodeAt(C))return!1;for(;++C3||e.sCount[w]<0)){for(k=!1,p=0,h=v.length;p0&&this.level++,this.tokens.push(n),n},n.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},n.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;er;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},n.prototype.skipChars=function(e,r){for(var t=this.src.length;et;)if(r!==this.src.charCodeAt(--e))return e+1;return e},n.prototype.getLines=function(e,r,t,n){var s,i,a,c,l,u,p,h=e;if(e>=r)return"";for(u=new Array(r-e),s=0;ht?new Array(i-t+1).join(" ")+this.src.slice(c,l):this.src.slice(c,l)}return u.join("")},n.prototype.Token=s,r.exports=n},{"../common/utils":4,"../token":51}],29:[function(e,r,t){"use strict";function n(e,r){var t=e.bMarks[r]+e.blkIndent,n=e.eMarks[r];return e.src.substr(t,n-t)}function s(e){var r,t=[],n=0,s=e.length,o=0,i=0,a=!1,c=0;for(r=e.charCodeAt(n);nt)return!1;if(p=r+1,e.sCount[p]=4)return!1;if((l=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(a=e.src.charCodeAt(l++))&&45!==a&&58!==a)return!1;for(;l=4)return!1;if(h=s(c.replace(/^\||\|$/g,"")),(f=h.length)>m.length)return!1;if(i)return!0;for(d=e.push("table_open","table",1),d.map=g=[r,0],d=e.push("thead_open","thead",1),d.map=[r,r+1],d=e.push("tr_open","tr",1),d.map=[r,r+1],u=0;u=4);p++){for(h=s(c.replace(/^\||\|$/g,"")),d=e.push("tr_open","tr",1),u=0;u\s]/i.test(e)}function s(e){return/^<\/a\s*>/i.test(e)}var o=e("../common/utils").arrayReplaceAt;r.exports=function(e){var r,t,i,a,c,l,u,p,h,f,d,m,_,g,b,k,v,y=e.tokens;if(e.md.options.linkify)for(t=0,i=y.length;t=0;r--)if(l=a[r],"link_close"!==l.type){if("html_inline"===l.type&&(n(l.content)&&_>0&&_--,s(l.content)&&_++),!(_>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(h=l.content,v=e.md.linkify.match(h),u=[],m=l.level,d=0,p=0;pd&&(c=new e.Token("text","",0),c.content=h.slice(d,f),c.level=m,u.push(c)),c=new e.Token("link_open","a",1),c.attrs=[["href",b]],c.level=m++,c.markup="linkify",c.info="auto",u.push(c),c=new e.Token("text","",0),c.content=k,c.level=m,u.push(c),c=new e.Token("link_close","a",-1),c.level=--m,c.markup="linkify",c.info="auto",u.push(c),d=v[p].lastIndex);d=0;r--)t=e[r],"text"!==t.type||s||(t.content=t.content.replace(/\((c|tm|r|p)\)/gi,n)),"link_open"===t.type&&"auto"===t.info&&s--,"link_close"===t.type&&"auto"===t.info&&s++}function o(e){var r,t,n=0;for(r=e.length-1;r>=0;r--)t=e[r],"text"!==t.type||n||i.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}var i=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,a=/\((c|tm|r|p)\)/i,c={c:"\xa9",r:"\xae",p:"\xa7",tm:"\u2122"};r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(a.test(e.tokens[r].content)&&s(e.tokens[r].children),i.test(e.tokens[r].content)&&o(e.tokens[r].children))}},{}],35:[function(e,r,t){"use strict";function n(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function s(e,r){var t,s,c,u,p,h,f,d,m,_,g,b,k,v,y,x,C,A,w,D,q;for(w=[],t=0;t=0&&!(w[C].level<=f);C--);if(w.length=C+1,"text"===s.type){c=s.content,p=0,h=c.length;e:for(;p=0)m=c.charCodeAt(u.index-1);else for(C=t-1;C>=0;C--)if("text"===e[C].type){m=e[C].content.charCodeAt(e[C].content.length-1);break}if(_=32,p=48&&m<=57&&(x=y=!1),y&&x&&(y=!1,x=b),y||x){if(x)for(C=w.length-1;C>=0&&(d=w[C],!(w[C].level=0;r--)"inline"===e.tokens[r].type&&c.test(e.tokens[r].content)&&s(e.tokens[r].children,e)}},{"../common/utils":4}],36:[function(e,r,t){"use strict";function n(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}var s=e("../token");n.prototype.Token=s,r.exports=n},{"../token":51}],37:[function(e,r,t){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,s=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,i,a,c,l,u=e.pos;return 60===e.src.charCodeAt(u)&&(t=e.src.slice(u),!(t.indexOf(">")<0)&&(s.test(t)?(o=t.match(s),a=o[0].slice(1,-1),c=e.md.normalizeLink(a),!!e.md.validateLink(c)&&(r||(l=e.push("link_open","a",1),l.attrs=[["href",c]],l.markup="autolink",l.info="auto",l=e.push("text","",0),l.content=e.md.normalizeLinkText(a),l=e.push("link_close","a",-1),l.markup="autolink",l.info="auto"),e.pos+=o[0].length,!0)):!!n.test(t)&&(i=t.match(n),a=i[0].slice(1,-1),c=e.md.normalizeLink("mailto:"+a),!!e.md.validateLink(c)&&(r||(l=e.push("link_open","a",1),l.attrs=[["href",c]],l.markup="autolink",l.info="auto",l=e.push("text","",0),l.content=e.md.normalizeLinkText(a),l=e.push("link_close","a",-1),l.markup="autolink",l.info="auto"),e.pos+=i[0].length,!0))))}},{}],38:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(t=c,c++,n=e.posMax;c=0;){if(s=o[t],s.open&&s.marker===n.marker&&s.end<0&&s.level===n.level){var a=(s.close||n.open)&&void 0!==s.length&&void 0!==n.length&&(s.length+n.length)%3==0;if(!a){n.jump=r-t,n.open=!1,s.end=r,s.jump=0;break}}t-=s.jump+1}}},{}],40:[function(e,r,t){"use strict";r.exports.tokenize=function(e,r){var t,n,s,o=e.pos,i=e.src.charCodeAt(o);if(r)return!1;if(95!==i&&42!==i)return!1;for(n=e.scanDelims(e.pos,42===i),t=0;t?@[]^_`{|}~-".split("").forEach(function(e){s[e.charCodeAt(0)]=1}),r.exports=function(e,r){var t,o=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(++o=97&&r<=122}var s=e("../common/html_re").HTML_TAG_RE;r.exports=function(e,r){var t,o,i,a,c=e.pos;return!!e.md.options.html&&(i=e.posMax,!(60!==e.src.charCodeAt(c)||c+2>=i)&&(!(33!==(t=e.src.charCodeAt(c+1))&&63!==t&&47!==t&&!n(t))&&(!!(o=e.src.slice(c).match(s))&&(r||(a=e.push("html_inline","",0),a.content=e.src.slice(c,c+o[0].length)),e.pos+=o[0].length,!0))))}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f,d,m,_,g="",b=e.pos,k=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=c+1)=k)return!1;for(_=u,h=e.md.helpers.parseLinkDestination(e.src,u,e.posMax),h.ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?u=h.pos:g=""),_=u;u=k||41!==e.src.charCodeAt(u))return e.pos=b,!1;u++}else{if(void 0===e.env.references)return!1;if(u=0?a=e.src.slice(_,u++):u=c+1):u=c+1,a||(a=e.src.slice(l,c)),!(p=e.env.references[n(a)]))return e.pos=b,!1;g=p.href,f=p.title}return r||(i=e.src.slice(l,c),e.md.inline.parse(i,e.md,e.env,m=[]),d=e.push("image","img",0),d.attrs=t=[["src",g],["alt",""]],d.children=m,d.content=i,f&&t.push(["title",f])),e.pos=u,e.posMax=k,!0}},{"../common/utils":4}],45:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f,d="",m=e.pos,_=e.posMax,g=e.pos,b=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(a=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((l=a+1)<_&&40===e.src.charCodeAt(l)){for(b=!1,l++;l<_&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);if(l>=_)return!1;for(g=l,u=e.md.helpers.parseLinkDestination(e.src,l,e.posMax),u.ok&&(d=e.md.normalizeLink(u.str),e.md.validateLink(d)?l=u.pos:d=""),g=l;l<_&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);if(u=e.md.helpers.parseLinkTitle(e.src,l,e.posMax),l<_&&g!==l&&u.ok)for(h=u.str,l=u.pos;l<_&&(o=e.src.charCodeAt(l),s(o)||10===o);l++);else h="";(l>=_||41!==e.src.charCodeAt(l))&&(b=!0),l++}if(b){if(void 0===e.env.references)return!1;if(l<_&&91===e.src.charCodeAt(l)?(g=l+1,l=e.md.helpers.parseLinkLabel(e,l),l>=0?i=e.src.slice(g,l++):l=a+1):l=a+1,i||(i=e.src.slice(c,a)),!(p=e.env.references[n(i)]))return e.pos=m,!1;d=p.href,h=p.title}return r||(e.pos=c,e.posMax=a,f=e.push("link_open","a",1),f.attrs=t=[["href",d]],h&&t.push(["title",h]),e.md.inline.tokenize(e),f=e.push("link_close","a",-1)),e.pos=l,e.posMax=_,!0}},{"../common/utils":4}],46:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r){var t,s,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;for(t=e.pending.length-1,s=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),o++;o0&&this.level++,this.pendingLevel=this.level,this.tokens.push(n),n},n.prototype.scanDelims=function(e,r){var t,n,s,c,l,u,p,h,f,d=e,m=!0,_=!0,g=this.posMax,b=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;d=0&&(t=this.attrs[r][1]),t},n.prototype.attrJoin=function(e,r){var t=this.attrIndex(e);t<0?this.attrPush([e,r]):this.attrs[t][1]=this.attrs[t][1]+" "+r},r.exports=n},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",awconint:"\u2233",awint:"\u2a11",backcong:"\u224c",backepsilon:"\u03f6",backprime:"\u2035",backsim:"\u223d",backsimeq:"\u22cd",Backslash:"\u2216",Barv:"\u2ae7",barvee:"\u22bd",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23b5",bbrktbrk:"\u23b6",bcong:"\u224c",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201e",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29b0",bepsi:"\u03f6",bernou:"\u212c",Bernoullis:"\u212c",Beta:"\u0392",beta:"\u03b2",beth:"\u2136",between:"\u226c",Bfr:"\ud835\udd05",bfr:"\ud835\udd1f",bigcap:"\u22c2",bigcirc:"\u25ef",bigcup:"\u22c3",bigodot:"\u2a00",bigoplus:"\u2a01",bigotimes:"\u2a02",bigsqcup:"\u2a06",bigstar:"\u2605",bigtriangledown:"\u25bd",bigtriangleup:"\u25b3",biguplus:"\u2a04",bigvee:"\u22c1",bigwedge:"\u22c0",bkarow:"\u290d",blacklozenge:"\u29eb",blacksquare:"\u25aa",blacktriangle:"\u25b4",blacktriangledown:"\u25be",blacktriangleleft:"\u25c2",blacktriangleright:"\u25b8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20e5",bnequiv:"\u2261\u20e5",bNot:"\u2aed",bnot:"\u2310",Bopf:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",capcup:"\u2a47",capdot:"\u2a40",CapitalDifferentialD:"\u2145",caps:"\u2229\ufe00",caret:"\u2041",caron:"\u02c7",Cayleys:"\u212d",ccaps:"\u2a4d",Ccaron:"\u010c",ccaron:"\u010d",Ccedil:"\xc7",ccedil:"\xe7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",circeq:"\u2257",circlearrowleft:"\u21ba",circlearrowright:"\u21bb",circledast:"\u229b",circledcirc:"\u229a",circleddash:"\u229d",CircleDot:"\u2299",circledR:"\xae",circledS:"\u24c8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",dHar:"\u2965",dharl:"\u21c3",dharr:"\u21c2",DiacriticalAcute:"\xb4",DiacriticalDot:"\u02d9",DiacriticalDoubleAcute:"\u02dd",DiacriticalGrave:"`",DiacriticalTilde:"\u02dc",diam:"\u22c4",diamond:"\u22c4",Diamond:"\u22c4",diamondsuit:"\u2666",diams:"\u2666",die:"\xa8",DifferentialD:"\u2146",digamma:"\u03dd",disin:"\u22f2",div:"\xf7",divide:"\xf7",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",Dot:"\xa8",dot:"\u02d9",DotDot:"\u20dc",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22a1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222f",DoubleDot:"\xa8",DoubleDownArrow:"\u21d3",DoubleLeftArrow:"\u21d0",DoubleLeftRightArrow:"\u21d4",DoubleLeftTee:"\u2ae4",DoubleLongLeftArrow:"\u27f8",DoubleLongLeftRightArrow:"\u27fa",DoubleLongRightArrow:"\u27f9",DoubleRightArrow:"\u21d2",DoubleRightTee:"\u22a8",DoubleUpArrow:"\u21d1",DoubleUpDownArrow:"\u21d5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",DScy:"\u0405",dscy:"\u0455",dsol:"\u29f6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22f1",dtri:"\u25bf",dtrif:"\u25be",duarr:"\u21f5",duhar:"\u296f",dwangle:"\u29a6",DZcy:"\u040f",dzcy:"\u045f",dzigrarr:"\u27ff",Eacute:"\xc9",eacute:"\xe9",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",Egrave:"\xc8",egrave:"\xe8",egs:"\u2a96",egsdot:"\u2a98",el:"\u2a99",Element:"\u2208",elinters:"\u23e7",ell:"\u2113",els:"\u2a95",elsdot:"\u2a97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25fb",emptyv:"\u2205",EmptyVerySmallSquare:"\u25ab",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014a",eng:"\u014b",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\ud835\udd3c",eopf:"\ud835\udd56",epar:"\u22d5",eparsl:"\u29e3",eplus:"\u2a71",epsi:"\u03b5",Epsilon:"\u0395",epsilon:"\u03b5",epsiv:"\u03f5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2a96",eqslantless:"\u2a95",Equal:"\u2a75",equals:"=",EqualTilde:"\u2242",equest:"\u225f",Equilibrium:"\u21cc",equiv:"\u2261",equivDD:"\u2a78",eqvparsl:"\u29e5",erarr:"\u2971",erDot:"\u2253",escr:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\ufb03",fflig:"\ufb00",ffllig:"\ufb04",Ffr:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",gacute:"\u01f5",Gamma:"\u0393",gamma:"\u03b3",Gammad:"\u03dc",gammad:"\u03dd",gap:"\u2a86",Gbreve:"\u011e",gbreve:"\u011f",Gcedil:"\u0122",Gcirc:"\u011c",gcirc:"\u011d",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",gtdot:"\u22d7",gtlPar:"\u2995",gtquest:"\u2a7c",gtrapprox:"\u2a86",gtrarr:"\u2978",gtrdot:"\u22d7",gtreqless:"\u22db",gtreqqless:"\u2a8c",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\ufe00",gvnE:"\u2269\ufe00",Hacek:"\u02c7",hairsp:"\u200a",half:"\xbd",hamilt:"\u210b",HARDcy:"\u042a",hardcy:"\u044a",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105",in:"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba",int:"\u222b",Int:"\u222c",integers:"\u2124",Integral:"\u222b",intercal:"\u22ba",Intersection:"\u22c2",intlarhk:"\u2a17",intprod:"\u2a3c",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012e",iogon:"\u012f",Iopf:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",isin:"\u2208",isindot:"\u22f5",isinE:"\u22f9",isins:"\u22f4",isinsv:"\u22f3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xcf",iuml:"\xef",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41", +jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298b",lbrksld:"\u298f",lbrkslu:"\u298d",Lcaron:"\u013d",lcaron:"\u013e",Lcedil:"\u013b",lcedil:"\u013c",lceil:"\u2308",lcub:"{",Lcy:"\u041b",lcy:"\u043b",ldca:"\u2936",ldquo:"\u201c",ldquor:"\u201e",ldrdhar:"\u2967",ldrushar:"\u294b",ldsh:"\u21b2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",lesdot:"\u2a7f",lesdoto:"\u2a81",lesdotor:"\u2a83",lesg:"\u22da\ufe00",lesges:"\u2a93",lessapprox:"\u2a85",lessdot:"\u22d6",lesseqgtr:"\u22da",lesseqqgtr:"\u2a8b",LessEqualGreater:"\u22da",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2aa1",lesssim:"\u2272",LessSlantEqual:"\u2a7d",LessTilde:"\u2272",lfisht:"\u297c",lfloor:"\u230a",Lfr:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",loplus:"\u2a2d",lotimes:"\u2a34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25ca",lozenge:"\u25ca",lozf:"\u29eb",lpar:"(",lparlt:"\u2993",lrarr:"\u21c6",lrcorner:"\u231f",lrhar:"\u21cb",lrhard:"\u296d",lrm:"\u200e",lrtri:"\u22bf",lsaquo:"\u2039",lscr:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",ltdot:"\u22d6",lthree:"\u22cb",ltimes:"\u22c9",ltlarr:"\u2976",ltquest:"\u2a7b",ltri:"\u25c3",ltrie:"\u22b4",ltrif:"\u25c2",ltrPar:"\u2996",lurdshar:"\u294a",luruhar:"\u2966",lvertneqq:"\u2268\ufe00",lvnE:"\u2268\ufe00",macr:"\xaf",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21a6",mapsto:"\u21a6",mapstodown:"\u21a7",mapstoleft:"\u21a4",mapstoup:"\u21a5",marker:"\u25ae",mcomma:"\u2a29",Mcy:"\u041c",mcy:"\u043c",mdash:"\u2014",mDDot:"\u223a",measuredangle:"\u2221",MediumSpace:"\u205f",Mellintrf:"\u2133",Mfr:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",mstpos:"\u223e",Mu:"\u039c",mu:"\u03bc",multimap:"\u22b8",mumap:"\u22b8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20d2",nap:"\u2249",napE:"\u2a70\u0338",napid:"\u224b\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266e",naturals:"\u2115",natur:"\u266e",nbsp:"\xa0",nbump:"\u224e\u0338",nbumpe:"\u224f\u0338",ncap:"\u2a43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2a6d\u0338",ncup:"\u2a42",Ncy:"\u041d",ncy:"\u043d",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200b",NegativeThickSpace:"\u200b",NegativeThinSpace:"\u200b",NegativeVeryThinSpace:"\u200b",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226b",NestedLessLess:"\u226a",NewLine:"\n",nexist:"\u2204",nexists:"\u2204",Nfr:"\ud835\udd11",nfr:"\ud835\udd2b",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2a7e\u0338",nges:"\u2a7e\u0338",nGg:"\u22d9\u0338",ngsim:"\u2275",nGt:"\u226b\u20d2",ngt:"\u226f",ngtr:"\u226f",nGtv:"\u226b\u0338",nharr:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2a7d\u0338",nles:"\u2a7d\u0338",nless:"\u226e",nLl:"\u22d8\u0338",nlsim:"\u2274",nLt:"\u226a\u20d2",nlt:"\u226e",nltri:"\u22ea",nltrie:"\u22ec",nLtv:"\u226a\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xa0",nopf:"\ud835\udd5f",Nopf:"\u2115",Not:"\u2aec",not:"\xac",NotCongruent:"\u2262",NotCupCap:"\u226d",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226f",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226b\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2a7e\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224e\u0338",NotHumpEqual:"\u224f\u0338",notin:"\u2209",notindot:"\u22f5\u0338",notinE:"\u22f9\u0338",notinva:"\u2209",notinvb:"\u22f7",notinvc:"\u22f6",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",NotLeftTriangleEqual:"\u22ec",NotLess:"\u226e",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226a\u0338",NotLessSlantEqual:"\u2a7d\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2aa2\u0338",NotNestedLessLess:"\u2aa1\u0338",notni:"\u220c",notniva:"\u220c",notnivb:"\u22fe",notnivc:"\u22fd",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2aaf\u0338",NotPrecedesSlantEqual:"\u22e0",NotReverseElement:"\u220c",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",NotRightTriangleEqual:"\u22ed",NotSquareSubset:"\u228f\u0338",NotSquareSubsetEqual:"\u22e2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22e3",NotSubset:"\u2282\u20d2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2ab0\u0338",NotSucceedsSlantEqual:"\u22e1",NotSucceedsTilde:"\u227f\u0338",NotSuperset:"\u2283\u20d2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22e2",nsqsupe:"\u22e3",nsub:"\u2284",nsubE:"\u2ac5\u0338",nsube:"\u2288",nsubset:"\u2282\u20d2",nsubseteq:"\u2288",nsubseteqq:"\u2ac5\u0338",nsucc:"\u2281",nsucceq:"\u2ab0\u0338",nsup:"\u2285",nsupE:"\u2ac6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20d2",nsupseteq:"\u2289",nsupseteqq:"\u2ac6\u0338",ntgl:"\u2279",Ntilde:"\xd1",ntilde:"\xf1",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",nvge:"\u2265\u20d2",nvgt:">\u20d2",nvHarr:"\u2904",nvinfin:"\u29de",nvlArr:"\u2902",nvle:"\u2264\u20d2",nvlt:"<\u20d2",nvltrie:"\u22b4\u20d2",nvrArr:"\u2903",nvrtrie:"\u22b5\u20d2",nvsim:"\u223c\u20d2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",Ograve:"\xd2",ograve:"\xf2",ogt:"\u29c1",ohbar:"\u29b5",ohm:"\u03a9",oint:"\u222e",olarr:"\u21ba",olcir:"\u29be",olcross:"\u29bb",oline:"\u203e",olt:"\u29c0",Omacr:"\u014c",omacr:"\u014d",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",omid:"\u29b6",ominus:"\u2296",Oopf:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298c",rbrksld:"\u298e",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201d",rdquor:"\u201d",rdsh:"\u21b3",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",rsh:"\u21b1",Rsh:"\u21b1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22cc",rtimes:"\u22ca",rtri:"\u25b9",rtrie:"\u22b5",rtrif:"\u25b8",rtriltri:"\u29ce",RuleDelayed:"\u29f4",ruluhar:"\u2968",rx:"\u211e",Sacute:"\u015a",sacute:"\u015b",sbquo:"\u201a",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",sfrown:"\u2322",sharp:"\u266f",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sigmav:"\u03c2",sim:"\u223c",simdot:"\u2a6a",sime:"\u2243",simeq:"\u2243",simg:"\u2a9e",simgE:"\u2aa0",siml:"\u2a9d",simlE:"\u2a9f",simne:"\u2246",simplus:"\u2a24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2a33",smeparsl:"\u29e4",smid:"\u2223",smile:"\u2323",smt:"\u2aaa",smte:"\u2aac",smtes:"\u2aac\ufe00",SOFTcy:"\u042c",softcy:"\u044c",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\ufe00",sqcup:"\u2294",sqcups:"\u2294\ufe00",Sqrt:"\u221a",sqsub:"\u228f",sqsube:"\u2291",sqsubset:"\u228f",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",succcurlyeq:"\u227d",Succeeds:"\u227b",SucceedsEqual:"\u2ab0",SucceedsSlantEqual:"\u227d",SucceedsTilde:"\u227f",succeq:"\u2ab0",succnapprox:"\u2aba",succneqq:"\u2ab6",succnsim:"\u22e9",succsim:"\u227f",SuchThat:"\u220b",sum:"\u2211",Sum:"\u2211",sung:"\u266a",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",supdot:"\u2abe",supdsub:"\u2ad8",supE:"\u2ac6",supe:"\u2287",supedot:"\u2ac4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27c9",suphsub:"\u2ad7",suplarr:"\u297b",supmult:"\u2ac2",supnE:"\u2acc",supne:"\u228b",supplus:"\u2ac0",supset:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:"\t",target:"\u2316",Tau:"\u03a4",tau:"\u03c4",tbrk:"\u23b4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20db",telrec:"\u2315",Tfr:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",topfork:"\u2ada",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25b5",triangledown:"\u25bf",triangleleft:"\u25c3",trianglelefteq:"\u22b4",triangleq:"\u225c",triangleright:"\u25b9",trianglerighteq:"\u22b5",tridot:"\u25ec",trie:"\u225c",triminus:"\u2a3a",TripleDot:"\u20db",triplus:"\u2a39",trisb:"\u29cd",tritime:"\u2a3b",trpezium:"\u23e2",Tscr:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",Ugrave:"\xd9",ugrave:"\xf9",uHar:"\u2963",uharl:"\u21bf",uharr:"\u21be",uhblk:"\u2580",ulcorn:"\u231c",ulcorner:"\u231c",ulcrop:"\u230f",ultri:"\u25f8",Umacr:"\u016a",umacr:"\u016b",uml:"\xa8",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017a",Zcaron:"\u017d",zcaron:"\u017e",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017b",zdot:"\u017c",zeetrf:"\u2128",ZeroWidthSpace:"\u200b",Zeta:"\u0396",zeta:"\u03b6",zfr:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){return Array.prototype.slice.call(arguments,1).forEach(function(r){r&&Object.keys(r).forEach(function(t){e[t]=r[t]})}),e}function s(e){return Object.prototype.toString.call(e)}function o(e){return"[object String]"===s(e)}function i(e){return"[object Object]"===s(e)}function a(e){return"[object RegExp]"===s(e)}function c(e){return"[object Function]"===s(e)}function l(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function u(e){return Object.keys(e||{}).reduce(function(e,r){return e||b.hasOwnProperty(r)},!1)}function p(e){e.__index__=-1,e.__text_cache__=""}function h(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}function f(){return function(e,r){r.normalize(e)}}function d(r){function t(e){return e.replace("%TLDS%",s.src_tlds)}function n(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}var s=r.re=e("./lib/re")(r.__opts__),u=r.__tlds__.slice();r.onCompile(),r.__tlds_replaced__||u.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),u.push(s.src_xn),s.src_tlds=u.join("|"),s.email_fuzzy=RegExp(t(s.tpl_email_fuzzy),"i"),s.link_fuzzy=RegExp(t(s.tpl_link_fuzzy),"i"),s.link_no_ip_fuzzy=RegExp(t(s.tpl_link_no_ip_fuzzy),"i"),s.host_fuzzy_test=RegExp(t(s.tpl_host_fuzzy_test),"i");var d=[];r.__compiled__={},Object.keys(r.__schemas__).forEach(function(e){var t=r.__schemas__[e];if(null!==t){var s={validate:null,link:null};return r.__compiled__[e]=s,i(t)?(a(t.validate)?s.validate=h(t.validate):c(t.validate)?s.validate=t.validate:n(e,t),void(c(t.normalize)?s.normalize=t.normalize:t.normalize?n(e,t):s.normalize=f())):o(t)?void d.push(e):void n(e,t)}}),d.forEach(function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)}),r.__compiled__[""]={validate:null,normalize:f()};var m=Object.keys(r.__compiled__).filter(function(e){return e.length>0&&r.__compiled__[e]}).map(l).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+s.src_ZPCc+"))("+m+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+s.src_ZPCc+"))("+m+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),p(r)}function m(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function _(e,r){var t=new m(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function g(e,r){if(!(this instanceof g))return new g(e,r);r||u(e)&&(r=e,e={}),this.__opts__=n({},b,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},k,e),this.__compiled__={},this.__tlds__=v,this.__tlds_replaced__=!1,this.re={},d(this)}var b={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1},k={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:r>=3&&"/"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},v="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");g.prototype.add=function(e,r){return this.__schemas__[e]=r,d(this),this},g.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},g.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),this.__index__>=0},g.prototype.pretest=function(e){return this.re.pretest.test(e)},g.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},g.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(_(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(_(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},g.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,r,t){return e!==t[r-1]}).reverse(),d(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,d(this),this)},g.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},g.prototype.onCompile=function(){},r.exports=g},{"./lib/re":54}],54:[function(e,r,t){"use strict";r.exports=function(r){var t={};t.src_Any=e("uc.micro/properties/Any/regex").source,t.src_Cc=e("uc.micro/categories/Cc/regex").source,t.src_Z=e("uc.micro/categories/Z/regex").source,t.src_P=e("uc.micro/categories/P/regex").source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><\uff5c]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(r&&r["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-(?!-)|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|[><\uff5c]|\\(|"+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},{ +"uc.micro/categories/Cc/regex":61,"uc.micro/categories/P/regex":63,"uc.micro/categories/Z/regex":64,"uc.micro/properties/Any/regex":66}],55:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),n.push(t);for(r=0;r=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240==(248&s)&&r+91114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l})}var o={};s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";function n(e){var r,t,n=o[e];if(n)return n;for(n=o[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?n.push(t):n.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r=55296&&a<=57343){if(a>=55296&&a<=56319&&o+1=56320&&c<=57343){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}var o={};s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",r+=e.hostname&&e.hostname.indexOf(":")!==-1?"["+e.hostname+"]":e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}function s(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n","\t"],l=["{","}","|","\\","^","`"].concat(c),u=["'"].concat(l),p=["%","/","?",";","#"].concat(u),h=["/","?","#"],f={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,s,i,c,l=e;if(l=l.trim(),!r&&1===e.split("#").length){var u=a.exec(l);if(u)return this.pathname=u[1],u[2]&&(this.search=u[2]),this}var m=o.exec(l);if(m&&(m=m[0],s=m.toLowerCase(),this.protocol=m,l=l.substr(m.length)),(r||m||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===l.substr(0,2))||m&&f[m]||(l=l.substr(2),this.slashes=!0)),!f[m]&&(c||m&&!d[m])){var _=-1;for(t=0;t127?"x":x[A];if(!C.match(/^[+a-z0-9A-Z_-]{0,63}$/)){var D=y.slice(0,t),q=y.slice(t+1),E=x.match(/^([+a-z0-9A-Z_-]{0,63})(.*)$/);E&&(D.push(E[1]),q.unshift(E[2])),q.length&&(l=q.join(".")+l),this.hostname=D.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),v&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var S=l.indexOf("#");S!==-1&&(this.hash=l.substr(S),l=l.slice(0,S));var F=l.indexOf("?");return F!==-1&&(this.search=l.substr(F),l=l.slice(0,F)),l&&(this.pathname=l),d[s]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=i.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=s},{}],60:[function(r,t,n){(function(r){!function(s){function o(e){throw new RangeError(w[e])}function i(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function a(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),e=e.replace(/[\x2E\u3002\uFF0E\uFF61]/g,"."),n+i(e.split("."),r).join(".")}function c(e){for(var r,t,n=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(e-=65536,r+=q(e>>>10&1023|55296),e=56320|1023&e),r+=q(e)}).join("")}function u(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:36}function p(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function h(e,r,t){var n=0;for(e=t?D(e/700):e>>1,e+=D(e/r);e>455;n+=36)e=D(e/35);return D(n+36*e/(e+38))}function f(e){var r,t,n,s,i,a,c,p,f,d,m=[],_=e.length,g=0,b=128,k=72;for(t=e.lastIndexOf("-"),t<0&&(t=0),n=0;n=128&&o("not-basic"),m.push(e.charCodeAt(n));for(s=t>0?t+1:0;s<_;){for(i=g,a=1,c=36;s>=_&&o("invalid-input"),p=u(e.charCodeAt(s++)),(p>=36||p>D((x-g)/a))&&o("overflow"),g+=p*a,f=c<=k?1:c>=k+26?26:c-k,!(pD(x/d)&&o("overflow"),a*=d;r=m.length+1,k=h(g-i,r,0==i),D(g/r)>x-b&&o("overflow"),b+=D(g/r),g%=r,m.splice(g++,0,b)}return l(m)}function d(e){var r,t,n,s,i,a,l,u,f,d,m,_,g,b,k,v=[];for(e=c(e),_=e.length,r=128,t=0,i=72,a=0;a<_;++a)(m=e[a])<128&&v.push(q(m));for(n=s=v.length,s&&v.push("-");n<_;){for(l=x,a=0;a<_;++a)(m=e[a])>=r&&mD((x-t)/g)&&o("overflow"),t+=(l-r)*g,r=l,a=0;a<_;++a)if(m=e[a],mx&&o("overflow"),m==r){for(u=t,f=36;d=f<=i?1:f>=i+26?26:f-i,!(u= 0x80 (not a basic code point)","invalid-input":"Invalid input"},D=Math.floor,q=String.fromCharCode;if(v={version:"1.4.1",ucs2:{decode:c,encode:l},decode:f,encode:d,toASCII:_,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return v});else if(g&&b)if(t.exports==g)b.exports=v;else for(y in v)v.hasOwnProperty(y)&&(g[y]=v[y]);else s.punycode=v}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],61:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],62:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],63:[function(e,r,t){r.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E44\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD807[\uDC41-\uDC45\uDC70\uDC71]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},{}],64:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/},{}],65:[function(e,r,t){"use strict";t.Any=e("./properties/Any/regex"),t.Cc=e("./categories/Cc/regex"),t.Cf=e("./categories/Cf/regex"),t.P=e("./categories/P/regex"),t.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,r,t){r.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},{}],67:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)}); diff --git a/miniprogram/towxml/parse/markdown/plugins/ins.js b/miniprogram/towxml/parse/markdown/plugins/ins.js new file mode 100644 index 0000000..53bc347 --- /dev/null +++ b/miniprogram/towxml/parse/markdown/plugins/ins.js @@ -0,0 +1 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.markdownitIns=e()}}(function(){return function e(n,t,o){function r(s,f){if(!t[s]){if(!n[s]){var u="function"==typeof require&&require;if(!f&&u)return u(s,!0);if(i)return i(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var p=t[s]={exports:{}};n[s][0].call(p.exports,function(e){var t=n[s][1][e];return r(t?t:e)},p,p.exports,e,n,t,o)}return t[s].exports}for(var i="function"==typeof require&&require,s=0;si)return!1;for(i%2&&(r=e.push("text","",0),r.content=s,i--),t=0;i>t;t+=2)r=e.push("text","",0),r.content=s+s,e.delimiters.push({marker:u,jump:t,token:e.tokens.length-1,level:e.level,end:-1,open:o.can_open,close:o.can_close});return e.pos+=o.length,!0}function t(e){var n,t,o,r,i,s=[],f=e.delimiters,u=e.delimiters.length;for(n=0;u>n;n++)o=f[n],43===o.marker&&-1!==o.end&&(r=f[o.end],i=e.tokens[o.token],i.type="ins_open",i.tag="ins",i.nesting=1,i.markup="++",i.content="",i=e.tokens[r.token],i.type="ins_close",i.tag="ins",i.nesting=-1,i.markup="++",i.content="","text"===e.tokens[r.token-1].type&&"+"===e.tokens[r.token-1].content&&s.push(r.token-1));for(;s.length;){for(n=s.pop(),t=n+1;t 0 ? state.src.charCodeAt(pos - 1) : -1; + nextChar = pos + 1 <= max ? state.src.charCodeAt(pos + 1) : -1; + + // Check non-whitespace conditions for opening and closing, and + // check that closing delimeter isn't followed by a number + if (prevChar === 0x20/* " " */ || prevChar === 0x09/* \t */ || + (nextChar >= 0x30/* "0" */ && nextChar <= 0x39/* "9" */)) { + can_close = false; + } + if (nextChar === 0x20/* " " */ || nextChar === 0x09/* \t */) { + can_open = false; + } + + return { + can_open: can_open, + can_close: can_close + }; +} + +function math_inline(state, silent) { + var start, match, token, res, pos, esc_count; + + if (state.src[state.pos] !== "$") { return false; } + + res = isValidDelim(state, state.pos); + if (!res.can_open) { + if (!silent) { state.pending += "$"; } + state.pos += 1; + return true; + } + + // First check for and bypass all properly escaped delimieters + // This loop will assume that the first leading backtick can not + // be the first character in state.src, which is known since + // we have found an opening delimieter already. + start = state.pos + 1; + match = start; + while ( (match = state.src.indexOf("$", match)) !== -1) { + // Found potential $, look for escapes, pos will point to + // first non escape when complete + pos = match - 1; + while (state.src[pos] === "\\") { pos -= 1; } + + // Even number of escapes, potential closing delimiter found + if ( ((match - pos) % 2) == 1 ) { break; } + match += 1; + } + + // No closing delimter found. Consume $ and continue. + if (match === -1) { + if (!silent) { state.pending += "$"; } + state.pos = start; + return true; + } + + // Check if we have empty content, ie: $$. Do not parse. + if (match - start === 0) { + if (!silent) { state.pending += "$$"; } + state.pos = start + 1; + return true; + } + + // Check for valid closing delimiter + res = isValidDelim(state, match); + if (!res.can_close) { + if (!silent) { state.pending += "$"; } + state.pos = start; + return true; + } + + if (!silent) { + token = state.push('math_inline', 'math', 0); + token.markup = "$"; + token.content = state.src.slice(start, match); + } + + state.pos = match + 1; + return true; +} + +function math_block(state, start, end, silent){ + var firstLine, lastLine, next, lastPos, found = false, token, + pos = state.bMarks[start] + state.tShift[start], + max = state.eMarks[start] + + if(pos + 2 > max){ return false; } + if(state.src.slice(pos,pos+2)!=='$$'){ return false; } + + pos += 2; + firstLine = state.src.slice(pos,max); + + if(silent){ return true; } + if(firstLine.trim().slice(-2)==='$$'){ + // Single line expression + firstLine = firstLine.trim().slice(0, -2); + found = true; + } + + for(next = start; !found; ){ + + next++; + + if(next >= end){ break; } + + pos = state.bMarks[next]+state.tShift[next]; + max = state.eMarks[next]; + + if(pos < max && state.tShift[next] < state.blkIndent){ + // non-empty line with negative indent should stop the list: + break; + } + + if(state.src.slice(pos,max).trim().slice(-2)==='$$'){ + lastPos = state.src.slice(0,max).lastIndexOf('$$'); + lastLine = state.src.slice(pos,lastPos); + found = true; + } + + } + + state.line = next + 1; + + token = state.push('math_block', 'math', 0); + token.block = true; + token.content = (firstLine && firstLine.trim() ? firstLine + '\n' : '') + + state.getLines(start + 1, next, state.tShift[start], true) + + (lastLine && lastLine.trim() ? lastLine : ''); + token.map = [ start, state.line ]; + token.markup = '$$'; + return true; +} + +module.exports = md => { + var inlineRenderer = function(tokens, idx){ + return ``; + }; + + var blockRenderer = function(tokens, idx){ + return ``; + }; + + md.inline.ruler.after('escape', 'math_inline', math_inline); + md.block.ruler.after('blockquote', 'math_block', math_block, { + alt: [ 'paragraph', 'reference', 'blockquote', 'list' ] + }); + md.renderer.rules.math_inline = inlineRenderer; + md.renderer.rules.math_block = blockRenderer; +}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/markdown/plugins/sub.js b/miniprogram/towxml/parse/markdown/plugins/sub.js new file mode 100644 index 0000000..7ca0224 --- /dev/null +++ b/miniprogram/towxml/parse/markdown/plugins/sub.js @@ -0,0 +1 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSub=e()}}(function(){return function e(r,o,n){function t(i,u){if(!o[i]){if(!r[i]){var f="function"==typeof require&&require;if(!u&&f)return f(i,!0);if(s)return s(i,!0);var p=new Error("Cannot find module '"+i+"'");throw p.code="MODULE_NOT_FOUND",p}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i=i)return!1;for(e.pos=u+1;e.pos?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sub",o)}},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/miniprogram/towxml/parse/markdown/plugins/sup.js b/miniprogram/towxml/parse/markdown/plugins/sup.js new file mode 100644 index 0000000..3fc5259 --- /dev/null +++ b/miniprogram/towxml/parse/markdown/plugins/sup.js @@ -0,0 +1 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSup=e()}}(function(){return function e(r,o,n){function t(i,p){if(!o[i]){if(!r[i]){var u="function"==typeof require&&require;if(!p&&u)return u(i,!0);if(s)return s(i,!0);var f=new Error("Cannot find module '"+i+"'");throw f.code="MODULE_NOT_FOUND",f}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i=i)return!1;for(e.pos=p+1;e.pos?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sup",o)}},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/Parser.js b/miniprogram/towxml/parse/parse2/Parser.js new file mode 100644 index 0000000..a4c945f --- /dev/null +++ b/miniprogram/towxml/parse/parse2/Parser.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +"use strict";function Parser(t,e){var s=this;return s._tagname="",s._attribname="",s._attribvalue="",s._attribs=null,s._stack=[],s._foreignContext=[],s.startIndex=0,s.endIndex=null,s.parseChunk=Parser.prototype.write,s.done=Parser.prototype.end,s._options=e||{},s._cbs=t||{},s._tagname="",s._attribname="",s._attribvalue="",s._attribs=null,s._stack=[],s._foreignContext=[],s.startIndex=0,s.endIndex=null,s._lowerCaseTagNames="lowerCaseTags"in s._options?!!s._options.lowerCaseTags:!s._options.xmlMode,s._lowerCaseAttributeNames="lowerCaseAttributeNames"in s._options?!!s._options.lowerCaseAttributeNames:!s._options.xmlMode,s._tokenizer=new(s._options.Tokenizer||Tokenizer_1["default"])(s._options,s),s._cbs.onparserinit&&s._cbs.onparserinit(s),s}var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});var Tokenizer_1=__importDefault(require("./Tokenizer")),formTags=new Set(["input","option","optgroup","select","button","datalist","textarea"]),pTag=new Set(["p"]),openImpliesClose={tr:new Set(["tr","th","td"]),th:new Set(["th"]),td:new Set(["thead","th","td"]),body:new Set(["head","link","script"]),li:new Set(["li"]),p:pTag,h1:pTag,h2:pTag,h3:pTag,h4:pTag,h5:pTag,h6:pTag,select:formTags,input:formTags,output:formTags,button:formTags,datalist:formTags,textarea:formTags,option:new Set(["option"]),optgroup:new Set(["optgroup","option"]),dd:new Set(["dt","dd"]),dt:new Set(["dt","dd"]),address:pTag,article:pTag,aside:pTag,blockquote:pTag,details:pTag,div:pTag,dl:pTag,fieldset:pTag,figcaption:pTag,figure:pTag,footer:pTag,form:pTag,header:pTag,hr:pTag,main:pTag,nav:pTag,ol:pTag,pre:pTag,section:pTag,table:pTag,ul:pTag,rt:new Set(["rt","rp"]),rp:new Set(["rt","rp"]),tbody:new Set(["thead","tbody"]),tfoot:new Set(["thead","tbody"])},voidElements=new Set(["area","base","basefont","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr"]),foreignContextElements=new Set(["math","svg"]),htmlIntegrationElements=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),reNameEnd=/\s|\//;Parser.prototype._updatePosition=function(t){null===this.endIndex?this._tokenizer._sectionStart<=t?this.startIndex=0:this.startIndex=this._tokenizer._sectionStart-t:this.startIndex=this.endIndex+1,this.endIndex=this._tokenizer.getAbsoluteIndex()},Parser.prototype.ontext=function(t){this._updatePosition(1),this.endIndex--,this._cbs.ontext&&this._cbs.ontext(t)},Parser.prototype.onopentagname=function(t){if(this._lowerCaseTagNames&&(t=t.toLowerCase()),this._tagname=t,!this._options.xmlMode&&t in openImpliesClose)for(var e=void 0;openImpliesClose[t].has(e=this._stack[this._stack.length-1]);this.onclosetag(e));!this._options.xmlMode&&voidElements.has(t)||(this._stack.push(t),foreignContextElements.has(t)?this._foreignContext.push(!0):htmlIntegrationElements.has(t)&&this._foreignContext.push(!1)),this._cbs.onopentagname&&this._cbs.onopentagname(t),this._cbs.onopentag&&(this._attribs={})},Parser.prototype.onopentagend=function(){this._updatePosition(1),this._attribs&&(this._cbs.onopentag&&this._cbs.onopentag(this._tagname,this._attribs),this._attribs=null),!this._options.xmlMode&&this._cbs.onclosetag&&voidElements.has(this._tagname)&&this._cbs.onclosetag(this._tagname),this._tagname=""},Parser.prototype.onclosetag=function(t){if(this._updatePosition(1),this._lowerCaseTagNames&&(t=t.toLowerCase()),(foreignContextElements.has(t)||htmlIntegrationElements.has(t))&&this._foreignContext.pop(),!this._stack.length||!this._options.xmlMode&&voidElements.has(t))this._options.xmlMode||"br"!==t&&"p"!==t||(this.onopentagname(t),this._closeCurrentTag());else{var e=this._stack.lastIndexOf(t);if(-1!==e)if(this._cbs.onclosetag)for(e=this._stack.length-e;e--;)this._cbs.onclosetag(this._stack.pop());else this._stack.length=e;else"p"!==t||this._options.xmlMode||(this.onopentagname(t),this._closeCurrentTag())}},Parser.prototype.onselfclosingtag=function(){this._options.xmlMode||this._options.recognizeSelfClosing||this._foreignContext[this._foreignContext.length-1]?this._closeCurrentTag():this.onopentagend()},Parser.prototype._closeCurrentTag=function(){var t=this._tagname;this.onopentagend(),this._stack[this._stack.length-1]===t&&(this._cbs.onclosetag&&this._cbs.onclosetag(t),this._stack.pop())},Parser.prototype.onattribname=function(t){this._lowerCaseAttributeNames&&(t=t.toLowerCase()),this._attribname=t},Parser.prototype.onattribdata=function(t){this._attribvalue+=t},Parser.prototype.onattribend=function(){this._cbs.onattribute&&this._cbs.onattribute(this._attribname,this._attribvalue),this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)&&(this._attribs[this._attribname]=this._attribvalue),this._attribname="",this._attribvalue=""},Parser.prototype._getInstructionName=function(t){var e=t.search(reNameEnd),s=e<0?t:t.substr(0,e);return this._lowerCaseTagNames&&(s=s.toLowerCase()),s},Parser.prototype.ondeclaration=function(t){if(this._cbs.onprocessinginstruction){var e=this._getInstructionName(t);this._cbs.onprocessinginstruction("!"+e,"!"+t)}},Parser.prototype.onprocessinginstruction=function(t){if(this._cbs.onprocessinginstruction){var e=this._getInstructionName(t);this._cbs.onprocessinginstruction("?"+e,"?"+t)}},Parser.prototype.oncomment=function(t){this._updatePosition(4),this._cbs.oncomment&&this._cbs.oncomment(t),this._cbs.oncommentend&&this._cbs.oncommentend()},Parser.prototype.oncdata=function(t){this._updatePosition(1),this._options.xmlMode||this._options.recognizeCDATA?(this._cbs.oncdatastart&&this._cbs.oncdatastart(),this._cbs.ontext&&this._cbs.ontext(t),this._cbs.oncdataend&&this._cbs.oncdataend()):this.oncomment("[CDATA["+t+"]]")},Parser.prototype.onerror=function(t){this._cbs.onerror&&this._cbs.onerror(t)},Parser.prototype.onend=function(){if(this._cbs.onclosetag)for(var t=this._stack.length;t>0;this._cbs.onclosetag(this._stack[--t]));this._cbs.onend&&this._cbs.onend()},Parser.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},Parser.prototype.parseComplete=function(t){this.reset(),this.end(t)},Parser.prototype.write=function(t){this._tokenizer.write(t)},Parser.prototype.end=function(t){this._tokenizer.end(t)},Parser.prototype.pause=function(){this._tokenizer.pause()},Parser.prototype.resume=function(){this._tokenizer.resume()},exports.Parser=Parser; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/Tokenizer.js b/miniprogram/towxml/parse/parse2/Tokenizer.js new file mode 100644 index 0000000..b5a10f2 --- /dev/null +++ b/miniprogram/towxml/parse/parse2/Tokenizer.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +"use strict";function whitespace(t){return" "===t||"\n"===t||"\t"===t||"\f"===t||"\r"===t}function ifElseState(t,e,s){var i=t.toLowerCase();return t===i?function(t,a){a===i?t._state=e:(t._state=s,t._index--)}:function(a,_){_===i||_===t?a._state=e:(a._state=s,a._index--)}}function consumeSpecialNameChar(t,e){var s=t.toLowerCase();return function(i,a){a===s||a===t?i._state=e:(i._state=3,i._index--)}}var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});var decode_codepoint_1=__importDefault(require("./entities/decode_codepoint")),entities_json_1=__importDefault(require("./entities/maps/entities")),legacy_json_1=__importDefault(require("./entities/maps/legacy")),xml_json_1=__importDefault(require("./entities/maps/xml")),stateBeforeCdata1=ifElseState("C",23,16),stateBeforeCdata2=ifElseState("D",24,16),stateBeforeCdata3=ifElseState("A",25,16),stateBeforeCdata4=ifElseState("T",26,16),stateBeforeCdata5=ifElseState("A",27,16),stateBeforeScript1=consumeSpecialNameChar("R",34),stateBeforeScript2=consumeSpecialNameChar("I",35),stateBeforeScript3=consumeSpecialNameChar("P",36),stateBeforeScript4=consumeSpecialNameChar("T",37),stateAfterScript1=ifElseState("R",39,1),stateAfterScript2=ifElseState("I",40,1),stateAfterScript3=ifElseState("P",41,1),stateAfterScript4=ifElseState("T",42,1),stateBeforeStyle1=consumeSpecialNameChar("Y",44),stateBeforeStyle2=consumeSpecialNameChar("L",45),stateBeforeStyle3=consumeSpecialNameChar("E",46),stateAfterStyle1=ifElseState("Y",48,1),stateAfterStyle2=ifElseState("L",49,1),stateAfterStyle3=ifElseState("E",50,1),stateBeforeEntity=ifElseState("#",52,53),stateBeforeNumericEntity=ifElseState("X",55,54),Tokenizer=function(){function t(t,e){this._state=1,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=1,this._special=1,this._running=!0,this._ended=!1,this._cbs=e,this._xmlMode=!(!t||!t.xmlMode),this._decodeEntities=!(!t||!t.decodeEntities)}return t.prototype.reset=function(){this._state=1,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=1,this._special=1,this._running=!0,this._ended=!1},t.prototype._stateText=function(t){"<"===t?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=2,this._sectionStart=this._index):this._decodeEntities&&1===this._special&&"&"===t&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=1,this._state=51,this._sectionStart=this._index)},t.prototype._stateBeforeTagName=function(t){"/"===t?this._state=5:"<"===t?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):">"===t||1!==this._special||whitespace(t)?this._state=1:"!"===t?(this._state=15,this._sectionStart=this._index+1):"?"===t?(this._state=17,this._sectionStart=this._index+1):(this._state=this._xmlMode||"s"!==t&&"S"!==t?3:31,this._sectionStart=this._index)},t.prototype._stateInTagName=function(t){("/"===t||">"===t||whitespace(t))&&(this._emitToken("onopentagname"),this._state=8,this._index--)},t.prototype._stateBeforeCloseingTagName=function(t){whitespace(t)||(">"===t?this._state=1:1!==this._special?"s"===t||"S"===t?this._state=32:(this._state=1,this._index--):(this._state=6,this._sectionStart=this._index))},t.prototype._stateInCloseingTagName=function(t){(">"===t||whitespace(t))&&(this._emitToken("onclosetag"),this._state=7,this._index--)},t.prototype._stateAfterCloseingTagName=function(t){">"===t&&(this._state=1,this._sectionStart=this._index+1)},t.prototype._stateBeforeAttributeName=function(t){">"===t?(this._cbs.onopentagend(),this._state=1,this._sectionStart=this._index+1):"/"===t?this._state=4:whitespace(t)||(this._state=9,this._sectionStart=this._index)},t.prototype._stateInSelfClosingTag=function(t){">"===t?(this._cbs.onselfclosingtag(),this._state=1,this._sectionStart=this._index+1):whitespace(t)||(this._state=8,this._index--)},t.prototype._stateInAttributeName=function(t){("="===t||"/"===t||">"===t||whitespace(t))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=10,this._index--)},t.prototype._stateAfterAttributeName=function(t){"="===t?this._state=11:"/"===t||">"===t?(this._cbs.onattribend(),this._state=8,this._index--):whitespace(t)||(this._cbs.onattribend(),this._state=9,this._sectionStart=this._index)},t.prototype._stateBeforeAttributeValue=function(t){'"'===t?(this._state=12,this._sectionStart=this._index+1):"'"===t?(this._state=13,this._sectionStart=this._index+1):whitespace(t)||(this._state=14,this._sectionStart=this._index,this._index--)},t.prototype._stateInAttributeValueDoubleQuotes=function(t){'"'===t?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8):this._decodeEntities&&"&"===t&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},t.prototype._stateInAttributeValueSingleQuotes=function(t){"'"===t?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8):this._decodeEntities&&"&"===t&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},t.prototype._stateInAttributeValueNoQuotes=function(t){whitespace(t)||">"===t?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8,this._index--):this._decodeEntities&&"&"===t&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},t.prototype._stateBeforeDeclaration=function(t){this._state="["===t?22:"-"===t?18:16},t.prototype._stateInDeclaration=function(t){">"===t&&(this._cbs.ondeclaration(this._getSection()),this._state=1,this._sectionStart=this._index+1)},t.prototype._stateInProcessingInstruction=function(t){">"===t&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=1,this._sectionStart=this._index+1)},t.prototype._stateBeforeComment=function(t){"-"===t?(this._state=19,this._sectionStart=this._index+1):this._state=16},t.prototype._stateInComment=function(t){"-"===t&&(this._state=20)},t.prototype._stateAfterComment1=function(t){this._state="-"===t?21:19},t.prototype._stateAfterComment2=function(t){">"===t?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=1,this._sectionStart=this._index+1):"-"!==t&&(this._state=19)},t.prototype._stateBeforeCdata6=function(t){"["===t?(this._state=28,this._sectionStart=this._index+1):(this._state=16,this._index--)},t.prototype._stateInCdata=function(t){"]"===t&&(this._state=29)},t.prototype._stateAfterCdata1=function(t){this._state="]"===t?30:28},t.prototype._stateAfterCdata2=function(t){">"===t?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=1,this._sectionStart=this._index+1):"]"!==t&&(this._state=28)},t.prototype._stateBeforeSpecial=function(t){"c"===t||"C"===t?this._state=33:"t"===t||"T"===t?this._state=43:(this._state=3,this._index--)},t.prototype._stateBeforeSpecialEnd=function(t){2!==this._special||"c"!==t&&"C"!==t?3!==this._special||"t"!==t&&"T"!==t?this._state=1:this._state=47:this._state=38},t.prototype._stateBeforeScript5=function(t){("/"===t||">"===t||whitespace(t))&&(this._special=2),this._state=3,this._index--},t.prototype._stateAfterScript5=function(t){">"===t||whitespace(t)?(this._special=1,this._state=6,this._sectionStart=this._index-6,this._index--):this._state=1},t.prototype._stateBeforeStyle4=function(t){("/"===t||">"===t||whitespace(t))&&(this._special=3),this._state=3,this._index--},t.prototype._stateAfterStyle4=function(t){">"===t||whitespace(t)?(this._special=1,this._state=6,this._sectionStart=this._index-5,this._index--):this._state=1},t.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+16&&(e=6);e>=2;){var s=this._buffer.substr(t,e);if(Object.prototype.hasOwnProperty.call(legacy_json_1["default"],s))return this._emitPartial(legacy_json_1["default"][s]),void(this._sectionStart+=e+1);e--}},t.prototype._stateInNamedEntity=function(t){";"===t?(this._parseNamedEntityStrict(),this._sectionStart+1"z")&&(t<"A"||t>"Z")&&(t<"0"||t>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(1!==this._baseState?"="!==t&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},t.prototype._decodeNumericEntity=function(t,e){var s=this._sectionStart+t;if(s!==this._index){var i=this._buffer.substring(s,this._index),a=parseInt(i,e);this._emitPartial(decode_codepoint_1["default"](a)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},t.prototype._stateInNumericEntity=function(t){";"===t?(this._decodeNumericEntity(2,10),this._sectionStart++):(t<"0"||t>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},t.prototype._stateInHexEntity=function(t){";"===t?(this._decodeNumericEntity(3,16),this._sectionStart++):(t<"a"||t>"f")&&(t<"A"||t>"F")&&(t<"0"||t>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},t.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._bufferOffset+=this._index,this._index=0):this._running&&(1===this._state?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._bufferOffset+=this._index,this._index=0):this._sectionStart===this._index?(this._buffer="",this._bufferOffset+=this._index,this._index=0):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},t.prototype.write=function(t){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=t,this._parse()},t.prototype._parse=function(){for(;this._index=55296&&e<=57343||e>1114111)return"�";e in decode_json_1["default"]&&(e=decode_json_1["default"][e]);var o="";return e>65535&&(e-=65536,o+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),o+=String.fromCharCode(e)}var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});var decode_json_1=__importDefault(require("./maps/decode"));exports["default"]=decodeCodePoint; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/encode.js b/miniprogram/towxml/parse/parse2/entities/encode.js new file mode 100644 index 0000000..b70b133 --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/encode.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +"use strict";function getInverseObj(e){return Object.keys(e).sort().reduce(function(r,t){return r[e[t]]="&"+t+";",r},{})}function getInverseReplacer(e){var r=[],t=[];return Object.keys(e).forEach(function(e){return 1===e.length?r.push("\\"+e):t.push(e)}),t.unshift("["+r.join("")+"]"),new RegExp(t.join("|"),"g")}function singleCharReplacer(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"}function astralReplacer(e,r){return"&#x"+(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536).toString(16).toUpperCase()+";"}function getInverse(e,r){return function(t){return t.replace(r,function(r){return e[r]}).replace(reAstralSymbols,astralReplacer).replace(reNonASCII,singleCharReplacer)}}function escape(e){return e.replace(reXmlChars,singleCharReplacer).replace(reAstralSymbols,astralReplacer).replace(reNonASCII,singleCharReplacer)}var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});var xml_json_1=__importDefault(require("./maps/xml.json")),inverseXML=getInverseObj(xml_json_1["default"]),xmlReplacer=getInverseReplacer(inverseXML);exports.encodeXML=getInverse(inverseXML,xmlReplacer);var entities_json_1=__importDefault(require("./maps/entities.json")),inverseHTML=getInverseObj(entities_json_1["default"]),htmlReplacer=getInverseReplacer(inverseHTML);exports.encodeHTML=getInverse(inverseHTML,htmlReplacer);var reNonASCII=/[^\0-\x7F]/g,reAstralSymbols=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,reXmlChars=getInverseReplacer(inverseXML);exports.escape=escape; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/index.js b/miniprogram/towxml/parse/parse2/entities/index.js new file mode 100644 index 0000000..ee41abf --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/index.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +"use strict";function decode(e,d){return(!d||d<=0?decode_1.decodeXML:decode_1.decodeHTML)(e)}function decodeStrict(e,d){return(!d||d<=0?decode_1.decodeXML:decode_1.decodeHTMLStrict)(e)}function encode(e,d){return(!d||d<=0?encode_1.encodeXML:encode_1.encodeHTML)(e)}Object.defineProperty(exports,"__esModule",{value:!0});var decode_1=require("./decode"),encode_1=require("./encode");exports.decode=decode,exports.decodeStrict=decodeStrict,exports.encode=encode;var encode_2=require("./encode");exports.encodeXML=encode_2.encodeXML,exports.encodeHTML=encode_2.encodeHTML,exports.escape=encode_2.escape,exports.encodeHTML4=encode_2.encodeHTML,exports.encodeHTML5=encode_2.encodeHTML;var decode_2=require("./decode");exports.decodeXML=decode_2.decodeXML,exports.decodeHTML=decode_2.decodeHTML,exports.decodeHTMLStrict=decode_2.decodeHTMLStrict,exports.decodeHTML4=decode_2.decodeHTML,exports.decodeHTML5=decode_2.decodeHTML,exports.decodeHTML4Strict=decode_2.decodeHTMLStrict,exports.decodeHTML5Strict=decode_2.decodeHTMLStrict,exports.decodeXMLStrict=decode_2.decodeXML; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/maps/decode.js b/miniprogram/towxml/parse/parse2/entities/maps/decode.js new file mode 100644 index 0000000..249945e --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/maps/decode.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +module.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/maps/entities.js b/miniprogram/towxml/parse/parse2/entities/maps/entities.js new file mode 100644 index 0000000..6551bf4 --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/maps/entities.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +module.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/maps/legacy.js b/miniprogram/towxml/parse/parse2/entities/maps/legacy.js new file mode 100644 index 0000000..97befca --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/maps/legacy.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +module.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/entities/maps/xml.js b/miniprogram/towxml/parse/parse2/entities/maps/xml.js new file mode 100644 index 0000000..d914223 --- /dev/null +++ b/miniprogram/towxml/parse/parse2/entities/maps/xml.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +module.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}; \ No newline at end of file diff --git a/miniprogram/towxml/parse/parse2/index.js b/miniprogram/towxml/parse/parse2/index.js new file mode 100644 index 0000000..c8011aa --- /dev/null +++ b/miniprogram/towxml/parse/parse2/index.js @@ -0,0 +1,2 @@ +/*! Project:无, Create:FWS 2020.01.08 21:48, Update:FWS 2020.01.08 21:48 */ +function parseDOM(r,e){var a=new domhandler_1.DomHandler(void 0,e);return new Parser_1.Parser(a,e).end(r),a.dom}var domhandler_1=require("./domhandler/index"),Parser_1=require("./Parser");module.exports=parseDOM; \ No newline at end of file diff --git a/miniprogram/towxml/style/main.wxss b/miniprogram/towxml/style/main.wxss new file mode 100644 index 0000000..13135b4 --- /dev/null +++ b/miniprogram/towxml/style/main.wxss @@ -0,0 +1,377 @@ +/*正文样式*/ +.h2w { + font-family: "STHeitiTC-Light", "Microsoft YaHei Light", "Hiragino Sans GB", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 32rpx; + line-height: 1.8; + word-wrap: break-word; + word-wrap: break-word; + word-break: break-all; +} + +.h2w__main { + margin: 0 40rpx 40rpx 40rpx; + padding-top: 40rpx; +} + +/**标题**/ +.h2w__h1, +.h2w__h2, +.h2w__h3, +.h2w__h4, +.h2w__h5, +.h2w__h6 { + font-weight: bold; +} + +/**设置行间元素样式**/ +.h2w__span, +.h2w__b, +.h2w__strong, +.h2w__i, +.h2w__em, +.h2w__code, +.h2w__sub, +.h2w__sup, +.h2w__g-emoji, +.h2w__mark, +.h2w__ins { + display:inline; +} + +.h2w__h1 { + border-bottom-style: double; + border-bottom-width: 6rpx; + font-size: 42rpx; + padding-bottom: 10rpx; + margin-bottom: 20rpx; +} + +.h2w__h2 { + border-bottom-style: solid; + border-bottom-width: 1rpx; + font-size: 40rpx; + padding-bottom: 8rpx; + margin-bottom: 18rpx; +} + +.h2w__h3 { + font-size: 38rpx; + padding-bottom: 6rpx; + margin-bottom: 12rpx; +} + +.h2w__h4 { + font-size: 36rpx; + padding-bottom: 4rpx; + margin-bottom: 12rpx; +} + +.h2w__h5 { + font-size: 34rpx; + padding-bottom: 2rpx; + margin-bottom: 12rpx; +} + +.h2w__h6 { + margin-bottom: 12rpx; +} + + +/**表格**/ +.h2w__table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: table; + margin-bottom: 40rpx; +} + +.h2w__table .h2w__tr:nth-child(2n) { + background-color: red; +} + +.h2w__colgroup { + display: table-column-group; +} + +.h2w__col { + display: table-column; +} + +.h2w__thead { + display: table-header-group; +} + +.h2w__tbody { + display: table-row-group; +} + +.h2w__tfoot { + display: table-footer-group; +} + +.h2w__tr { + display: table-row; +} + +.h2w__th, +.h2w__td { + padding: 8rpx 16rpx; + font-size: 28rpx; + border-width: 1rpx; + border-style: solid; + display: table-cell; +} + +.h2w__th { + font-weight: bold; +} + +/**代码块**/ +.h2w__pre { + /*white-space:nowrap;*/ + padding: 20rpx; + font-size: 28rpx; + word-break: normal; + border-width: 1rpx; + border-style: solid; + margin-bottom: 40rpx; + white-space: nowrap; + overflow-x: auto; + tab-size:4; +} + +.h2w__pre .h2w__code { + padding: 0; + border: 0; + font-size: 100%; +} + +.h2w__pre, +.h2w__code { + font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace, "STHeitiTC-Light", "Microsoft YaHei Light", -apple-system, system-ui, BlinkMacSystemFont; +} + +.h2w__code { + padding: 4rpx 8rpx; + margin: 0 4rpx; + border-width: 1rpx; + border-style: solid; + border-radius: 8rpx; + font-size: 80%; + overflow-x: auto; +} + +.h2w__pre .h2w__span, +.h2w__pre .h2w__a, +.h2w__pre .h2w__span, +.h2w__pre .h2w__b, +.h2w__pre .h2w__strong, +.h2w__pre .h2w__i, +.h2w__pre .h2w__em { + display: inline; +} + +.h2w__pre { + white-space: pre; + display: block; +} + +.h2w__pre .h2w__code { + white-space: pre; + width: 9999px; + display: block; + font-size: 80%; +} + +/**列表**/ +.h2w__ul, +.h2w__ol { + margin-bottom: 40rpx; + padding-left: 1rem; +} + +.h2w__ul .h2w__ol, +.h2w__ol .h2w__ul { + margin-bottom: 0; +} + +.h2w__li { + display: list-item; +} + +/**todo**/ +.h2w__todogroup { + margin-bottom: 40rpx; +} + +.h2w__todogroup .h2w__todogroup { + padding-left: 1.6rem; +} + +/**一级ol样式**/ +.h2w__ol { + list-style-type: decimal; +} + +/**二级ol样式**/ +.h2w__ul .h2w__ol, +.h2w__ol .h2w__ol { + list-style-type: lower-roman; +} + +/**三级ol样式**/ +.h2w__ul .h2w__ul .h2w__ol, +.h2w__ul .h2w__ol .h2w__ol, +.h2w__ol .h2w__ul .h2w__ol, +.h2w__ol .h2w__ol .h2w__ol { + list-style-type: lower-alpha; +} + +/**一级ul样式**/ +.h2w__ul { + list-style-type: disc; +} + +/**二级ul样式**/ +.h2w__ul .h2w__ul, +.h2w__ol .h2w__ul { + list-style-type: circle; +} + +/**三级样式**/ +.h2w__ol .h2w__ol .h2w__ul, +.h2w__ol .h2w__ul .h2w__ul, +.h2w__ul .h2w__ol .h2w__ul, +.h2w__ul .h2w__ul .h2w__ul { + list-style-type: square; +} + +/**块元素**/ +.h2w__p { + margin: 20rpx 0 20rpx 0; + /*word-wrap:break-word; + word-break:break-all;*/ + /*text-align:justify;*/ +} + +.h2w__div { + /*text-align:justify;*/ +} + +.h2w__blockquote { + border-left-width: 8rpx; + border-left-style: solid; + padding: 0 20rpx; +} + +/**内连元素**/ +.h2w__a, +.h2w__span, +.h2w__b, +.h2w__strong, +.h2w__i, +.h2w__em { + display: inline; +} + +.h2w__b, +.h2w__strong { + font-weight: bold; +} + +.h2w__i, +.h2w__em { + font-style: italic; +} + +/**文本删除线**/ +.h2w__s, +.h2w__strike, +.h2w__del { + text-decoration: line-through; +} + +/**文本下划线**/ +.h2w__ins, +.h2w__u { + text-decoration: underline; +} + +/**链接**/ +.h2w__a { + margin: 0 8rpx; + border-bottom-width: 1rpx; + border-bottom-style: solid; + line-height: 1; +} + +.h2w__hr { + height: 8rpx; + margin: 40rpx 0; +} + +/**荧光标记**/ +.h2w__mark { + border-radius: 4rpx; +} + +/**上标、下标**/ +.h2w__sup, +.h2w__sub { + font-size: 75%; + position: relative; +} + +.h2w__sup { + top: -0.5em; +} + +.h2w__sub { + bottom: -0.25em; +} + +/**emoji表情**/ +.h2w__g-emoji { + margin: 0 0.1em; + font-family: "Apple Color Emoji", "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +/**内置元素**/ +image,video { + max-width: 100%; +} + + +video { + width:100%; margin: 10rpx auto; +} + +image { + height:auto; vertical-align:middle; +} + +video { + height:220px; font-size:0; +} + +.h2w__latex--line {margin:4rpx 8rpx; vertical-align:middle;} +.h2w__latex--block {display:block; margin:1em auto;} + +.h2w__yuml {display:block;} + +.h2w__yumlBox { + width:100%; + overflow-x:auto; +} +.h2w__yumlView { + margin:0 auto; padding-bottom:40rpx; +} + +/**代码行号**/ +.h2w__lineNum { + text-align:right; float:left; padding:0; margin:0 1em 0 0; +} +.h2w__lineNumLine { + list-style:none; +} \ No newline at end of file diff --git a/miniprogram/towxml/style/theme/dark.wxss b/miniprogram/towxml/style/theme/dark.wxss new file mode 100644 index 0000000..daf5b01 --- /dev/null +++ b/miniprogram/towxml/style/theme/dark.wxss @@ -0,0 +1,73 @@ +/*正文样式*/ +.h2w-dark { + color:#ddd; + background-color:#000; +} + +/**标题**/ +.h2w-dark .h2w__h1, +.h2w-dark .h2w__h2 { + border-color:#3d3d3d; +} + + +/**表格**/ +.h2w-dark .h2w__thead .h2w__tr { + background-color:#1f1f1f; +} +.h2w-dark .h2w__table .h2w__tr:nth-child(2n){ + background-color:#090909; +} +.h2w-dark .h2w__th, +.h2w-dark .h2w__td { + border-color:#333; +} + + +/**代码块**/ +.h2w-dark .h2w__pre, +.h2w-dark .h2w__pre .h2w__code { + background-color:#1b1b1b; + border-color:#262626; +} + +.h2w-dark .h2w__code { + background-color:#272822; + border-color:#1b1c18; +} + + +/**块元素**/ +.h2w-dark .h2w__blockquote { + border-left-color:#10230f; +} + +/**内连元素**/ +.h2w-dark .h2w__a { + color:#1aad16; border-color:#4d804b; +} + +.h2w-dark .h2w__hr { + background-color:#242424; +} + +.h2w-dark .h2w__mark { + background:yellow; + color:black; +} + +.h2w-dark .h2w__todoCheckbox .wx-checkbox-input { + background:#2e2e2e; border-color:#494949; +} +.h2w-dark .h2w__todoCheckbox .wx-checkbox-input.wx-checkbox-input-checked { + background:green; border-color:#4d804b; +} +.h2w-dark .h2w__todoCheckbox .wx-checkbox-input.wx-checkbox-input-checked::before { + color:white; +} +.h2w-dark .h2w__lineNum { + color:#494949; +} + +/**代码高亮样式**/ +@import '../../parse/highlight/style/monokai.wxss'; diff --git a/miniprogram/towxml/style/theme/light.wxss b/miniprogram/towxml/style/theme/light.wxss new file mode 100644 index 0000000..457f820 --- /dev/null +++ b/miniprogram/towxml/style/theme/light.wxss @@ -0,0 +1,63 @@ +/*正文样式*/ +.h2w-light { + color:#333; + background-color:white; +} + +/**标题**/ +.h2w-light .h2w__h1, +.h2w-light .h2w__h2 { + border-color:#eee; +} + + +/**表格**/ +.h2w-light .h2w__thead .h2w__tr { + background-color:#f6f8fa; +} +.h2w-light .h2w__table .h2w__tr:nth-child(2n){ + background-color:#fbfcfd; +} +.h2w-light .h2w__th, +.h2w-light .h2w__td { + border-color:#dfe2e5; +} + + +/**代码块**/ +.h2w-light .h2w__pre { + background-color:#f6f8fa; + border-color:#eaedf0; +} + +.h2w-light .h2w__code { + background-color:#f6f8fa; + border-color:#eaedf0; +} + + +/**块元素**/ +.h2w-light .h2w__blockquote { + border-left-color:#dfe2e5; +} + +/**内连元素**/ +.h2w-light .h2w__a { + color:#1aad16; border-color:#b9d9b8; +} + +.h2w-light .h2w__hr { + background-color:#eee; +} + +.h2w-light .h2w__mark { + background:yellow; + color:black; +} + +.h2w-light .h2w__lineNum { + color:#ccc; +} + +/**代码高亮样式**/ +@import '../../parse/highlight/style/github.wxss'; \ No newline at end of file diff --git a/miniprogram/towxml/table/table.js b/miniprogram/towxml/table/table.js new file mode 100644 index 0000000..87fc3de --- /dev/null +++ b/miniprogram/towxml/table/table.js @@ -0,0 +1,11 @@ +Component({ + options: { + styleIsolation: 'shared' + }, + properties: { + data: { + type: Object, + value: {} + } + } +}) \ No newline at end of file diff --git a/miniprogram/towxml/table/table.json b/miniprogram/towxml/table/table.json new file mode 100644 index 0000000..20f2078 --- /dev/null +++ b/miniprogram/towxml/table/table.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "decode": "../decode" + } +} \ No newline at end of file diff --git a/miniprogram/towxml/table/table.wxml b/miniprogram/towxml/table/table.wxml new file mode 100644 index 0000000..2f20bdd --- /dev/null +++ b/miniprogram/towxml/table/table.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/miniprogram/towxml/table/table.wxss b/miniprogram/towxml/table/table.wxss new file mode 100644 index 0000000..e69de29 diff --git a/miniprogram/towxml/towxml.js b/miniprogram/towxml/towxml.js new file mode 100644 index 0000000..f29b3c7 --- /dev/null +++ b/miniprogram/towxml/towxml.js @@ -0,0 +1,16 @@ +Component({ + options:{ + styleIsolation:'shared' + }, + properties:{ + nodes:{ + type:Object, + value:{} + } + }, + data:{ + someData:{ + + } + } +}) \ No newline at end of file diff --git a/miniprogram/towxml/towxml.json b/miniprogram/towxml/towxml.json new file mode 100644 index 0000000..cf43f87 --- /dev/null +++ b/miniprogram/towxml/towxml.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "decode": "./decode" + } +} \ No newline at end of file diff --git a/miniprogram/towxml/towxml.wxml b/miniprogram/towxml/towxml.wxml new file mode 100644 index 0000000..fe91b10 --- /dev/null +++ b/miniprogram/towxml/towxml.wxml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/miniprogram/towxml/towxml.wxss b/miniprogram/towxml/towxml.wxss new file mode 100644 index 0000000..09225c5 --- /dev/null +++ b/miniprogram/towxml/towxml.wxss @@ -0,0 +1,8 @@ +/**基础风格样式**/ +@import './style/main.wxss'; + +/**主题配色(浅色样式)**/ +@import './style/theme/light.wxss'; + +/**主题配色(深色样式)**/ +@import './style/theme/dark.wxss'; \ No newline at end of file diff --git a/project.config.json b/project.config.json index 2b20f09..71e41fa 100644 --- a/project.config.json +++ b/project.config.json @@ -70,18 +70,11 @@ "scene": null }, { - "id": -1, - "name": "pages/course/course", - "pathName": "pages/course/course", - "query": "", - "scene": null - }, - { - "id": 3, + "id": 1, "name": "course/pages/course/course", "pathName": "course/pages/course/course", - "query": "course_id=3518", - "scene": null + "query": "course_id=5141&module_type=common_homework", + "scene": 1011 }, { "id": 5, @@ -98,17 +91,17 @@ "scene": null }, { - "id": 7, + "id": 4, "name": "course_invite", "pathName": "course/pages/course_invite/course_invite", - "query": "course_id=5141&invite_code=8FR54", - "scene": null + "query": "course_id=5140", + "scene": 1001 }, { "id": 6, "name": "exercise", "pathName": "exercise/pages/exercise/exercise", - "query": "exercise_id=4159", + "query": "exercise_id=4178", "scene": null }, { @@ -117,6 +110,27 @@ "pathName": "pages/my/my", "query": "exercise_id=3970", "scene": null + }, + { + "id": -1, + "name": "pages/tidings/tidings", + "pathName": "pages/tidings/tidings", + "query": "course_id=3518", + "scene": null + }, + { + "id": -1, + "name": "course/pages/course_invite/course_invite", + "pathName": "course/pages/course_invite/course_invite", + "query": "course_id=5141", + "scene": null + }, + { + "id": -1, + "name": "account/pages/about/about", + "pathName": "account/pages/about/about", + "query": "", + "scene": null } ] }