TOML All In One
TOML All In One
.toml
config file
TOML
Tom's Obvious Minimal Language / 汤姆的明显
最小语言
https://github.com/toml-lang/toml
https://en.wikipedia.org/wiki/TOML
TOML Tutorials
TOML: 简体中文
v1.0.0
TOML v1.0.0
全称:Tom 的(语义)明显、(配置)最小化的语言。(Tom's Obvious, Minimal Language)
作者:Tom Preston-Werner、Pradyun Gedam 等人。
宗旨
TOML 旨在成为一个语义明显且易于阅读的最小化配置文件
格式。
TOML 被设计成可以无歧义
地映射
为哈希表
。
TOML 应该能很容易地被解析
成各种语言中的数据结构
。
规格
TOML 是大小写
敏感的。
TOML 文件必须是合法的 UTF-8
编码的 Unicode
文档。
空白是指制表符
(0x09)或空格
(0x20)。
换行是指 LF
(0x0A)或 CRLF
(0x0D 0x0A)。
注释
#
字符将该行余下的部分标记为注释
,除非它在字符串中。
# 这是一个全行注释 ✅
key = "value" # 这是一个行末注释 ✅
another = "# 这不是一个注释 ❌, 这是一个 value"
⚠️ 除制表符
以外的控制字符
(U+0000 至 U+0008,U+000A 至 U+001F,U+007F)不允许
出现在注释中。
键值对
TOML 文档最基本的构成区块是键值对
。
键名在等号的左边
而值在右边
。
键名和键值周围的空白
会被忽略
。
键、等号和值必须在同一行
(不过有些
值可以跨多行
❓)。
key = "value"
值必须是下述类型
之一。
字符串
整数
浮点数
布尔值
坐标日期时刻
各地日期时刻
各地日期
各地时刻
数组
内联表
不指定值是非法的
。
key = # 非法
键值对后必须换行
(或结束文件)。
(例外见内联表)
# ❌
first = "Tom" last = "Preston-Werner" # 非法
# ✅
first = "Tom"
last = "Preston-Werner"
键名
字符串
整数
浮点数
布尔值
坐标日期时刻
各地日期时刻
各地日期
各地时刻
数组
表
内联表
内联表提供了一种更为紧凑的语法来表示表。
它们对于分组数据特别有用,否则这些数据很快就会变得冗长。
内联表被完整地定义在花括号之中:{
和 }
。 括号中,可以出现零或更多个以逗号分隔的键值对。
键值对采取与标准表中的键值对相同的形式。
什么类型的值都可以,包括内联表。
内联表得出现在同一行内。
内联表中,最后一对键值对后不允许终逗号(也称为尾逗号)。
不允许花括号中出现任何换行,除非在值中它们合法。
即便如此,也强烈不建议把一个内联表搞成纵跨多行的样子。
如果你发现自己真的需要,那意味着你应该使用标准表。
name = { first = "Tom", last = "Preston-Werner" }
point = { x = 1, y = 2 }
animal = { type.name = "pug" }
上述内联表等同于
下面的标准表定义:
[name]
first = "Tom"
last = "Preston-Werner"
[point]
x = 1
y = 2
[animal]
type.name = "pug"
内联表是独立自足
的,在内部定义
全部的键与子表。
不能
在括号以外的地方,再添加键与子表。
[product]
type = { name = "Nail" }
# type.edible = false # 非法
类似地,内联表不能被用于
向一个已定义的表添加键或子表。
[product]
type.name = "Nail"
# type = { edible = false } # 非法
表数组
文件扩展名
MIME 类型
ABNF 语法
https://learnxinyminutes.com/docs/toml/
demos
- Python
project package
python-project-package/math_package_project/
pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "math_package_xgqfrms"
version = "0.0.1"
authors = [
{ name="xgqfrms", email="xgqfrms@xgqfrms.xyz" },
]
description = "A math package of python 3. 🐍"
# summary = "Addition, subtraction, multiplication and division"
# Additional properties are not allowed ('summary' was unexpected)Even Better TOML ❌
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Topic :: Software Development :: Libraries :: Python Modules",
"Operating System :: OS Independent",
"License :: OSI Approved :: MIT License",
]
keywords = [
"math",
"package",
"python",
"xgqfrms",
"linux",
]
license = "MIT"
# license_files = "LICENSE"
# Additional properties are not allowed ('license_files' was unexpected)Even Better TOML ❌
[project.urls]
"Homepage" = "https://github.com/xgqfrms/math_package_project"
"Bug Tracker" = "https://github.com/xgqfrms/math_package_project/issues"
https://github.com/xgqfrms/math_package_project
https://www.cnblogs.com/xgqfrms/p/17271108.html
- Rust
Cargo.toml
[package]
name = "first_rust_package"
version = "0.0.1"
edition = "2021"
# edition = "2022"
# custom config ✅
author = "xgqfrms"
editor = "vscode"
# warning: unused manifest key: package.author
# warning: unused manifest key: package.editor
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
# rust cowsay
# 配置后,无需再次手动导入外部包 external crate
# all dependencies will be auto imported 🚀
ferris-says = "0.2.1"
https://github.com/xgqfrms/rust-in-action/blob/master/test/first_rust_package/Cargo.toml
https://doc.rust-lang.org/cargo/appendix/glossary.html#manifest
https://www.cnblogs.com/xgqfrms/p/16659275.html
(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!
refs
https://www.cnblogs.com/xgqfrms/tag/TOML/
https://zzk.cnblogs.com/my/s/blogpost-p?Keywords=toml
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/17357841.html
未经授权禁止转载,违者必究!