Skip to content

Commit e872ab8

Browse files
authored
Merge pull request #1085 from epage/header
fix(varcon)!: Parse verified/level
2 parents 19ed24a + 17b003e commit e872ab8

File tree

5 files changed

+21532
-7186
lines changed

5 files changed

+21532
-7186
lines changed

crates/varcon-core/src/borrowed.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
22
pub struct Cluster {
3-
pub header: Option<&'static str>,
3+
pub header: &'static str,
4+
pub verified: bool,
5+
pub level: usize,
46
pub entries: &'static [Entry],
57
pub notes: &'static [&'static str],
68
}
79

810
impl Cluster {
911
pub fn into_owned(self) -> crate::Cluster {
1012
crate::Cluster {
11-
header: self.header.map(|s| s.to_owned()),
13+
header: self.header.to_owned(),
14+
verified: self.verified,
15+
level: self.level,
1216
entries: self.entries.iter().map(|s| s.into_owned()).collect(),
1317
notes: self.notes.iter().map(|s| (*s).to_owned()).collect(),
1418
}

crates/varcon-core/src/lib.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ pub use crate::parser::ClusterIter;
1212

1313
#[derive(Clone, PartialEq, Eq, Hash, Debug)]
1414
pub struct Cluster {
15-
pub header: Option<String>,
15+
pub header: String,
16+
pub verified: bool,
17+
pub level: usize,
1618
pub entries: Vec<Entry>,
1719
pub notes: Vec<String>,
1820
}

crates/varcon-core/src/parser.rs

+26-18
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
5454
str![[r#"
5555
[
5656
Cluster {
57-
header: Some(
58-
"acknowledgment <verified> (level 35)",
59-
),
57+
header: "acknowledgment ",
58+
verified: true,
59+
level: 35,
6060
entries: [
6161
Entry {
6262
variants: [
@@ -231,9 +231,9 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
231231
str![[r#"
232232
[
233233
Cluster {
234-
header: Some(
235-
"acknowledgment <verified> (level 35)",
236-
),
234+
header: "acknowledgment ",
235+
verified: true,
236+
level: 35,
237237
entries: [
238238
Entry {
239239
variants: [
@@ -383,9 +383,9 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
383383
notes: [],
384384
},
385385
Cluster {
386-
header: Some(
387-
"acknowledgment <verified> (level 35)",
388-
),
386+
header: "acknowledgment ",
387+
verified: true,
388+
level: 35,
389389
entries: [
390390
Entry {
391391
variants: [
@@ -551,15 +551,19 @@ impl Cluster {
551551
let header = (
552552
"#",
553553
winnow::ascii::space0,
554-
winnow::ascii::till_line_ending,
554+
winnow::token::take_till(1.., ('\r', '\n', '<', '(')),
555+
winnow::ascii::space0,
556+
opt(("<verified>", winnow::ascii::space0)),
557+
delimited("(level ", winnow::ascii::digit1, ')').parse_to::<usize>(),
558+
winnow::ascii::space0,
555559
winnow::ascii::line_ending,
556560
);
557561
let note = preceded(
558562
("##", winnow::ascii::space0),
559563
terminated(winnow::ascii::till_line_ending, winnow::ascii::line_ending),
560564
);
561565
let mut cluster = (
562-
opt(header),
566+
header,
563567
winnow::combinator::repeat(
564568
1..,
565569
terminated(Entry::parse_, winnow::ascii::line_ending),
@@ -568,10 +572,14 @@ impl Cluster {
568572
);
569573
let (header, entries, notes): (_, _, Vec<_>) = cluster.parse_next(input)?;
570574

571-
let header = header.map(|s| s.2.to_owned());
575+
let verified = header.4.is_some();
576+
let level = header.5;
577+
let header = header.2.to_owned();
572578
let notes = notes.into_iter().map(|s| s.to_owned()).collect();
573579
let c = Self {
574580
header,
581+
verified,
582+
level,
575583
entries,
576584
notes,
577585
};
@@ -612,9 +620,9 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
612620
actual.to_debug(),
613621
str![[r#"
614622
Cluster {
615-
header: Some(
616-
"acknowledgment <verified> (level 35)",
617-
),
623+
header: "acknowledgment ",
624+
verified: true,
625+
level: 35,
618626
entries: [
619627
Entry {
620628
variants: [
@@ -793,9 +801,9 @@ A B C: coloration's / B. Cv: colouration's
793801
actual.to_debug(),
794802
str![[r#"
795803
Cluster {
796-
header: Some(
797-
"coloration <verified> (level 50)",
798-
),
804+
header: "coloration ",
805+
verified: true,
806+
level: 50,
799807
entries: [
800808
Entry {
801809
variants: [

0 commit comments

Comments
 (0)