Skip to content

Latest commit

ย 

History

History
813 lines (585 loc) ยท 27.7 KB

Readme-zh.md

File metadata and controls

813 lines (585 loc) ยท 27.7 KB

TomLyre

ไธ€ๆฌพ็”จไบŽๅค„็†้…็ฝฎๆ–‡ไปถ็š„ๅฐๅทฅๅ…ทใ€‚

ๆ‚จๅฏไปฅ็”จๅฎƒๆฅ่‡ช็”ฑๆŽข็ดข tomlใ€yamlใ€jsonใ€ronใ€bsonใ€Lisp S-exp ไปฅๅŠ xml๏ผŒๅนถไปŽไธญๅ‘็Žฐไน่ถฃใ€‚

้ป˜่ฎคๆƒ…ๅ†ตไธ‹๏ผŒๆฒกๆœ‰ๅฏ็”จ bson ๅ’Œ xml ๅŠŸ่ƒฝใ€‚

ๅฎ‰่ฃ…

latest-map

ๅ…ˆๅ•ๅ‡ปๆ‰“ๅผ€ svg ๅ›พ็‰‡๏ผŒ็„ถๅŽๅฏน่“่‰ฒ้ซ˜ไบฎ็š„่ถ…้“พๆŽฅๅค„๏ผˆไพ‹ๅฆ‚ โ€œarm64.debโ€๏ผ‰ๆŒ‰ไธ‹้ผ ๆ ‡ไธญ้”ฎใ€‚
ๅฆ‚ๆžœๆฒกๆœ‰้ผ ๆ ‡็š„่ฏ๏ผŒๅฏไปฅ้•ฟๆŒ‰่งฆๆ‘ธๅฑ๏ผŒๆ‰‹ๅŠจ้€‰ๆ‹ฉโ€œๅœจๆ–ฐๆ ‡็ญพ้กตไธญๆ‰“ๅผ€โ€๏ผŒ่ฟ™ๆ ทๅญๅฐฑๅฏไปฅไธ‹่ฝฝไบ†ใ€‚

ไธŠ้ข้‚ฃๅผ  svg ไผš่‡ชๅŠจๆ›ดๆ–ฐ๏ผŒๅฆ‚ๆžœๅ› ไธบๆต่งˆๅ™จ็ผ“ๅญ˜่€Œๅฏผ่‡ดๆ— ๆณ•่Žทๅ–ๆœ€ๆ–ฐ็š„ svg๏ผŒๅˆ™่ฏทๅ‰ๅพ€ releases ่Žทๅ–ๅ›บๅฎš็‰ˆๆœฌ็š„ svgใ€‚

ubuntu

ๅฏนไบŽ ubuntu๏ผŒๆˆ‘ไปฌๅฏไปฅ็›ดๆŽฅ็”จ apt install [debๆ–‡ไปถ็š„่ทฏๅพ„] ๆฅๅฎ‰่ฃ…ใ€‚

ๅฆ‚ๆžœๆฒกๆœ‰ root ๆƒ้™๏ผŒๅˆ™้œ€่ฆ็”จ sudo ๆˆ– doas ไน‹็ฑป็š„ๆๆƒๅ‘ฝไปคใ€‚

ๅ‡่ฎพ deb ๆ–‡ไปถ็š„่ทฏๅพ„ไธบ /app.deb, ้‚ฃไนˆๅฎ‰่ฃ…ๅ‘ฝไปคๅฐฑๆ˜ฏ apt install /app.deb

ubuntu apt install deb

alpine

่ฎฉๆˆ‘ไปฌๆฅ่ฏ•่ฏ• alpine ่ƒฝไธ่ƒฝๅฎ‰่ฃ… deb ๅง๏ผ

alpine alpine rv64 container

ๅฎƒๆ˜ฏ musl-linux-riscv64๏ผŒ่€Œไธๆ˜ฏ riscv64, ็œ‹่ตทๆฅๅฅฝๅƒไธ่ƒฝๅฎ‰่ฃ…็š„ๆ ทๅญๅ’ฆ๏ผŸ

่ฎฉๆˆ‘ไปฌๆฅๅผบๅˆถๅฎ‰่ฃ…็œ‹็œ‹ใ€‚

alpine alpine & dpkg

Q: ๅ–”ๅ“ฆ! ็œŸๆ˜ฏๅคชไธๅฏๆ€่ฎฎไบ†๏ผไธบไป€ไนˆๅฎƒไธไป…ๅฏไปฅ่ฃ…ไธŠๅŽป๏ผŒ่€Œไธ”่ฟ˜่ƒฝ่ท‘ๅ‘ข๏ผŸ

A: ๅ› ไธบๅฎƒๆ˜ฏ้™ๆ€็ผ–่ฏ‘็š„ใ€‚

ๆœ‰ๆ—ถๅ€™ glibc ็š„้™ๆ€้“พๆŽฅๅฏ่ƒฝไผšๅ‡บ้—ฎ้ข˜๏ผŒๅปบ่ฎฎ็”จ muslใ€‚

่€ƒ่™‘ๅˆฐไธๅŒๅ‘่กŒ็‰ˆ็š„ๅŒ…็ฎก็†ๅ™จๅฏ่ƒฝไผšๅ†ฒ็ช๏ผŒๅ› ๆญคๅปบ่ฎฎๅœจ alpine ไธŠไฝฟ็”จ alpine ่‡ชๅฎถ็š„ apk๏ผŒ ่€Œไธๆ˜ฏ debian ็š„ dpkgใ€‚

alpine alpine & dpkgๆ‚จๅฏไปฅๆŠŠๅฎƒๆ‹†ๅ‡บๆฅ็”จ

wasm

wasm alpine & dpkg

ไธ‹่ฝฝๅฎŒ wasm.zst ๆ–‡ไปถๅŽ๏ผŒ้œ€่ฆๅฐ†ๅ…ถ่งฃๅŽ‹ๅ‡บๆฅใ€‚

ๆŽฅ็€้œ€่ฆ่Žทๅ– runtime๏ผŒ็„ถๅŽ่ฎฉ runtime ๆฅๅŠ ่ฝฝ่ฟ™ไธช wasm ๆ–‡ไปถใ€‚

ๆฏ”ๆ–น่ฏด๏ผŒๆ‚จๅฏไปฅ็”จ wasmer:

wasmer --dir . --env LANG=zh ./tomlyre.wasm

ไนŸๅฏไปฅ็”จ wasmtime:

wasmtime --dir . --env LANG=zh ./tomlyre.wasm

ๆˆ–่€…ๆ˜ฏๅ…ถไป–ๆ‚จๅ–œๆฌข็š„ runtimesใ€‚

CI

ๆ‚จๅฆ‚ๆžœ้œ€่ฆๅœจ Linux x64 ็š„ CI ็Žฏๅขƒไธญไฝฟ็”จๅฎƒ๏ผŒๅˆ™ๅฏไฝฟ็”จไปฅไธ‹ๅ‘ฝไปค

docker run -it --rm \
  -u $(id -u) \
  -v $PWD:/local \
  -w /data \
  ghcr.io/2moe/tomlyre:x86_64-unknown-linux-musl \
  cp tomlyre /local

่ฟ™็›ธๅฝ“ไบŽๆŠŠๅฎนๅ™จๅ†…้ƒจ็š„ /data/tomlyre ๅคๅˆถๅˆฐๅฝ“ๅ‰็›ฎๅฝ•

ๅ…ถไป–

ๅฏนไบŽไปฅ tar.xz/tar.bz2 ไธบๅŽ็ผ€็š„ๆ–‡ไปถ๏ผŒๆˆ‘ไปฌๅฏไปฅไฝฟ็”จ tar -xvf [ๅŽ‹็ผฉๅŒ…] ๆฅ่งฃๅŽ‹ใ€‚

tar -xvf x64.tar.xz

่งฃๅŽ‹ๅฎŒๆˆๅŽ๏ผŒๅœจ็ปˆ็ซฏ้‡Œ่ฐƒ็”จ ./tomlyre ๅณๅฏใ€‚

ๅŠŸ่ƒฝ

ๆ ธๅฟƒๅŠŸ่ƒฝๅชๆœ‰ไธ‰ไธช๏ผš

  • ่ฝฌๆข (conv)
  • ่Žทๅ– (get)
  • ่ฎพ็ฝฎ/ไฟฎๆ”น (set)

้™คๆญคไน‹ๅค–๏ผŒๅ…จ้ƒฝๆ˜ฏ้ขๅค–็š„ๅŠŸ่ƒฝ๏ผŒไพ‹ๅฆ‚่ฎพ็ฝฎไธป้ข˜ไธŽ่กจๆ ผ็š„ๆ ทๅผใ€‚

ไฝฟ็”จ --help ่ƒฝ่Žทๅ–่ฏฆ็ป†็š„ๅธฎๅŠฉไฟกๆฏใ€‚

  • tomlyre set ็›ธๅฝ“ไบŽ tomlyre set -h ๏ผŒๅฎƒไผš่พ“ๅ‡บ็ฎ€ๆด็š„ๅธฎๅŠฉไฟกๆฏใ€‚
  • tomlyre set --help ไผš่พ“ๅ‡บ้žๅธธ่ฏฆ็ป†็š„ไฟกๆฏใ€‚
  • ๅŒ็†๏ผŒๅ…ถไป–ๅญๅ‘ฝไปคไนŸ่ƒฝ่ฐƒ็”จ --helpใ€‚
set_help

set --help

conv_help

conv --help

ไธป้ข˜

ไฝฟ็”จ --theme ๅ‚ๆ•ฐ (ๅฏไปฅ็ฎ€ๅ†™ไธบ -t) ๆฅๆŒ‡ๅฎšไธป้ข˜๏ผŒไพ‹ๅฆ‚ tomlyre -t "One Dark" conv test.yml -t jsonใ€‚

conv ๅญๅ‘ฝไปค็š„ -t ๆŒ‡็š„ๆ˜ฏ --to๏ผŒ่€Œๆ นๅ‘ฝไปค็š„ -t ๅˆ™ๆ˜ฏ --themeใ€‚

ๅฝ“ๆœชๆŒ‡ๅฎšไธป้ข˜ๅ็งฐๆ—ถ๏ผŒไผšๅˆ—ไธพๅ‡บๆ‰€ๆœ‰็š„ไธป้ข˜ใ€‚

ไปฅไธ‹ๆ˜ฏๅ†…็ฝฎ็š„ไธป้ข˜๏ผŒๆ‚จๅฏไปฅๆ‰‹ๅŠจ่ฝฝๅ…ฅไธป้ข˜้›†ๅˆๅŒ…๏ผŒๅนถๆŒ‡ๅฎšๅ็งฐ๏ผŒ่€Œไธๆ˜ฏไฝฟ็”จๅ†…็ฝฎ็š„ไธป้ข˜ใ€‚

่ฟ™ไบ›ไธป้ข˜ๅคง้ƒฝไฝฟ็”จ MIT License๏ผŒๆ‚จๅฏไปฅๅœจ hlight/dev/assets/theme ้‡Œๆ‰พๅˆฐๅ†…็ฝฎไธป้ข˜ไปฅๅŠ็›ธๅ…ณ็š„่ฎธๅฏ่ฏๆ–‡ไปถใ€‚

dracula monokai-bright
monokai monokai-light
onedark one-dark-tomorrow
one-half-dark one-half-light
widget-one-dark ayu-light.png
ayu-dark ayu-migrage

่กจๆ ผๆ ทๅผ

ไฝฟ็”จ --table-style ๆฅๆŒ‡ๅฎš่กจๆ ผๆ ทๅผ(ๅฏไปฅ็ฎ€ๅ†™ไธบ --ts)๏ผŒไพ‹ๅฆ‚: --table-style markdown ๆˆ– --ts md ๅฏไปฅๆŒ‡ๅฎš่กจๆ ผๆ ทๅผไธบ markdownใ€‚

tomlyre --ts md get Cargo.toml -k profile.fat
profile.fat ็ฑปๅž‹ Value
inherits str thin
lto str fat
opt-level str z

ไปฅไธ‹ไธบๅ†…็ฝฎ็š„่กจๆ ผๆ ทๅผ๏ผš ๏ผˆ้ž็ญ‰ๅฎฝๅญ—ไฝ“ๅฏ่ƒฝไผšๅ‡บ็ŽฐๆŽ’็‰ˆๅผ‚ๅธธ็š„้—ฎ้ข˜๏ผ‰


style: default

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Version โ”† Codename โ”† Created    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 10      โ”† Buster   โ”† 2017-06-17 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 11      โ”† Bullseye โ”† 2019-07-16 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 12      โ”† Bookworm โ”† 2021-08-14 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 13      โ”† Trixie   โ”† 2023       โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 14      โ”† Forky    โ”† 2025       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ


style: nothing

 Version  Codename  Created
 10       Buster    2017-06-17
 11       Bullseye  2019-07-16
 12       Bookworm  2021-08-14
 13       Trixie    2023
 14       Forky     2025


style: ascii

+---------+----------+------------+
| Version | Codename | Created    |
+=================================+
| 10      | Buster   | 2017-06-17 |
|---------+----------+------------|
| 11      | Bullseye | 2019-07-16 |
|---------+----------+------------|
| 12      | Bookworm | 2021-08-14 |
|---------+----------+------------|
| 13      | Trixie   | 2023       |
|---------+----------+------------|
| 14      | Forky    | 2025       |
+---------+----------+------------+


style: ascii-borders

+---------------------------------+
| Version   Codename   Created    |
+=================================+
| 10        Buster     2017-06-17 |
| 11        Bullseye   2019-07-16 |
| 12        Bookworm   2021-08-14 |
| 13        Trixie     2023       |
| 14        Forky      2025       |
+---------------------------------+


style: right-u8-fat

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version โ”‚ Codename โ”‚ Created    โ”‚
โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
โ”‚ 10      โ”‚ Buster   โ”‚ 2017-06-17 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 11      โ”‚ Bullseye โ”‚ 2019-07-16 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 12      โ”‚ Bookworm โ”‚ 2021-08-14 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 13      โ”‚ Trixie   โ”‚ 2023       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 14      โ”‚ Forky    โ”‚ 2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: right-u8

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version โ”‚ Codename โ”‚ Created    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 10      โ”‚ Buster   โ”‚ 2017-06-17 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 11      โ”‚ Bullseye โ”‚ 2019-07-16 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 12      โ”‚ Bookworm โ”‚ 2021-08-14 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 13      โ”‚ Trixie   โ”‚ 2023       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 14      โ”‚ Forky    โ”‚ 2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: right-u8-thin

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version โ”† Codename โ”† Created    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 10      โ”† Buster   โ”† 2017-06-17 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 11      โ”† Bullseye โ”† 2019-07-16 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 12      โ”† Bookworm โ”† 2021-08-14 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 13      โ”† Trixie   โ”† 2023       โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 14      โ”† Forky    โ”† 2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: u8

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version โ”† Codename โ”† Created    โ”‚
โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
โ”‚ 10      โ”† Buster   โ”† 2017-06-17 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 11      โ”† Bullseye โ”† 2019-07-16 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 12      โ”† Bookworm โ”† 2021-08-14 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 13      โ”† Trixie   โ”† 2023       โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 14      โ”† Forky    โ”† 2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: u8-no-dividers

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version โ”† Codename โ”† Created    โ”‚
โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
โ”‚ 10      โ”† Buster   โ”† 2017-06-17 โ”‚
โ”‚ 11      โ”† Bullseye โ”† 2019-07-16 โ”‚
โ”‚ 12      โ”† Bookworm โ”† 2021-08-14 โ”‚
โ”‚ 13      โ”† Trixie   โ”† 2023       โ”‚
โ”‚ 14      โ”† Forky    โ”† 2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: u8-borders

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Version   Codename   Created    โ”‚
โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
โ”‚ 10        Buster     2017-06-17 โ”‚
โ”‚ 11        Bullseye   2019-07-16 โ”‚
โ”‚ 12        Bookworm   2021-08-14 โ”‚
โ”‚ 13        Trixie     2023       โ”‚
โ”‚ 14        Forky      2025       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜


style: u8-no-borders

 Version โ”† Codename โ”† Created
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
 10      โ”† Buster   โ”† 2017-06-17
โ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œ
 11      โ”† Bullseye โ”† 2019-07-16
โ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œ
 12      โ”† Bookworm โ”† 2021-08-14
โ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œ
 13      โ”† Trixie   โ”† 2023
โ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œ
 14      โ”† Forky    โ”† 2025


style: horizontal

---------------------------------
 Version   Codename   Created
=================================
 10        Buster     2017-06-17
---------------------------------
 11        Bullseye   2019-07-16
---------------------------------
 12        Bookworm   2021-08-14
---------------------------------
 13        Trixie     2023
---------------------------------
 14        Forky      2025
---------------------------------


style: round-u8

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Version โ”‚ Codename โ”‚ Created    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 10      โ”‚ Buster   โ”‚ 2017-06-17 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 11      โ”‚ Bullseye โ”‚ 2019-07-16 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 12      โ”‚ Bookworm โ”‚ 2021-08-14 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 13      โ”‚ Trixie   โ”‚ 2023       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 14      โ”‚ Forky    โ”‚ 2025       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ


style: round-u8-fat

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ Version โ”† Codename โ”† Created    โ”‚
โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
โ”‚ 10      โ”† Buster   โ”† 2017-06-17 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 11      โ”† Bullseye โ”† 2019-07-16 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 12      โ”† Bookworm โ”† 2021-08-14 โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 13      โ”† Trixie   โ”† 2023       โ”‚
โ”œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ผโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ•Œโ”ค
โ”‚ 14      โ”† Forky    โ”† 2025       โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ


style: markdown

| Version | Codename | Created    |
|---------|----------|------------|
| 10      | Buster   | 2017-06-17 |
| 11      | Bullseye | 2019-07-16 |
| 12      | Bookworm | 2021-08-14 |
| 13      | Trixie   | 2023       |
| 14      | Forky    | 2025       |

conv

่ญฆๅ‘Š๏ผšๅฆ‚ๆžœไธค็ง้…็ฝฎไน‹้—ด็š„ๆ•ฐๆฎ็ฑปๅž‹ไธ่ƒฝๅฎŒๅ…จๅ…ผๅฎน๏ผŒ้‚ฃไนˆ่ฝฌๆขๅŽๆ•ฐๆฎ็ฑปๅž‹ไผšๅ‘็”Ÿๆ”นๅ˜ใ€‚


ๆฏ”ๅฆ‚่ฏด ron ๆœ‰ char ็ฑปๅž‹๏ผŒไปฃ่กจๅ•ไธชๅญ—็ฌฆใ€‚

ไปฅ hello๏ผŒไธ–็•Œ ไธบไพ‹ ๏ผŒ่ฟ™ๆ˜ฏไธ€ไธช stringใ€‚
'h' ๆ˜ฏ char, "h" ๆ˜ฏ stringใ€‚
"ไธ–็•Œ" ๆ˜ฏ string, 'ไธ–' ๆ˜ฏ charใ€‚

็„ถ่€Œ๏ผŒjson 1.0 ๅ’Œ toml 1.0 ้ƒฝๆฒกๆœ‰ char ็ฑปๅž‹ใ€‚

hello.ron:

{
   "s": 'ไธ–',
   "j": '็•Œ',
}
tomlyre c hello.ron -t json

json:

{
  "j": "็•Œ",
  "s": "ไธ–"
}

ๅ› ๆญค๏ผŒron ็š„ char ่ฝฌๆˆ json 1.0 ไผšๅ˜ๆˆ stringใ€‚


ๅ†ๆฏ”ๅฆ‚๏ผŒ ็›ฎๅ‰ๆœ‰ๅพˆๅคš็ง้…็ฝฎๆ ผๅผ้ƒฝๆ”ฏๆŒ่ฟ™ไธค็ง็‰นๆฎŠ็š„ๆตฎ็‚นๆ•ฐ๏ผšNaN ๅ’Œ inf๏ผŒไฝ† json 1.0 ไธๆ”ฏๆŒใ€‚ ๅœจ json 1.0 ไธญ๏ผŒๅฎƒไปฌ้ƒฝไผšๅ˜ๆˆ nullใ€‚

f64-map.toml:

[double-float-map]
not-a-num = nan
infinity = inf
tomlyre conv f64-map.toml -t ./f.yaml --save

f.yaml:

double-float-map:
  infinity: .inf
  not-a-num: .nan
tomlyre conv f.yaml -t ron --sv

f.ron:

{
    "double-float-map": {
        "infinity": inf,
        "not-a-num": NaN,
    },
}
tomlyre conv f.ron -t sexp

sexp ๆŒ‡็š„ๆ˜ฏ Lisp S-Expressions

(("double-float-map" ("infinity" . inf) ("not-a-num" . NaN)))
tomlyre conv f.ron -t json
{
  "double-float-map": {
    "infinity": null,
    "not-a-num": null
  }
}
tomlyre conv f.ron -t json5
{ "double-float-map": { infinity: Infinity, "not-a-num": NaN } }

Q๏ผš json ๆœ‰๏ผŒไฝ†ๅ…ถไป–ๆ ผๅผๆฒกๆœ‰็š„ๆ•ฐๆฎ็ฑปๅž‹ๆ˜ฏไป€ไนˆ๏ผŸ

A: null

ๆฏ”ๅฆ‚่ฏด๏ผštoml 1.0 ๅ’Œ ron ้ƒฝไธๆ”ฏๆŒ null ๅ€ผ๏ผŒๅฆ‚ๆžœๅฐ†ๅŒ…ๅซ null ็š„ json 1.0 ่ฟ›่กŒ่ฝฌๆข๏ผŒtoml ไผš็›ดๆŽฅๆŠฅ้”™๏ผŒ่€Œ ron ๅˆ™ไผšๅฐ†ๅ…ถ่ฝฌๆขๆˆ็ฉบๅ…ƒ็ป„ (), ไนŸๅฐฑๆ˜ฏไฟ—็งฐ็š„ๅ•ๅ…ƒ็ฑปๅž‹๏ผˆUnit๏ผ‰ใ€‚

ๆณจ๏ผš ron ไฝฟ็”จ็š„ๆ˜ฏ Option<T> ็ฑปๅž‹, ๅ€ผไธบ Some(T) ๆˆ– None๏ผŒ่€Œไธๆ˜ฏ nullใ€‚

ๆญคๅค–๏ผŒไธๅŒ็š„้…็ฝฎๆ ผๅผไน‹้—ด่ฟ˜ๆœ‰ไธๅฐ‘็š„ๅŒบๅˆซ๏ผŒๆˆ‘ไปฌๅนถๆฒกๆœ‰ๅ…จ้ƒจๅˆ—ไธพๅ‡บๆฅใ€‚

get ไธŽ set

ๅฝ“็”จ set ๅญๅ‘ฝไปคๆŒ‡ๅฎšไบ† key, ๅนถไธ”ๆœชๆŒ‡ๅฎš value ๆ—ถ๏ผŒ็›ธๅฝ“ไบŽๆ›ด่ฏฆ็ป†็‰ˆๆœฌ็š„ setใ€‚

ๆฏ”ๅฆ‚่ฏด๏ผŒๆˆ‘ไปฌไฝฟ็”จไปฅไธ‹ๅ‘ฝไปคไปŽ stdin ไธญ่ฏปๅ–ๅนถ่งฃๆžๆ•ฐๆฎ

get ๅŽ้ข็š„ - ไปฃ่กจๆฅๆบๆ˜ฏ stdin๏ผŒ่€Œไธๆ˜ฏๅ…ทไฝ“็š„ๆ–‡ไปถ

curl -sL https://raw.githubusercontent.com/2moe/tomlyre/main/Cargo.toml | tomlyre get -  -k profile.thin.strip

ๅฝ“ไฝฟ็”จ get ๆ—ถ๏ผŒstdout ไผš่พ“ๅ‡บ trueใ€‚

่€Œๅฝ“ๆˆ‘ไปฌๆŠŠ get ๆ”นๆˆ set ๆ—ถ, ๅฎƒไผš่พ“ๅ‡บ ๏ผš

true

key:    ["profile", "thin", "strip"]
type:   boolean
value:
 true

Q: ่พ“ๅ‡บ็š„ไฟกๆฏๆ˜ฏ่ถŠๅคš่ถŠๅฅฝๅ—๏ผŸ

A: ไธๆ˜ฏ็š„๏ผ
่ฟ™ไธป่ฆๅ–ๅ†ณไบŽๆˆ‘ไปฌ็š„ไฝฟ็”จ็›ฎ็š„ใ€‚
ๅฝ“ๆˆ‘ไปฌ้œ€่ฆ็”จ่„šๆœฌๆฅ่Žทๅ–ๅ…ทไฝ“็š„ๅ€ผๆ—ถ๏ผŒๅช้œ€่ฆๆœ‰ๆ•ˆ็š„ไฟกๆฏ๏ผŒๅคšไฝ™็š„ไฟกๆฏไธไป…ๆ— ็”จ๏ผŒ่€Œไธ”่ฟ˜ไผšๅนฒๆ‰ฐๆ•ฐๆฎ็š„่Žทๅ–ใ€‚
ไธŽไน‹็›ธๅ๏ผŒๅฝ“ๆˆ‘ไปฌ้œ€่ฆๆ‰‹ๅŠจไฟฎๆ”นๆ—ถ๏ผŒๆœ‰ๅ…ทไฝ“็š„ไฟกๆฏๅพ€ๅพ€ไผšๆ›ดๅฅฝใ€‚

set

ๆˆ‘ไปฌๅฏไปฅๅฏน setๅญๅ‘ฝไปคไฝฟ็”จ --help ๆฅ่Žทๅ–่ฏฆ็ป†ไฟกๆฏใ€‚

ๅŸบๆœฌ็”จๆณ•ไธบ๏ผš set [ๆฅๆบๆ–‡ไปถ] -k [็”จ"."ๆฅๅˆ†ๅ‰ฒ็š„keys] [ๆŒ‡ๅฎšๆ•ฐๆฎ็ฑปๅž‹็š„้€‰้กน] [ๆŒ‡ๅฎšๆ•ฐๆฎ็ฑปๅž‹็š„ๅ€ผ(ๅฏ่ƒฝไธบ็ฉบ๏ผŒไนŸๅฏ่ƒฝๆœ‰ๅคšไธช)]

ไพ‹ๅฆ‚ set test.toml --key package.edition --str 2024


ๆณจๆ„๏ผš
ๅชๆœ‰ๅฝ“ src ็š„ๆ ผๅผไธบ toml ๆ—ถๆ‰ไผšไฟ็•™ๆณจ้‡Š๏ผŒๅ…ถไป–ๆ ผๅผไธไผšใ€‚
ๅ…ถไป–ๆ ผๅผไผšๅ…ˆ่ฝฌๆขๆˆ toml ๅ†่ฟ›่กŒไฟฎๆ”น๏ผŒ่ฝฌๆขๅŽ็š„ๆ–‡ไปถไธไผšไฟ็•™ๆณจ้‡Šใ€‚


ๆญคๅค„ๅชๆ˜ฏ็ฎ€ๅ•ๅœฐๅˆ—ไธพไธ€ไธ‹ๅฎƒๆ”ฏๆŒ็š„ๆ•ฐๆฎ็ฑปๅž‹ใ€‚

ๅŸบๆœฌๆ•ฐๆฎ็ฑปๅž‹

้€‰้กน ๅˆซๅ ๅ€ผ็š„็ฑปๅž‹ ๆ่ฟฐ ็คบไพ‹
-s --str String ๅญ—็ฌฆไธฒ็ฑปๅž‹ -s "1.114.5-beta.1"
-b --bool bool ๅธƒๅฐ”็ฑปๅž‹ -b true
--f64 f64 ๅŒ็ฒพๅบฆๆตฎ็‚นๆ•ฐ็ฑปๅž‹ --f64 314e-2
-n --num/--int i64 64 ไฝๆœ‰็ฌฆๅทๆ•ดๆ•ฐ็ฑปๅž‹ -n 2048
-a --arr Vec<String> ๅญ—็ฌฆไธฒ็š„ๆ•ฐ็ป„ -a hello -a world
--num-arr --na Vec<i64> i64 ็š„ๆ•ฐ็ป„ --na 11 --na -3
--f64-arr --fa Vec<f64> f64 ็š„ๆ•ฐ็ป„ --fa 3.14 --fa 2.71828182
--bool-arr --ba Vec<bool> bool ็š„ๆ•ฐ็ป„ --ba true --ba false
-i --inline-table Vec<(key, value)> ๅ†…่”่กจ -i name sd -i os android
--rm ๅˆ ๆŽ‰ๆŒ‡ๅฎš็š„ key ๅŠๅ…ถ value

ๆญคๅค–๏ผŒ่ฟ˜ๆœ‰ไธ€ไบ›ไธ้‚ฃไนˆโ€œๅŸบๆœฌโ€็š„ๆ•ฐๆฎ็ฑปๅž‹ใ€‚ๆฏ”ๅฆ‚โ€œๆ ‡ๅ‡†่กจโ€๏ผŒโ€œ่กจๆ•ฐ็ป„โ€๏ผŒไปฅๅŠ DateTimeใ€‚

ๆ ‡ๅ‡†่กจๅ’Œๅ†…่”่กจๅพˆๅƒ๏ผŒๅฆ‚ๆžœไธ็Ÿฅ้“็”จๅ“ชไธช๏ผŒ้‚ฃๅฐฑ็”จ -i, ่€Œไธๆ˜ฏ็”จ -mใ€‚
ๅฏนไบŽ toml ไปฅๅค–็š„ๆ ผๅผ๏ผŒๅˆ›ๅปบๆ–ฐ่กจๆ—ถ๏ผŒ่ฏทไธ€ๅพ‹ไฝฟ็”จ -i, ่€Œไธๆ˜ฏ -m๏ผ

ๅ‡่ฎพ hello.toml ้‡Œ้ขๆœ‰ไธชๅไธบ test ็š„่กจๆ•ฐ็ป„๏ผŒ็ดขๅผ•ไธบ 0 ็š„ map ๆœ‰ไธช key ๅซ kk, ๅ…ถๅ€ผไธบ vใ€‚

[[test]]
kk = "v"
set hello.toml -k test.
test. ็ฑปๅž‹ Value
0.kk str v
key:    ["test"]
type:   array of tables
value:
[{ kk = "v" }]

่ฎฉๆˆ‘ไปฌ็”จ -m ๆˆ– --table ๆฅๅˆ›ๅปบไธ€ไธชๅญ่กจ็œ‹็œ‹ใ€‚

set hello.toml --key test.0.a --map hello world --pre

่พ“ๅ‡บๅ†…ๅฎน:

key: ["test", "0", "a"]
type: table
new value: hello = "world"
test.0 ็ฑปๅž‹ ๆ–ฐๅ€ผ(value)
kk str v
a.hello str world
[[test]]
kk = "v"

[test.a]
hello = "world"

็œ‹่ตทๆฅๅฅฝๅƒๆฒก้—ฎ้ข˜๏ผŒๅ†็”จๅ†…่”่กจ่ฏ•่ฏ•ใ€‚

set hello.toml -k test.0.a -i hello world --pre

่พ“ๅ‡บๅ†…ๅฎน:

[[test]]
kk = "v"
a = { hello = "world" }

ๅฏนไบŽ่ฟ™็งๆƒ…ๅ†ต๏ผŒๆ ‡ๅ‡†่กจไธŽๅ†…่”่กจๆ˜ฏไธ€ๆ ท็š„ใ€‚๏ผˆ่™ฝ็„ถ็œ‹่ตทๆฅไธไธ€ๆ ท๏ผŒไฝ†ๆ˜ฏๅ…ถ่งฃๆž็š„็ป“ๆžœๆ˜ฏไธ€ๆ ท็š„ใ€‚๏ผ‰

ๅฏๆ˜ฏๅฝ“ key ไธบ test.0.x.y.z ๆ—ถ๏ผŒ้‡Œ้ขๆœ‰ๅคšไธชไธๅญ˜ๅœจ็š„ๅตŒๅฅ—ๅญ่กจ๏ผŒๆ‚จๅฏไปฅๅฐ่ฏ•ๅˆ†ๅˆซ็”จ-m ไธŽ -iใ€‚

ๅœจไบฒ่‡ชๅฐ่ฏ•ไน‹ๅŽ๏ผŒๆˆ‘็›ธไฟกๆ‚จๅฎš่ƒฝ็Ÿฅๆ™“ไธไฝฟ็”จ -m ็š„็ผ˜็”ฑใ€‚

ๆ—ฅๅฟ—็บงๅˆซ

่ฏฆ็ป†็จ‹ๅบฆไปŽ้ซ˜ๅˆฐไฝŽ๏ผŒไพๆฌกๆ˜ฏ trace > debug > info > warn > error

ๅ…ถไธญ trace ๆ˜ฏๆœ€่ฏฆ็ป†็š„ใ€‚

้ป˜่ฎค็š„็บงๅˆซไธบ infoใ€‚

ๆˆ‘ไปฌๅฏไปฅ้€š่ฟ‡่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡ๆฅไฟฎๆ”นๆ—ฅๅฟ—็บงๅˆซ

v0.0.1-beta.1 ๅŠๅ…ถไน‹ๅ‰็š„็‰ˆๆœฌไฝฟ็”จ RUST_LOG ็Žฏๅขƒๅ˜้‡๏ผŒ ่€Œไธๆ˜ฏ TOMLYRE_LOG

env TOMLYRE_LOG=debug tomlyre

้ข˜ๅค–่ฏ

่ฎพ่ฎกๅˆ่กท

Q: ่ฟ™ไธชๅทฅๅ…ท็š„่ฎพ่ฎกๅˆ่กทๆ˜ฏไป€ไนˆ๏ผŸ

A: ๅˆ่กทๆ˜ฏ่ฎฉๅคงๅฎถๅœจ CLI ้‡Œ๏ผŒ่ƒฝไปฅไธ€็ง็ฎ€ๅ•ๅ’Œไผ˜้›…็š„ๆ–นๅผๅŽปๆŸฅ่ฏขไธŽไฟฎๆ”น้…็ฝฎๆ–‡ไปถใ€‚

ๅคงๆฆ‚ๅœจไธ€ไธคๅนดๅ‰็š„ๆ—ถๅ€™๏ผŒๆˆ‘ๆ›พๅœจๅฆไธ€ไธช้กน็›ฎ็š„ๆ–‡ๆกฃไธญ่ฏด่ฟ‡๏ผš

  • ้‚ฃไธช้กน็›ฎไน‹ๅŽไผš็”จ toml ๆ ผๅผ่ฟ›่กŒ้…็ฝฎ
    • ๅนถไธ”่ฟ˜ไป‹็ปไบ†ไธ€ไบ›ๅ…ทไฝ“็š„็ป†่Š‚
      • ๆฏ”ๅฆ‚็”จ get ๅญๅ‘ฝไปคๆฅ่Žทๅ–
      • ็”จ set ๆฅไฟฎๆ”น

ๅœจ่ฎพ่ฎกๆ—ถ๏ผŒๆˆ‘ไธ€็›ดๅœจ็บ ็ป“๏ผŒๆˆ‘ๅˆฐๅบ•่ฏฅ็”จ tomlใ€yaml ่ฟ˜ๆ˜ฏ ron๏ผŒๆˆ–่€…ๆ˜ฏๅš็š„ๆ›ด็ปไธ€็‚น๏ผŒ็›ดๆŽฅ็”จๆ•ฐๆฎๅบ“ๅ‘ข๏ผŸ

่ตทๅˆ็š„ๆ—ถๅ€™๏ผŒๆˆ‘ๅทฒ็ปๅ†™ๅฎŒไบ†ๅŒๆ—ถๆ”ฏๆŒ toml ไธŽ yaml ็š„ไปฃ็ ใ€‚
่ฟ™ๆถ‰ๅŠๅˆฐไบ†่งฃๆžไผ˜ๅ…ˆ้กบๅบ็š„้—ฎ้ข˜ใ€‚
ๅฝ“ๅŒๆ—ถๅญ˜ๅœจไปฅไธ‹ๆ–‡ไปถๆ—ถ๏ผŒ็จ‹ๅบๅบ”่ฏฅๅ…ˆ่งฃๆžๅ“ชไธ€ไธชๅ‘ข๏ผŸ

  • cfg.toml
  • cfg.Toml
  • cfg.yaml
  • cfg.yml
  • cfg.YAML
  • cfg.YML
  • cfg.Yaml

่ฟ™ๆ—ถๅ€™ๅฐฑ่ฆๆœ‰ๆ ธๅฟƒ้…็ฝฎไบ†๏ผŒ้€š่ฟ‡ๆ ธๅฟƒ้…็ฝฎๆฅๆŒ‡ๅฎš็”จๆˆท้…็ฝฎใ€‚
้‚ฃไนˆ้—ฎ้ข˜ๆฅไบ†๏ผŒๆ ธๅฟƒ้…็ฝฎๆ˜ฏไป€ไนˆๆ ผๅผๅ‘ข๏ผŸ
ๆˆ‘ไปฌๅฏไปฅ็Žฏๅขƒๅ˜้‡ๆฅๆŒ‡ๅฎšๆ ธๅฟƒ้…็ฝฎ็š„ๆ ผๅผใ€‚

่ฟ™ไนˆ็œ‹ๆฅ่ฒŒไผผไธๆ˜ฏๅพˆ้šพๅ‘€๏ผ

่ฏทๆณจๆ„๏ผšไธๅŒๆ ผๅผๆœ‰็€ไธๅŒ็š„่ง„่Œƒ๏ผŒๅ…ผๅฎนไธๅŒๆ ผๅผๅพ—่ฆไบ†่งฃๅฎƒไปฌไน‹้—ด็š„ๅทฎๅผ‚ใ€‚
ๅฆ‚ๆžœ่ฆๆ”ฏๆŒๆ›ดๅคš็š„ๆ ผๅผ๏ผŒ้‚ฃไนˆไผšๅ˜ๅพ—ๆœ‰็‚น้บป็ƒฆใ€‚

ๆœ‰ไบ›ไบ‹ๆƒ…ๆœฌ่บซไธๆ˜ฏๅพˆ้šพ๏ผŒไฝ†ๆ˜ฏ้œ€่ฆ่Šฑๅพˆๅคšๆ—ถ้—ดๅ’Œ็ฒพๅŠ›ๅŽปๅค„็†ใ€‚

ๆœ€็ปˆ๏ผŒๆˆ‘ๆŠŠๅฎƒๅˆ†็ฆปๆˆๅ•็‹ฌ็š„ๅฐๅทฅๅ…ทใ€‚

่ฟ™ๆ ทๅญ๏ผŒๅคงๅฎถๅฏไปฅ้€š่ฟ‡่ฟ™ไธชๅฐๅทฅๅ…ทๆฅ้—ดๆŽฅๆ”ฏๆŒๅคš็งๆ ผๅผใ€‚๏ผˆๆˆ‘ไปฌ็œ‹ๅˆฐ็š„ๆ˜ฏ yaml, ไฝ†ๆ˜ฏๅฎž้™…ไฟฎๆ”น็š„ๆ˜ฏ toml ๆ–‡ไปถ๏ผ‰

yaml

Q: ไธบไป€ไนˆ่ฆๆ”ฏๆŒๅคš็ง้…็ฝฎๆ ผๅผๅ‘ข๏ผŸๅคงๅฎถ้ƒฝ่ฏด yaml ็š„ๅฏ่ฏปๆ€งๅฅฝ๏ผŒๅชๆ”ฏๆŒ yaml ไธ่กŒๅ—๏ผŸ

่™ฝ็„ถๆˆ‘ๅพˆๆƒณๅšๅฎšๅœฐๅ›ž็ญ”๏ผšโ€œไธ่กŒ๏ผโ€๏ผŒไฝ†ๅฎž้™…ไธŠ่ฟ™ๅ–ๅ†ณไบŽๆ‚จไปฅๅŠๆ‚จ็š„็”จๆˆท็š„้œ€ๆฑ‚ใ€‚

yaml ๆ”ฏๆŒๆฏ” toml ๅ’Œ json ๆ›ด้ซ˜็บง็š„ๅŠŸ่ƒฝ๏ผŒๅฆ‚ ๅผ•็”จ, ๅŒ…ๅซ ๅ’Œ ๆ ‡็ญพ ็ญ‰ใ€‚

  1. ้”š็‚น(anchor)ๅ’Œๅˆซๅ(alias): ๅ…่ฎธๅœจๅŒไธ€ๆ–‡ๆกฃไธญๅค็”จ็›ธๅŒ็š„ๆ•ฐๆฎ็ป“ๆž„ๆˆ–่Š‚็‚นใ€‚ Anchor and Alias: Allows reusing the same data structure or node within the same document.

  2. ๅผ•็”จ(References): ๅ…่ฎธๅœจ YAML ๆ–‡ๆกฃไธญๅผ•็”จๅ…ถไป–่Š‚็‚น็š„ๅ€ผใ€‚ References: Allows referencing values from other nodes within a YAML document.

  3. ่‡ชๅฎšไน‰ๆ ‡็ญพ(Custom Tags): ๅ…่ฎธๅฎšไน‰่‡ชๅทฑ็š„ๆ ‡็ญพ๏ผŒๆ›ดๅฅฝๅœฐๆŽงๅˆถ YAML ๆ•ฐๆฎ็ฑปๅž‹็š„่งฃๆžใ€‚ Custom Tags: Allows defining custom tags to better control the parsing of YAML data types.

  4. ๅŒ…ๅซ(Includes): ๅ…่ฎธๅฐ†ๅคšไธช YAML ๆ–‡ไปถ็ป„ๅˆๆˆไธ€ไธชๆ–‡ไปถ๏ผŒๆ้ซ˜ๅฏ้‡็”จๆ€ง๏ผˆๅค็”จๆ€ง๏ผ‰ใ€‚ Includes: Allows combining multiple YAML files into one file, improving code reusability

ๆ‚จๅฆ‚ๆžœ้œ€่ฆ่ฟ™ไบ›ๅŠŸ่ƒฝ๏ผŒ้‚ฃไนˆไฝฟ็”จ yaml ๆ˜ฏไธ€ไธชๆžไฝณ็š„้€‰ๆ‹ฉใ€‚

ๆ‚จๅฆ‚ๆžœไธ้œ€่ฆ่ฟ™ไบ›ๅŠŸ่ƒฝ๏ผŒ้‚ฃไนˆ้€‰ๆ‹ฉ yaml ๆ˜ฏๅฆๅ€ผๅพ—ๅ‘ข๏ผŸ

่ฟ™ไธช้—ฎ้ข˜ๅ€ผๅพ—ๆŽข่ฎจใ€‚

ๆญฃๆ–น่ง‚็‚น๏ผšๅŠŸ่ƒฝ่ถŠๅคš่ถŠๅฅฝ๏ผŒๆˆ‘ๅฏไปฅไธ็”จ๏ผŒไฝ†ๆ˜ฏไฝ ไธ่ƒฝๆฒกๆœ‰ใ€‚

ๅๆ–น่ง‚็‚น๏ผšๅคชๅคšๅŠŸ่ƒฝไผšๅขžๅŠ ๅคๆ‚ๅบฆๅ’Œๆททไนฑๅบฆใ€‚

้™คไบ†ๅฏ่ฏปๆ€งๅ’ŒๅŠŸ่ƒฝ็š„ๆƒ่กกๅค–๏ผŒ่ฟ˜่ฆ่€ƒ่™‘ๆ™ฎ้€š็”จๆˆท็š„ๆ„Ÿๅ—ใ€‚

ๅฆ‚ๆžœไธ€ไธช้…็ฝฎๆ–‡ไปถๅŒ…ๅซไบ†ๅคๆ‚็š„ๅตŒๅฅ—็ป“ๆž„๏ผŒๅนถไธ”ๆ‚จ็š„็”จๆˆทๆฒกๆœ‰ไธ€ไธช โ€œ้ซ˜็บงโ€ ็š„็ผ–่พ‘ๅ™จ๏ผŒ้‚ฃไนˆ yaml ็š„็ผฉ่ฟ›็‰นๆ€งๅฏ่ƒฝๅพˆๅฎนๆ˜“ๅฏผ่‡ด็ผ–ๅ†™ๅ‡บ้”™ใ€‚

ๅฆ‚ๆžœๆ‚จ็š„็”จๆˆทๅฏ่ƒฝไผšๅœจๆ—ฉๆœŸ Windows ็š„ notepad(่ฎฐไบ‹ๆœฌ) ไธŠ็ผ–ๅ†™้…็ฝฎ๏ผŒ้‚ฃไนˆไฝฟ็”จ toml ไผšไธไผšๆฏ” yaml ๆ›ดๅฅฝๅ‘ข๏ผŸ

ๆ—ฉๆœŸๆŒ‡็š„ๆ˜ฏ 2022 ๅนดไปฅๅ‰็š„ Windows 10๏ผŒ้‚ฃๆ—ถๅ€™็š„ notepad ๅชๆœ‰ๆœ€ๅŸบๆœฌ็š„ๅŠŸ่ƒฝใ€‚
Windows ็š„ๅทฅๅ…ทๅœจไธๆ–ญๅ‘ๅฑ•๏ผŒไนŸ่ฎธๆœ‰ไธ€ๅคฉ๏ผŒnotepad ไนŸๆœ‰่ฏญๆณ•้ซ˜ไบฎ๏ผŒ็ฉบ็™ฝๅญ—็ฌฆๆ˜พ็คบๅ’Œไปฃ็ ่กฅๅ…จ็ญ‰้ซ˜็บงๅŠŸ่ƒฝใ€‚ๅ› ๆญคๆˆ‘ๅฐ†ๅ…ถ้™ๅฎšไธบโ€œๆ—ฉๆœŸโ€ใ€‚

็”จ Windows ๅฏ่ƒฝไธๅคชๆฐๅฝ“๏ผŒๅ› ไธบ Windows ไธŠ็š„็ผ–่พ‘ๅ™จ่ฝฏไปถ้žๅธธไธฐๅฏŒใ€‚
ๅฐฑ็ฎ—ไฝ ๅœจๅคง่ก—ไธŠ้šไพฟๆ‰พไธชๅฐๅญฉๅญ๏ผŒไป–้ƒฝ่ƒฝๅธฎไฝ ่ฝปๆพๆžๅฎš็ผ–่พ‘ๅ™จ่ฝฏไปถ็š„ๅฎ‰่ฃ…ใ€‚

ไบŽๆ˜ฏ๏ผŒๆˆ‘ไปฌๆŠŠ้—ฎ้ข˜ๅ˜ๆˆไบ†๏ผšโ€œๆ‚จๅฅฝ๏ผŒๆˆ‘็š„็Žฏๅขƒๆ˜ฏ riscv64 ๆžถๆž„๏ผŒuClibc ็š„ Linux, ๆฒกๆœ‰ๅŒ…็ฎก็†ๅ™จ๏ผŒ่ฏท้—ฎๆ‚จ่ƒฝๅฆๅœจๆ‚จ็š„็”ต่„‘ไธŠๅธฎๆˆ‘้…็ฝฎไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒ๏ผŸๅ†็ผ–่ฏ‘ไธ€ไธช่ถ…่ฝป้‡็บง็š„็ผ–่พ‘ๅ™จ๏ผŒ้œ€่ฆๆœ‰่ฏญๆณ•้ซ˜ไบฎ๏ผŒๅนถไธ”่ƒฝๅฏน็ฉบ็™ฝๅญ—็ฌฆ่ฟ›่กŒ้ซ˜ไบฎๆ˜พ็คบใ€‚โ€

emmm๏ผŒ่ฟ˜ๆ˜ฏไธ่ฆๅคชไธบ้šพ้‚ฃไธชๅฐๆœ‹ๅ‹ไบ†ใ€‚