Skip to content

Commit 72276d8

Browse files
committed
feat: 升级至 v0.026,新增代码备注功能并修复导入确认弹窗交互
1 parent e6bba74 commit 72276d8

23 files changed

Lines changed: 63 additions & 40 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ HiCode(简称 **HC**)的诞生源于一个朴素的愿望:**让编程真
3030

3131
## 当前版本
3232

33-
- **v0.021(网页端在线开发)**:支持 `it` 变量(含中文名)、`in` 分级展示(`t / s / b / link / p`)、`if / orif / noif` 条件、四则运算表达式、`to / fr` 页面跳转,可实时转译为网页并导出 `.hc` / `.html` / `.zip`。v0.021 进一步支持单等号 `=` 比较与全角/数学运算符(+ - × ÷ ≥ ≤ ≠ 等),并修复项目内页面跳转与导入交互
33+
- **v0.026(网页端在线开发)**:支持 `it` 变量(含中文名)、`in` 分级展示(`t / s / b / link / p`)、`if / orif / noif` 条件、四则运算表达式、`to / fr` 页面跳转,可实时转译为网页并导出 `.hc` / `.html` / `.zip`。v0.026 在支持单等号 `=` 比较与全角/数学运算符(+ - × ÷ ≥ ≤ ≠ 等)的基础上,新增代码备注功能(支持 `#` 整行/行尾注释),并修复导入后确认弹窗"空跨项目跳转误判"与"确定按钮无响应"问题
3434
- **历史版本**:v0.01、v0.02 均已归档至 `old/`,可在 [历史版本索引](https://HiCodeHC.github.io/old/) 中集中访问。
3535

3636
## 官网

ide/css/style.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
* HC v0.021 在线 IDE 样式 —— 浅色液态玻璃风格
2+
* HC v0.026 在线 IDE 样式 —— 浅色液态玻璃风格
33
* ============================================================ */
44
:root {
55
--bg: #f3eee6;

ide/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>HiCode · 在线开发环境 v0.021</title>
6+
<title>HiCode · 在线开发环境 v0.026</title>
77
<link rel="icon" href="../assets/hicode-logo.jpg" type="image/jpeg" />
88
<link rel="stylesheet" href="css/style.css" />
99
</head>
@@ -13,7 +13,7 @@
1313
<div class="brand" id="btnHome" title="返回首页">
1414
<span class="logo-dot"></span>
1515
<span class="brand-name">HiCode</span>
16-
<span class="ver">v0.021 · 网页端</span>
16+
<span class="ver">v0.026 · 网页端</span>
1717
</div>
1818
<div class="crumb" id="crumb" title="当前文件"></div>
1919
<div class="actions">
@@ -99,7 +99,7 @@
9999
<div class="home-logo"><span class="logo-dot lg"></span></div>
100100
<h1>HiCode <span class="dim">· HIC 语言在线开发</span></h1>
101101
<p class="home-sub">自研 HIC 语言一键转译为 HTML,零基础也能搭建网页项目。</p>
102-
<p class="home-sub small">v0.021 为代码开发版本,新增中文变量名、四则运算、展示样式分级与链接;支持项目 / 页面管理、条件、导向、实时转译与导出。</p>
102+
<p class="home-sub small">v0.026 为代码开发版本,新增中文变量名、四则运算、展示样式分级与链接;支持项目 / 页面管理、条件、导向、实时转译与导出。</p>
103103
<div class="home-actions">
104104
<button id="homeNew" class="btn solid big">新建项目</button>
105105
<button id="homeImport" class="btn ghost big">导入项目 .hc</button>

ide/js/app.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
* HC v0.021 在线 IDE —— 界面逻辑 app.js
2+
* HC v0.026 在线 IDE —— 界面逻辑 app.js
33
* 依赖:Store (store.js) + HC (hic.js)
44
* 职责:首页引导、项目/页面 CRUD、代码编辑、实时转译预览、
55
* 变量面板(含 p 图片上传)、导出菜单。
@@ -388,7 +388,7 @@
388388
// 跨项目提示
389389
const proj = Store.getProject(r.projectId);
390390
const refs = collectCrossRefs(proj);
391-
if (refs.missing) {
391+
if (refs.missing && refs.missing.length) {
392392
toastOn("已导入 · 注意", "项目「" + esc(r.name) + "」已导入。<br/>检测到跨项目跳转指向:<b>" + esc(refs.missing.join("、")) + "</b>。请在同样导入相应项目后再导出,以保证跳转可点击。");
393393
} else {
394394
toastOn("导入成功", "项目「" + esc(r.name) + "」已导入并开始开发。");

ide/js/hic.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
* HC v0.021 —— HIC 语言引擎
2+
* HC v0.026 —— HIC 语言引擎
33
* 负责:HIC 词法/语法解析、HIC→HTML 转译、轻量 ZIP 写入、下载
44
* 说明:本文件为纯逻辑,不依赖 DOM(localStorage/document),
55
* 唯一例外是 download()(仅浏览器调用);可用 Node 单元测试。
@@ -11,7 +11,7 @@
1111
})(typeof self !== 'undefined' ? self : null, function () {
1212
"use strict";
1313

14-
const APP = { version: "v0.021", name: "HiCode", lang: "HIC" };
14+
const APP = { version: "v0.026", name: "HiCode", lang: "HIC" };
1515

1616
/* ---------------- 工具 ---------------- */
1717
function esc(s) {
@@ -225,8 +225,11 @@
225225
function parse(code) {
226226
const ls = String(code || "").split("\n").map(function (raw) {
227227
const mt = raw.match(/^[ \t]*/)[0];
228-
return { indent: mt.replace(/\t/g, " ").length, line: raw.slice(mt.length).trim() };
229-
}).filter(function (x) { return x.line && !x.line.startsWith("#"); });
228+
const indent = mt.replace(/\t/g, " ").length;
229+
// 代码备注:# 整行注释,或行内空白后的 # 到行尾为注释(Python 风格)
230+
const line = raw.replace(/(^|[ \t])#.*$/, "").trim();
231+
return { indent, line };
232+
}).filter(function (x) { return x.line; });
230233

231234
// 取 [start,end) 范围内行缩进的最小值(子块的实际根缩进)
232235
function minIndent(start, end) {

ide/js/store.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================
2-
* HC v0.021 —— 数据层 store.js
2+
* HC v0.026 —— 数据层 store.js
33
* 职责:
44
* 1) 项目 / 页面 CRUD,localStorage 本地持久化
55
* 2) 首次零项目引导判定(hasAnyProject / lastActive)
@@ -21,7 +21,7 @@
2121
"use strict";
2222

2323
const KEY = "HICODE_DATA";
24-
const STORE_VERSION = "v0.021";
24+
const STORE_VERSION = "v0.026";
2525

2626
function uuid() {
2727
return "h" + Date.now().toString(36) + Math.random().toString(36).slice(2, 8);

ide/test/hic.test.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ const built = HC.buildSinglePageHtml({ name: "demo" }, p2);
135135
ok(built.indexOf('class="hic-href"') >= 0, "链接渲染含 hic-href");
136136
ok(built.indexOf("hic-sub") >= 0, "副标题渲染含 hic-sub");
137137

138-
// ---- 12. v0.021 人性化编译:单等号 + 全角/数学运算符 ----
138+
// ---- 12. v0.026 人性化编译:单等号 + 全角/数学运算符 ----
139139
ok(HC.evalExpr("age = 18", { age: { value: 18 } }) === true, "单等号 = 当作 == 比较");
140140
ok(HC.evalExpr("age = 19", { age: { value: 18 } }) === false, "单等号 = 比较为假");
141141
ok(HC.evalExpr("2 \uFF0B 3", {}) === 5, "全角加 +");
@@ -150,5 +150,25 @@ ok(HC.evalExpr("2 \u2260 3", {}) === true, "≠ 当作 !=");
150150
ok(HC.evalExpr("\uFF082 \uFF0B 3\uFF09\u00D7 4", {}) === 20, "全角括号与混合运算符");
151151
ok(HC.evalExpr("年龄 = 18", { "年龄": { value: 18 } }) === true, "中文变量 + 单等号");
152152

153+
// ---- 13. v0.026 代码备注(# 整行 / 行尾注释)----
154+
const p3 = HC.processPage({
155+
name: "note",
156+
code: [
157+
"# 这是整行备注",
158+
"it 标题 t 你好世界",
159+
"it 简介 t 这是简介 # 行尾备注",
160+
"标题 in t # 这里的备注被忽略",
161+
"简介 in s"
162+
].join("\n"),
163+
images: {}
164+
}, {});
165+
ok(Object.keys(p3.vars).length === 2, "备注行被忽略,只收集 2 个变量");
166+
ok(p3.vars["简介"].value === "这是简介", "行尾备注不影响取值");
167+
ok(p3.items.some(function (it) { return it.kind === "display" && it.value === "你好世界"; }), "带行尾备注的 in 语句仍正常渲染");
168+
ok(p3.items.some(function (it) { return it.kind === "display" && it.value === "这是简介"; }), "行尾备注不影响展示值");
169+
// URL 片段中的 # 不应被当作备注
170+
const p4 = HC.processPage({ name: "link", code: "it 链接 t https://example.com/#/home\n链接 in link", images: {} }, {});
171+
ok(p4.vars["链接"].value === "https://example.com/#/home", "URL 中的 # 不被当作备注");
172+
153173
console.log("\n通过 " + pass + " 项,失败 " + fail + " 项");
154174
process.exit(fail ? 1 : 0);

ide/test/runner.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html lang="zh-CN">
33
<head><meta charset="UTF-8"><title>HC 引擎浏览器测试</title></head>
44
<body style="font-family:monospace;background:#14110d;color:#e8ddc8;padding:20px;line-height:1.7">
5-
<h3 style="color:#d9ae6b">HC v0.021 引擎浏览器测试</h3>
5+
<h3 style="color:#d9ae6b">HC v0.026 引擎浏览器测试</h3>
66
<pre id="out">运行中...</pre>
77
<script src="../js/hic.js"></script>
88
<script>

index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ <h1 data-reveal>打造属于每个人的<br /><span class="accent">一站式编
216216
<a class="btn secondary" href="ide/">网页端体验</a>
217217
<a class="btn secondary" href="learn/">学习中心</a>
218218
</div>
219-
<div class="hint" data-reveal>网页端 v0.021 已开放 · 学习中心已同步 · 下载即将上线 · 项目开源可用 · <a href="old/">历史版本</a></div>
219+
<div class="hint" data-reveal>网页端 v0.026 已开放 · 学习中心已同步 · 下载即将上线 · 项目开源可用 · <a href="old/">历史版本</a></div>
220220
</div>
221221
</section>
222222

@@ -303,7 +303,7 @@ <h2>常见问题</h2>
303303
<p>关于 HiCode 你可能有这些疑问。</p>
304304
</div>
305305
<div class="faq-list stagger-box">
306-
<details class="faq glass"><summary>HiCode 现在可以下载使用吗?<span class="pl">+</span></summary><div class="a">网页端 v0.021 已开放,可直接在线编写 HIC 代码、实时转译为网页并导出;桌面 / 移动端下载渠道仍在规划中,正式发布后我们会第一时间公布。你也可前往 <a href="old/">历史版本</a> 查看此前的预览版。</div></details>
306+
<details class="faq glass"><summary>HiCode 现在可以下载使用吗?<span class="pl">+</span></summary><div class="a">网页端 v0.026 已开放,可直接在线编写 HIC 代码、实时转译为网页并导出;桌面 / 移动端下载渠道仍在规划中,正式发布后我们会第一时间公布。你也可前往 <a href="old/">历史版本</a> 查看此前的预览版。</div></details>
307307
<details class="faq glass"><summary>完全没有编程基础,真的能上手吗?<span class="pl">+</span></summary><div class="a">这正是 HiCode 的设计目标:用图形化界面创建前端、用接近自然的简易代码编写后端,尽量降低技术门槛,让小白也能迈出第一步。</div></details>
308308
<details class="faq glass"><summary>HiCode 是免费使用的吗?是否开源?<span class="pl">+</span></summary><div class="a">是的,HiCode 以开源方式发布,遵循相应的开源许可协议。我们会坚持开放、可自由使用与二次开发的原则。</div></details>
309309
<details class="faq glass"><summary>支持哪些开发平台?<span class="pl">+</span></summary><div class="a">我们规划支持网页、安卓(WebView)与 Windows 三大平台,一次编写、多端运行。具体支持程度以最终发布为准。</div></details>

learn/examples/ch01-overview.hc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"app": "HiCode",
33
"language": "HIC",
44
"format": "hc-project",
5-
"version": "v0.021",
5+
"version": "v0.026",
66
"project": {
77
"id": "ch01-overview.hc",
88
"name": "第01章 认识 HIC",
@@ -12,7 +12,7 @@
1212
"p1": {
1313
"id": "p1",
1414
"name": "首页",
15-
"code": "it 标题 t 你好,欢迎来到 HIC\nit 副标题 t 这是 v0.021 新增的副标题样式\nit 正文 t 这是正文样式,适合写较长的说明文字,会自动左对齐并换行。\n\n标题 in t\n副标题 in s\n正文 in b",
15+
"code": "it 标题 t 你好,欢迎来到 HIC\nit 副标题 t 这是 v0.026 新增的副标题样式\nit 正文 t 这是正文样式,适合写较长的说明文字,会自动左对齐并换行。\n\n标题 in t\n副标题 in s\n正文 in b",
1616
"images": {}
1717
}
1818
}

0 commit comments

Comments
 (0)