Add support for content sequences

finchie
Nov 11, 2023, 2:31 PM
I3NG5A4WXPELEOY3KFQKYBZVKA56VPGLI5R7O7TDCZTQAA7EROTQC

Dependencies

  • [2] I5IZPMTH Handle empty expressions
  • [3] HEIF2O2E Migrate from `pandoc` to `typst` for AST processing
  • [4] CQEA2ZDI Parse evaluated Typst code instead of AST
  • [5] BSJYWOYS Implement MVP Typst embedding
  • [6] 2N3KOCP7 Create MVP Pandoc->Rust compiler

Change contents

  • replacement in docs/test.typ at line 2
    [2.23][2.23:40]()
    Sum is #add(2, 3)
    [2.23]
    #let verbose_add(x, y) = {
    [the number is] + repr(add(x, y))
    };
    Sum is #add(2, 3)
    Verbose: #verbose_add(3, 4)
  • edit in crates/typser/src/lib.rs at line 168
    [3.73]
    [3.73]
    dbg!(typst_ast.scope());
  • edit in crates/typser/src/lib.rs at line 326
    [3.369][2.215:242]()
    dbg!(content);
  • edit in crates/typser/src/lib.rs at line 354
    [3.2355][3.2355:2389]()
    .map(typst_expr_to_xilem)
  • replacement in crates/typser/src/lib.rs at line 355
    [2.461][2.461:494]()
    .filter_map(|expr| expr)
    [2.461]
    [3.2389]
    .filter_map(typst_expr_to_xilem)
  • replacement in crates/typser/src/content.rs at line 5
    [3.3054][3.3054:3103]()
    use crate::{literal_string, xilem_html_element};
    [3.3054]
    [3.3103]
    use crate::{literal_string, split_tuple, xilem_html_element};
  • edit in crates/typser/src/content.rs at line 9
    [3.3153]
    [3.3153]
    Sequence(Vec<SupportedContent<'a>>),
  • edit in crates/typser/src/content.rs at line 19
    [2.542]
    [2.542]
    } else if let Some(sequence) = value.to_sequence() {
    let children = sequence
    .filter_map(|child| SupportedContent::downcast(child))
    .collect::<Vec<_>>();
    Some(Self::Sequence(children))
  • edit in crates/typser/src/content.rs at line 38
    [3.3772]
    [3.3772]
    SupportedContent::Sequence(sequence) => {
    let children = split_tuple(
    sequence
    .iter()
    .filter_map(SupportedContent::to_xilem)
    .collect::<Vec<_>>(),
    );
    syn::Expr::Tuple(syn::ExprTuple {
    attrs: Vec::new(),
    paren_token: syn::token::Paren::default(),
    elems: syn::punctuated::Punctuated::from_iter(children.into_iter()),
    })
    }