Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5e1c7b2

Browse files
Merge pull request #156 from Muscraft/update-toml
Update toml to 0.8.0
2 parents cc8ee29 + 58425bf commit 5e1c7b2

File tree

4 files changed

+99
-77
lines changed

4 files changed

+99
-77
lines changed

‎Cargo.lock‎

Lines changed: 67 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ divan = "0.1.14"
127127
glob = "0.3.1"
128128
serde = { version = "1.0.199", features = ["derive"] }
129129
snapbox = { version = "0.6.0", features = ["diff", "term-svg", "cmd", "examples"] }
130-
toml = "0.5.11"
130+
toml = "0.8.0"
131131
tryfn = "0.2.1"
132132

133133
[[bench]]

‎tests/fixtures/deserialize.rs‎

Lines changed: 27 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,30 @@
1-
use serde::{Deserialize,Deserializer,Serialize};
1+
use serde::Deserialize;
22
use std::ops::Range;
33

44
use annotate_snippets::renderer::DEFAULT_TERM_WIDTH;
55
use annotate_snippets::{Annotation, Level, Message, Renderer, Snippet};
66

77
#[derive(Deserialize)]
8-
pub(crate) struct Fixture<'a> {
8+
pub(crate) struct Fixture {
99
#[serde(default)]
1010
pub(crate) renderer: RendererDef,
11-
#[serde(borrow)]
12-
pub(crate) message: MessageDef<'a>,
11+
pub(crate) message: MessageDef,
1312
}
1413

1514
#[derive(Deserialize)]
16-
pub struct MessageDef<'a> {
15+
pub struct MessageDef {
1716
#[serde(with = "LevelDef")]
1817
pub level: Level,
19-
#[serde(borrow)]
20-
pub title: &'a str,
18+
pub title: String,
2119
#[serde(default)]
22-
#[serde(borrow)]
23-
pub id: Option<&'a str>,
20+
pub id: Option<String>,
2421
#[serde(default)]
25-
#[serde(borrow)]
26-
pub footer: Vec<MessageDef<'a>>,
27-
#[serde(deserialize_with = "deserialize_snippets")]
28-
#[serde(borrow)]
29-
pub snippets: Vec<Snippet<'a>>,
22+
pub footer: Vec<MessageDef>,
23+
pub snippets: Vec<SnippetDef>,
3024
}
3125

32-
impl<'a> From<MessageDef<'a>> for Message<'a> {
33-
fn from(val: MessageDef<'a>) -> Self {
26+
impl<'a> From<&'aMessageDef> for Message<'a> {
27+
fn from(val: &'aMessageDef) -> Self {
3428
let MessageDef {
3529
level,
3630
title,
@@ -42,100 +36,61 @@ impl<'a> From<MessageDef<'a>> for Message<'a> {
4236
if let Some(id) = id {
4337
message = message.id(id);
4438
}
45-
message = message.snippets(snippets);
46-
message = message.footers(footer.into_iter().map(Into::into));
39+
message = message.snippets(snippets.iter().map(Snippet::from));
40+
message = message.footers(footer.iter().map(Into::into));
4741
message
4842
}
4943
}
5044

51-
fn deserialize_snippets<'de, D>(deserializer: D) -> Result<Vec<Snippet<'de>>, D::Error>
52-
where
53-
D: Deserializer<'de>,
54-
{
55-
#[derive(Deserialize)]
56-
struct Wrapper<'a>(
57-
#[serde(with = "SnippetDef")]
58-
#[serde(borrow)]
59-
SnippetDef<'a>,
60-
);
61-
62-
let v = Vec::deserialize(deserializer)?;
63-
Ok(v.into_iter().map(|Wrapper(a)| a.into()).collect())
64-
}
65-
6645
#[derive(Deserialize)]
67-
pub struct SnippetDef<'a> {
68-
#[serde(borrow)]
69-
pub source: &'a str,
46+
pub struct SnippetDef {
47+
pub source: String,
7048
pub line_start: usize,
71-
#[serde(borrow)]
72-
pub origin: Option<&'a str>,
73-
#[serde(deserialize_with = "deserialize_annotations")]
74-
#[serde(borrow)]
75-
pub annotations: Vec<Annotation<'a>>,
49+
pub origin: Option<String>,
50+
pub annotations: Vec<AnnotationDef>,
7651
#[serde(default)]
7752
pub fold: bool,
7853
}
7954

80-
impl<'a> From<SnippetDef<'a>> for Snippet<'a> {
81-
fn from(val: SnippetDef<'a>) -> Self {
55+
impl<'a> From<&'aSnippetDef> for Snippet<'a> {
56+
fn from(val: &'aSnippetDef) -> Self {
8257
let SnippetDef {
8358
source,
8459
line_start,
8560
origin,
8661
annotations,
8762
fold,
8863
} = val;
89-
let mut snippet = Snippet::source(source).line_start(line_start).fold(fold);
64+
let mut snippet = Snippet::source(source).line_start(*line_start).fold(*fold);
9065
if let Some(origin) = origin {
9166
snippet = snippet.origin(origin);
9267
}
93-
snippet = snippet.annotations(annotations);
68+
snippet = snippet.annotations(annotations.iter().map(Into::into));
9469
snippet
9570
}
9671
}
9772

98-
fn deserialize_annotations<'de, D>(deserializer: D) -> Result<Vec<Annotation<'de>>, D::Error>
99-
where
100-
D: Deserializer<'de>,
101-
{
102-
#[derive(Deserialize)]
103-
struct Wrapper<'a>(#[serde(borrow)] AnnotationDef<'a>);
104-
105-
let v = Vec::deserialize(deserializer)?;
106-
Ok(v.into_iter().map(|Wrapper(a)| a.into()).collect())
107-
}
108-
109-
#[derive(Serialize, Deserialize)]
110-
pub struct AnnotationDef<'a> {
73+
#[derive(Deserialize)]
74+
pub struct AnnotationDef {
11175
pub range: Range<usize>,
112-
#[serde(borrow)]
113-
pub label: &'a str,
76+
pub label: String,
11477
#[serde(with = "LevelDef")]
11578
pub level: Level,
11679
}
11780

118-
impl<'a> From<AnnotationDef<'a>> for Annotation<'a> {
119-
fn from(val: AnnotationDef<'a>) -> Self {
81+
impl<'a> From<&'aAnnotationDef> for Annotation<'a> {
82+
fn from(val: &'aAnnotationDef) -> Self {
12083
let AnnotationDef {
12184
range,
12285
label,
12386
level,
12487
} = val;
125-
level.span(range).label(label)
88+
level.span(range.start..range.end).label(label)
12689
}
12790
}
12891

129-
#[derive(Serialize, Deserialize)]
130-
pub(crate) struct LabelDef<'a> {
131-
#[serde(with = "LevelDef")]
132-
pub(crate) level: Level,
133-
#[serde(borrow)]
134-
pub(crate) label: &'a str,
135-
}
136-
13792
#[allow(dead_code)]
138-
#[derive(Serialize,Deserialize)]
93+
#[derive(Deserialize)]
13994
#[serde(remote = "Level")]
14095
enum LevelDef {
14196
Error,

‎tests/fixtures/main.rs‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ fn setup(input_path: std::path::PathBuf) -> tryfn::Case {
3333

3434
fn test(input_path: &std::path::Path) -> Result<Data, Box<dyn Error>> {
3535
let src = std::fs::read_to_string(input_path)?;
36-
let (renderer, message): (Renderer, Message<'_>) =
37-
toml::from_str(&src).map(|a: Fixture<'_>| (a.renderer.into(), a.message.into()))?;
36+
let fixture: Fixture = toml::from_str(&src)?;
37+
let renderer: Renderer = fixture.renderer.into();
38+
let message: Message<'_> = (&fixture.message).into();
39+
3840
let actual = renderer.render(message).to_string();
3941
Ok(Data::from(actual).coerce_to(DataFormat::TermSvg))
4042
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /