1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
use eco_format;
use Spanned;
use crate;
use crateEngine;
use crate;
use crate;
/// Reads structured data from a TOML file.
///
/// The file must contain a valid TOML table. The TOML values will be converted
/// into corresponding Typst values as listed in the
/// @toml:conversion[table below].
///
/// The function returns a dictionary representing the TOML table.
///
/// The TOML file in the example consists of a table with the keys `title`,
/// `version`, and `authors`.
///
/// = Example <example>
/// ```example
/// #let details = toml("details.toml")
///
/// Title: #details.title \
/// Version: #details.version \
/// Authors: #(details.authors
/// .join(", ", last: " and "))
/// ```
///
/// = #short-or-long[Conversion][Conversion details] <conversion>
/// First of all, TOML documents are tables. Other values must be put in a table
/// to be encoded or decoded.
///
/// #docs-table(
/// table.header[TOML value][Converted into Typst],
///
/// [string],
/// [@str],
///
/// [integer],
/// [@int],
///
/// [float],
/// [@float],
///
/// [boolean],
/// [@bool],
///
/// [datetime],
/// [@datetime],
///
/// [array],
/// [@array],
///
/// [table],
/// [@dictionary],
/// )
///
/// #docs-table(
/// table.header[Typst value][Converted into TOML],
///
/// [types that can be converted from TOML],
/// [corresponding TOML value],
///
/// [`{none}`],
/// [ignored],
///
/// [@bytes],
/// [string via @repr],
///
/// [@symbol],
/// [string],
///
/// [@content],
/// [a table describing the content],
///
/// [other types (@length, etc.)],
/// [string via @repr],
/// )
///
/// == Notes <notes>
/// - Be aware that TOML integers larger than 2#super[63]-1 or smaller
/// than -2#super[63] cannot be represented losslessly in Typst, and an error
/// will be thrown according to the
/// #link("https://toml.io/en/v1.0.0#integer")[specification].
///
/// - Bytes are not encoded as TOML arrays for performance and readability
/// reasons. Consider using @cbor.encode for binary data.
///
/// - The `repr` function is @repr:debugging-only[for debugging purposes only],
/// and its output is not guaranteed to be stable across Typst versions.
/// Format the user-facing TOML error message.