From 74d7abbb91ec3ce18cef40da8297fffdb92f8ab4 Mon Sep 17 00:00:00 2001 From: Orual Date: Tue, 6 Jan 2026 00:14:08 -0500 Subject: [PATCH] couple fixes --- crates/weaver-editor-core/src/writer/embed.rs | 18 ++++++++++-------- crates/weaver-editor-core/src/writer/mod.rs | 2 +- crates/weaver-editor-core/src/writer/state.rs | 4 ++-- crates/weaver-editor-core/src/writer/tags.rs | 5 +++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/crates/weaver-editor-core/src/writer/embed.rs b/crates/weaver-editor-core/src/writer/embed.rs index 9b4d32e..5780bbe 100644 --- a/crates/weaver-editor-core/src/writer/embed.rs +++ b/crates/weaver-editor-core/src/writer/embed.rs @@ -8,6 +8,7 @@ use jacquard::IntoStatic; use jacquard::types::{ident::AtIdentifier, string::Rkey}; use markdown_weaver::{CowStr, EmbedType, Event}; use markdown_weaver_escape::{StrWrite, escape_html}; +use smol_str::SmolStr; use crate::render::{EmbedContentProvider, ImageResolver, WikilinkValidator}; use crate::syntax::{SyntaxSpanInfo, SyntaxType}; @@ -43,7 +44,7 @@ enum ResolvedImage { #[derive(Clone, Default)] pub struct EditorImageResolver { /// All resolved images: name -> resolved path info - images: HashMap, + images: HashMap, } impl EditorImageResolver { @@ -52,8 +53,9 @@ impl EditorImageResolver { } /// Add a pending image with a data URL for immediate preview. - pub fn add_pending(&mut self, name: String, data_url: String) { - self.images.insert(name, ResolvedImage::Pending(data_url)); + pub fn add_pending(&mut self, name: impl Into, data_url: String) { + self.images + .insert(name.into(), ResolvedImage::Pending(data_url)); } /// Promote a pending image to uploaded (draft) status. @@ -64,29 +66,29 @@ impl EditorImageResolver { ident: AtIdentifier<'static>, ) { self.images - .insert(name.to_string(), ResolvedImage::Draft { blob_rkey, ident }); + .insert(SmolStr::new(name), ResolvedImage::Draft { blob_rkey, ident }); } /// Add an already-uploaded draft image. pub fn add_uploaded( &mut self, - name: String, + name: impl Into, blob_rkey: Rkey<'static>, ident: AtIdentifier<'static>, ) { self.images - .insert(name, ResolvedImage::Draft { blob_rkey, ident }); + .insert(name.into(), ResolvedImage::Draft { blob_rkey, ident }); } /// Add a published image. pub fn add_published( &mut self, - name: String, + name: impl Into, entry_rkey: Rkey<'static>, ident: AtIdentifier<'static>, ) { self.images - .insert(name, ResolvedImage::Published { entry_rkey, ident }); + .insert(name.into(), ResolvedImage::Published { entry_rkey, ident }); } /// Check if an image is pending upload. diff --git a/crates/weaver-editor-core/src/writer/mod.rs b/crates/weaver-editor-core/src/writer/mod.rs index 7e5475b..f487c08 100644 --- a/crates/weaver-editor-core/src/writer/mod.rs +++ b/crates/weaver-editor-core/src/writer/mod.rs @@ -141,7 +141,7 @@ where entry_index: Option<&'a weaver_common::EntryIndex>, // === Misc === - numbers: HashMap, + numbers: HashMap, pending_blockquote_range: Option>, ref_collector: weaver_common::RefCollector, } diff --git a/crates/weaver-editor-core/src/writer/state.rs b/crates/weaver-editor-core/src/writer/state.rs index 1f16d3a..83898f8 100644 --- a/crates/weaver-editor-core/src/writer/state.rs +++ b/crates/weaver-editor-core/src/writer/state.rs @@ -272,9 +272,9 @@ pub enum WrapperElement { #[derive(Debug, Clone, Default)] pub struct FootnoteContext { /// Maps footnote name -> (syntax_span_index, char_start) - pub ref_spans: HashMap, + pub ref_spans: HashMap, /// Current footnote def being processed: (name, span_idx, char_start) - pub current_def: Option<(String, usize, usize)>, + pub current_def: Option<(SmolStr, usize, usize)>, } /// UTF-16 offset checkpoints for incremental tracking. diff --git a/crates/weaver-editor-core/src/writer/tags.rs b/crates/weaver-editor-core/src/writer/tags.rs index d20c178..d426740 100644 --- a/crates/weaver-editor-core/src/writer/tags.rs +++ b/crates/weaver-editor-core/src/writer/tags.rs @@ -5,6 +5,7 @@ use std::ops::Range; use markdown_weaver::{Alignment, BlockQuoteKind, CodeBlockKind, EmbedType, Event, LinkType, Tag}; use markdown_weaver_escape::{StrWrite, escape_href, escape_html, escape_html_body_text}; +use smol_str::ToSmolStr; use crate::offset_map::OffsetMapping; use crate::render::{EmbedContentProvider, ImageResolver, WikilinkValidator}; @@ -488,7 +489,7 @@ where let lang_opt = if lang.is_empty() { None } else { - Some(smol_str::SmolStr::new(lang)) + Some(lang.to_smolstr()) }; // Start buffering self.code_block.buffer = Some((lang_opt, String::new())); @@ -990,7 +991,7 @@ where self.write("")?; // Store the definition info (no longer tracking syntax spans for hide/show) - self.footnotes.current_def = Some((name.to_string(), 0, char_start)); + self.footnotes.current_def = Some((name.to_smolstr(), 0, char_start)); // Record offset mapping for the prefix self.record_mapping( -- 2.51.2