Commit Graph

22 Commits

Author SHA1 Message Date
Lukas Kalbertodt
337fb3204f Fix some clippy warnings 2022-10-24 10:19:35 +02:00
Lukas Kalbertodt
0e47eb7acf Format code
This is `cargo fmt` but with lots of changes reverted and some adjusted.
2022-10-24 10:13:06 +02:00
Lukas Kalbertodt
d1a62e47eb Add map default values (e.g. default = { "foo": 33 })
This commit also adds a bunch of tests testing maps in several
situations.
2022-10-21 18:13:59 +02:00
Lukas Kalbertodt
52b9369f9a Make all FormatOptions #[non_exhaustive]
This is to make adding fields to those structs a non-breaking change.
This unfortunately means that users cannot use the struct initializer
syntax anymore. They have to create a mutable variable and change fields
that way. It's slightly annoying, but I think we want `non_exhaustive`.

Also, there are multiple discussions and pre-RFCs for letting Rust allow
the struct initializer syntax when the type implements `Default`. So
maybe this will improve in the future.
2022-10-21 14:55:30 +02:00
Lukas Kalbertodt
4533f2b2d4 Fix visibility of template module and items
The trait and `template::format` are now crate-private as I don't want
to expose that API surface (alongside the `TomlFormatter` types).
2022-10-21 12:39:41 +02:00
Lukas Kalbertodt
a784e6ee64 Rename format to template (except template::format()) 2022-10-21 12:02:13 +02:00
Lukas Kalbertodt
6a9ccd4e22 Do major refactor of format code
This gets rid of a lot of duplicated logic that was previously
copy&pasted. This commit alos:
- Makes it easier to implement new formats
- Gets rid of a few bugs
- Makes the system more flexible (more options)
- Adds a lot of additional tests
2022-10-19 17:12:32 +02:00
Lukas Kalbertodt
44f59f415a Implement Serialize for meta::Expr and use it in PrintExpr
This probably fixes a few edge case bugs (float infinity and stuff) and
results in less code.
2022-10-19 17:10:17 +02:00
Lukas Kalbertodt
4f5c458150 Add YAML formatting tests 2022-10-19 10:12:25 +02:00
Lukas Kalbertodt
dd55a17b14 Show env key in config template 2022-10-18 16:07:51 +02:00
Lukas Kalbertodt
f0895a8b2f Add support for array default values 2022-10-17 11:29:38 +02:00
Lukas Kalbertodt
5c3315b015 Move to Rust edition 2021 2022-10-14 16:42:49 +02:00
Lukas Kalbertodt
56f8ff24d5 Improve toml::format regarding space above nested objects 2022-04-07 17:19:38 +02:00
Lukas Kalbertodt
8db8fcafc4 Add two toml::format tests 2022-04-07 14:00:56 +02:00
Lukas Kalbertodt
1c6ecdd4ad Fix doctests using derive
See https://github.com/rust-lang/rust/issues/83583
2022-03-30 17:38:39 +02:00
Lukas Kalbertodt
e801403009 Fix output of toml::format by always handling leaf fields first
Otherwise this:

```
struct Config {
    #[config(nested)]
    foo: ...,
    bar: ...,
}
```

would emit:

```
[foo]

```

Which is incorrect.
2022-03-30 16:15:27 +02:00
Lukas Kalbertodt
271a807ab0 Fix emission of TOML strings (in particular, quoting) 2021-07-27 15:10:07 +02:00
Lukas Kalbertodt
0bc105b22d Add yaml::format 2021-07-27 15:05:07 +02:00
Lukas Kalbertodt
db2aebc270 Parse #[env] attribute and representing it in meta types 2021-07-25 11:36:36 +02:00
Lukas Kalbertodt
ebd8aba2fa Disallow Option<_> type for fields with #[nested] or #[default]
Regarding nested fields: I cannot imagine a situation where that
distinction is useful. Also, specifying an empty nested object looks
stupid in TOML and YAML anyway.

Regarding default fields: If there is a default value, then the field
should not be declared as optional to begin with.
2021-07-25 10:46:06 +02:00
Lukas Kalbertodt
6aece589c4 Add toml::FormatOptions::comments 2021-07-24 19:44:27 +02:00
Lukas Kalbertodt
ceb9799e55 Add toml module with format function for config templates 2021-07-24 18:48:15 +02:00