@@ -10,9 +10,10 @@ use crate::pandoc::block::{
1010} ;
1111use crate :: pandoc:: caption:: Caption ;
1212use crate :: pandoc:: inline:: {
13- Citation , CitationMode , Cite , Code , Emph , Image , Inline , Inlines , LineBreak , Link , Math ,
14- MathType , Note , NoteReference , QuoteType , Quoted , RawInline , SoftBreak , Space , Span , Str ,
15- Strikeout , Strong , Subscript , Superscript , Target , is_empty_target,
13+ Citation , CitationMode , Cite , Code , Delete , EditComment , Emph , Highlight , Image , Inline ,
14+ Inlines , Insert , LineBreak , Link , Math , MathType , Note , NoteReference , QuoteType , Quoted ,
15+ RawInline , SoftBreak , Space , Span , Str , Strikeout , Strong , Subscript , Superscript , Target ,
16+ is_empty_target,
1617} ;
1718
1819use crate :: pandoc:: inline:: { make_cite_inline, make_span_inline} ;
@@ -894,7 +895,11 @@ fn native_visitor<T: Write>(
894895 | "superscript_delimiter"
895896 | "subscript_delimiter"
896897 | "strikeout_delimiter"
897- | "emphasis_delimiter" => {
898+ | "emphasis_delimiter"
899+ | "insert_delimiter"
900+ | "delete_delimiter"
901+ | "highlight_delimiter"
902+ | "edit_comment_delimiter" => {
898903 PandocNativeIntermediate :: IntermediateUnknown ( node_location ( node) )
899904 }
900905 "soft_line_break" => {
@@ -971,6 +976,46 @@ fn native_visitor<T: Write>(
971976 content : inlines,
972977 } ) )
973978 }
979+ "insert" => {
980+ let inlines: Vec < _ > = children
981+ . into_iter ( )
982+ . filter ( |( node, _) | node != "insert_delimiter" )
983+ . map ( native_inline)
984+ . collect ( ) ;
985+ PandocNativeIntermediate :: IntermediateInline ( Inline :: Insert ( Insert {
986+ content : inlines,
987+ } ) )
988+ }
989+ "delete" => {
990+ let inlines: Vec < _ > = children
991+ . into_iter ( )
992+ . filter ( |( node, _) | node != "delete_delimiter" )
993+ . map ( native_inline)
994+ . collect ( ) ;
995+ PandocNativeIntermediate :: IntermediateInline ( Inline :: Delete ( Delete {
996+ content : inlines,
997+ } ) )
998+ }
999+ "highlight" => {
1000+ let inlines: Vec < _ > = children
1001+ . into_iter ( )
1002+ . filter ( |( node, _) | node != "highlight_delimiter" )
1003+ . map ( native_inline)
1004+ . collect ( ) ;
1005+ PandocNativeIntermediate :: IntermediateInline ( Inline :: Highlight ( Highlight {
1006+ content : inlines,
1007+ } ) )
1008+ }
1009+ "edit_comment" => {
1010+ let inlines: Vec < _ > = children
1011+ . into_iter ( )
1012+ . filter ( |( node, _) | node != "edit_comment_delimiter" )
1013+ . map ( native_inline)
1014+ . collect ( ) ;
1015+ PandocNativeIntermediate :: IntermediateInline ( Inline :: EditComment ( EditComment {
1016+ content : inlines,
1017+ } ) )
1018+ }
9741019
9751020 "quoted_span" => {
9761021 let mut quote_type = QuoteType :: SingleQuote ;
@@ -1895,6 +1940,62 @@ fn desugar(doc: Pandoc) -> Result<Pandoc, Vec<String>> {
18951940 false ,
18961941 )
18971942 } )
1943+ . with_insert ( |insert| {
1944+ let ( content, _changed) = trim_inlines ( insert. content ) ;
1945+ FilterResult (
1946+ vec ! [ Inline :: Span ( Span {
1947+ attr: (
1948+ "" . to_string( ) ,
1949+ vec![ "quarto-insert" . to_string( ) ] ,
1950+ HashMap :: new( ) ,
1951+ ) ,
1952+ content,
1953+ } ) ] ,
1954+ true ,
1955+ )
1956+ } )
1957+ . with_delete ( |delete| {
1958+ let ( content, _changed) = trim_inlines ( delete. content ) ;
1959+ FilterResult (
1960+ vec ! [ Inline :: Span ( Span {
1961+ attr: (
1962+ "" . to_string( ) ,
1963+ vec![ "quarto-delete" . to_string( ) ] ,
1964+ HashMap :: new( ) ,
1965+ ) ,
1966+ content,
1967+ } ) ] ,
1968+ true ,
1969+ )
1970+ } )
1971+ . with_highlight ( |highlight| {
1972+ let ( content, _changed) = trim_inlines ( highlight. content ) ;
1973+ FilterResult (
1974+ vec ! [ Inline :: Span ( Span {
1975+ attr: (
1976+ "" . to_string( ) ,
1977+ vec![ "quarto-highlight" . to_string( ) ] ,
1978+ HashMap :: new( ) ,
1979+ ) ,
1980+ content,
1981+ } ) ] ,
1982+ true ,
1983+ )
1984+ } )
1985+ . with_edit_comment ( |edit_comment| {
1986+ let ( content, _changed) = trim_inlines ( edit_comment. content ) ;
1987+ FilterResult (
1988+ vec ! [ Inline :: Span ( Span {
1989+ attr: (
1990+ "" . to_string( ) ,
1991+ vec![ "quarto-edit-comment" . to_string( ) ] ,
1992+ HashMap :: new( ) ,
1993+ ) ,
1994+ content,
1995+ } ) ] ,
1996+ true ,
1997+ )
1998+ } )
18981999 . with_inlines ( |inlines| {
18992000 let mut result = vec ! [ ] ;
19002001 // states in this state machine:
0 commit comments