From a49f4417b8278e7e5ab0e9ed0d00e5ff73d51358 Mon Sep 17 00:00:00 2001 From: Ethiraric Date: Thu, 17 Aug 2023 02:18:07 +0200 Subject: [PATCH] Add a dump_events example to aid debugging. --- parser/examples/dump_events.rs | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 parser/examples/dump_events.rs diff --git a/parser/examples/dump_events.rs b/parser/examples/dump_events.rs new file mode 100644 index 0000000..876902c --- /dev/null +++ b/parser/examples/dump_events.rs @@ -0,0 +1,38 @@ +extern crate yaml_rust; + +use std::env; +use std::fs::File; +use std::io::prelude::*; +use yaml_rust::{ + parser::{MarkedEventReceiver, Parser}, + scanner::Marker, + Event, +}; + +#[derive(Debug)] +struct EventSink { + events: Vec<(Event, Marker)>, +} + +impl MarkedEventReceiver for EventSink { + fn on_event(&mut self, ev: Event, mark: Marker) { + self.events.push((ev, mark)); + } +} + +fn str_to_events(yaml: &str) -> Vec<(Event, Marker)> { + let mut sink = EventSink { events: Vec::new() }; + let mut parser = Parser::new(yaml.chars()); + // Load events using our sink as the receiver. + parser.load(&mut sink, true).unwrap(); + sink.events +} + +fn main() { + let args: Vec<_> = env::args().collect(); + let mut f = File::open(&args[1]).unwrap(); + let mut s = String::new(); + f.read_to_string(&mut s).unwrap(); + + dbg!(str_to_events(&s)); +}