diff --git a/examples/jotdown_wasm/demo.html b/examples/jotdown_wasm/demo.html index ba7679b..2a028d2 100644 --- a/examples/jotdown_wasm/demo.html +++ b/examples/jotdown_wasm/demo.html @@ -21,7 +21,10 @@ output.innerText = jotdown_render(input.innerText); } else if (fmt.value == "events") { output.classList.add("verbatim") - output.innerText = jotdown_parse(input.innerText); + output.innerText = jotdown_parse(input.innerText, false); + } else if (fmt.value == "events_spans") { + output.classList.add("verbatim") + output.innerText = jotdown_parse(input.innerText, true); } else if (fmt.value == "events_indent") { output.classList.add("verbatim") output.innerText = jotdown_parse_indent(input.innerText); @@ -50,6 +53,7 @@ + diff --git a/examples/jotdown_wasm/src/lib.rs b/examples/jotdown_wasm/src/lib.rs index 9aeb866..4d6d4e8 100644 --- a/examples/jotdown_wasm/src/lib.rs +++ b/examples/jotdown_wasm/src/lib.rs @@ -22,10 +22,16 @@ pub fn jotdown_render(djot: &str) -> String { #[must_use] #[wasm_bindgen] -pub fn jotdown_parse(djot: &str) -> String { - jotdown::Parser::new(djot) - .map(|e| format!("{:?}\n", e)) - .collect() +pub fn jotdown_parse(djot: &str, spans: bool) -> String { + let mut out = String::new(); + for (e, sp) in jotdown::Parser::new(djot).into_offset_iter() { + write!(out, "{:?}", e).unwrap(); + if spans { + write!(out, " {:?} {:?}", &djot[sp.clone()], sp).unwrap(); + } + writeln!(out).unwrap(); + } + out } #[must_use]