mkdocs-chess-plugin 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mkdocs_chess_plugin/__init__.py +86 -0
- mkdocs_chess_plugin/assets/board.css +205 -0
- mkdocs_chess_plugin/assets/board.mjs +565 -0
- mkdocs_chess_plugin/assets/loader.js +13 -0
- mkdocs_chess_plugin/assets/vendor/chess-1.4.0.mjs +3367 -0
- mkdocs_chess_plugin/assets/vendor/chess.js-LICENSE.txt +23 -0
- mkdocs_chess_plugin/assets/xiangqi-rules.mjs +122 -0
- mkdocs_chess_plugin/markdown.py +301 -0
- mkdocs_chess_plugin/themes.py +147 -0
- mkdocs_chess_plugin-0.1.0.dist-info/METADATA +125 -0
- mkdocs_chess_plugin-0.1.0.dist-info/RECORD +14 -0
- mkdocs_chess_plugin-0.1.0.dist-info/WHEEL +5 -0
- mkdocs_chess_plugin-0.1.0.dist-info/entry_points.txt +2 -0
- mkdocs_chess_plugin-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mkdocs-chess-plugin
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Playable chess and xiangqi boards in MkDocs from FEN
|
|
5
|
+
Requires-Python: >=3.9
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: mkdocs<2,>=1.6
|
|
8
|
+
Requires-Dist: Markdown>=3.3
|
|
9
|
+
Requires-Dist: pymdown-extensions>=10
|
|
10
|
+
|
|
11
|
+
# MkDocs Chess Plugin
|
|
12
|
+
|
|
13
|
+
在 MkDocs 的 Markdown 提示块里填写 FEN,即可生成可推演的中国象棋或国际象棋棋盘。棋盘和规则脚本随站点发布,适用于 MkDocs 内置主题和 Material 主题。
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
从本项目源码目录安装。
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python -m pip install .
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
在 `mkdocs.yml` 的插件列表中加入 `chess`。
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
plugins:
|
|
27
|
+
- search
|
|
28
|
+
- chess
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 用法
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
??? xiang "rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1"
|
|
35
|
+
|
|
36
|
+
??? chess "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`???` 默认折叠,`???+` 默认展开,`!!!` 始终显示。块前后留一个空行,说明文字可在块内缩进四个空格书写。旧写法 `board` 按 FEN 的行数识别棋种,八行为国际象棋,十行为中国象棋。
|
|
40
|
+
|
|
41
|
+
折叠块标题显示当前行棋方的棋子图标。中国象棋的标题是「局面」,国际象棋的标题是「Position」。
|
|
42
|
+
|
|
43
|
+
中国象棋红方在下,国际象棋白方在下。可以点选棋子再点合法落点,也可以用鼠标或手指拖到落点。键盘用方向键和 Enter 操作。每个棋盘的「悔棋」和「撤销悔棋」独立生效,悔棋后走出新变化会清除后续着法。国际象棋支持易位、吃过路兵和选择升变棋子。
|
|
44
|
+
|
|
45
|
+
按住鼠标右键从任意一格拖到另一格,可以画出带编号的推演箭头。红方或白方为绿色,黑方为紫色。从空位起笔时,颜色取决于当前行棋方。右键点击箭头尖端或编号可删除单条,也可以点「清除箭头」清空。走棋、悔棋和撤销悔棋都会清空当前标注。
|
|
46
|
+
|
|
47
|
+
两种棋类都支持六字段 FEN,或只写棋子布局与行棋方。两字段格式的易位权和过路兵字段默认为 `-`,计数默认为 `0 1`。中国象棋也接受 `H/E` 作为 `N/B` 的别名。
|
|
48
|
+
|
|
49
|
+
点「导出 FEN」可复制棋盘当前局面的六字段 FEN。浏览器拒绝写入剪贴板时,插件会显示并选中 FEN 文本供手动复制。
|
|
50
|
+
|
|
51
|
+
构建时会检查 FEN 格式并生成 SVG。浏览器启用 JavaScript 时可推演;格式正确但规则引擎拒绝的局面会保留棋盘并提示原因。格式错误会指出所在页面及原因。
|
|
52
|
+
|
|
53
|
+
## 配置走棋音效
|
|
54
|
+
|
|
55
|
+
在 `mkdocs.yml` 中为普通走子和吃子指定音频文件。路径相对于配置文件,支持 MP3、Ogg 和 WAV。素材由站点提供,MkDocs 构建时将其复制到站点。
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
plugins:
|
|
59
|
+
- search
|
|
60
|
+
- chess:
|
|
61
|
+
sounds:
|
|
62
|
+
move: sounds/move.mp3
|
|
63
|
+
capture: sounds/capture.mp3
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 配置棋盘与棋子样式
|
|
67
|
+
|
|
68
|
+
在 `mkdocs.yml` 注册素材清单,路径相对于配置文件。每个棋种可以分别指定默认棋盘和棋子。
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
plugins:
|
|
72
|
+
- search
|
|
73
|
+
- chess:
|
|
74
|
+
themes:
|
|
75
|
+
wood: themes/wood/theme.json
|
|
76
|
+
ivory: themes/ivory/theme.json
|
|
77
|
+
defaults:
|
|
78
|
+
xiang:
|
|
79
|
+
board: wood
|
|
80
|
+
pieces: ivory
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
文章也可以用 `board-<名称>` 和 `pieces-<名称>` 覆盖默认值。例如 `??? xiang board-wood pieces-ivory "FEN"`。使用 `board-default` 或 `pieces-default` 可以选回插件自带样式。
|
|
84
|
+
|
|
85
|
+
素材清单可以只提供 `board` 或只提供 `pieces`,也可以同时提供两项。图片与清单放在同一目录,支持 SVG、PNG、JPEG、GIF 和 WebP。插件在构建时把配置中的素材复制到站点。
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"game": "xiang",
|
|
90
|
+
"board": {
|
|
91
|
+
"image": "wood.jpg",
|
|
92
|
+
"size": [665, 737],
|
|
93
|
+
"origin": [39.5, 39.5],
|
|
94
|
+
"step": [73, 73]
|
|
95
|
+
},
|
|
96
|
+
"pieces": {
|
|
97
|
+
"scale": 1,
|
|
98
|
+
"offset": [0, 0],
|
|
99
|
+
"images": {
|
|
100
|
+
"K": "RK.gif", "A": "RA.gif", "B": "RB.gif", "N": "RN.gif",
|
|
101
|
+
"R": "RR.gif", "C": "RC.gif", "P": "RP.gif",
|
|
102
|
+
"k": "BK.gif", "a": "BA.gif", "b": "BB.gif", "n": "BN.gif",
|
|
103
|
+
"r": "BR.gif", "c": "BC.gif", "p": "BP.gif"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`size` 是棋盘图宽高,`origin` 是左上落点中心,`step` 是横纵落点间距,单位均为图内像素。国际象棋的落点在格子中央,中国象棋在交叉点上。棋子的 `scale` 按落点间距缩放,`offset` 以落点间距为单位,正值向右和向下移动。两项均可省略。大写和小写分别对应红或白方与黑方,`images` 需覆盖该棋种所有 FEN 棋子字母。站点自行配置的素材在插件安装包之外。
|
|
110
|
+
|
|
111
|
+
## 扩展棋种
|
|
112
|
+
|
|
113
|
+
Markdown 块的棋种名来自 `markdown.py` 中的 `BOARD_TYPES`,每项注册布局尺寸、FEN 字段校验和 SVG 渲染函数。新增棋种时,为同名项接入 `board.mjs` 的规则适配器。比如将来注册 `shogun` 后,可用 `??? shogun "局面编码"`。本版本注册了 `chess` 和 `xiang`。
|
|
114
|
+
|
|
115
|
+
## 打包
|
|
116
|
+
|
|
117
|
+
在此目录运行以下命令生成源码包和 wheel,并校验发布元数据。
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
python -m pip install build twine
|
|
121
|
+
python -m build
|
|
122
|
+
python -m twine check dist/*
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
国际象棋规则使用 chess.js 1.4.0,BSD-2-Clause 许可文本随包分发。中国象棋规则随包提供,源自博客的象棋研究室。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
mkdocs_chess_plugin/__init__.py,sha256=qS8cG1q-cwWYELvjon62NxOkgSHgFMTGjfSbXBVd5gc,3838
|
|
2
|
+
mkdocs_chess_plugin/markdown.py,sha256=G5QpA_V38v4ArWVsmZe0BeK3t0Lw0kFUmTaBt-PirsU,12970
|
|
3
|
+
mkdocs_chess_plugin/themes.py,sha256=ETwXWWCq57k94a2s5g3cjrzbtx0C4s84R-5LauscOMs,5569
|
|
4
|
+
mkdocs_chess_plugin/assets/board.css,sha256=rOD_nvhIjYS1Zd-LdbCqQntSmdm_Wm03Pp67wepzwNg,6062
|
|
5
|
+
mkdocs_chess_plugin/assets/board.mjs,sha256=Bio04MAinf51yTRwF0ef23YdA7sQeVRBtQxakX2KGQY,20559
|
|
6
|
+
mkdocs_chess_plugin/assets/loader.js,sha256=YTHVIAibDhur_PIAfpGqOjGY-m-dFFoNUzA5uluqh8k,467
|
|
7
|
+
mkdocs_chess_plugin/assets/xiangqi-rules.mjs,sha256=VIHVAflFCWyoj5MRXI6FvIOVQ49E3tPQqgu9ZE1YkuE,7021
|
|
8
|
+
mkdocs_chess_plugin/assets/vendor/chess-1.4.0.mjs,sha256=D9PYW3Ev1lCYdBbr3J6FqXQG28act1miF56WzHdw8W0,107018
|
|
9
|
+
mkdocs_chess_plugin/assets/vendor/chess.js-LICENSE.txt,sha256=Czo8K0Qyomuxj50G9buk3gFbzJgDBrfbKLBgJUleIYY,1315
|
|
10
|
+
mkdocs_chess_plugin-0.1.0.dist-info/METADATA,sha256=p8Ky9jFXWHtKZyKfRerW7g7ofIyhcrPnEpY3oKv3iUE,5259
|
|
11
|
+
mkdocs_chess_plugin-0.1.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
12
|
+
mkdocs_chess_plugin-0.1.0.dist-info/entry_points.txt,sha256=GfPro06svUKxaeUkHtJIgMvUrr8LpDAhkmzdRDEgMy0,57
|
|
13
|
+
mkdocs_chess_plugin-0.1.0.dist-info/top_level.txt,sha256=dVAcGZTrtHJBXrGJypbN14WxyHy_-pnFlYiGiGTYDos,20
|
|
14
|
+
mkdocs_chess_plugin-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mkdocs_chess_plugin
|