couple fixes

Orual 74d7abbb a8be2ece

+16 -13
+10 -8
crates/weaver-editor-core/src/writer/embed.rs
··· 8 8 use jacquard::types::{ident::AtIdentifier, string::Rkey}; 9 9 use markdown_weaver::{CowStr, EmbedType, Event}; 10 10 use markdown_weaver_escape::{StrWrite, escape_html}; 11 + use smol_str::SmolStr; 11 12 12 13 use crate::render::{EmbedContentProvider, ImageResolver, WikilinkValidator}; 13 14 use crate::syntax::{SyntaxSpanInfo, SyntaxType}; ··· 43 44 #[derive(Clone, Default)] 44 45 pub struct EditorImageResolver { 45 46 /// All resolved images: name -> resolved path info 46 - images: HashMap<String, ResolvedImage>, 47 + images: HashMap<SmolStr, ResolvedImage>, 47 48 } 48 49 49 50 impl EditorImageResolver { ··· 52 53 } 53 54 54 55 /// Add a pending image with a data URL for immediate preview. 55 - pub fn add_pending(&mut self, name: String, data_url: String) { 56 - self.images.insert(name, ResolvedImage::Pending(data_url)); 56 + pub fn add_pending(&mut self, name: impl Into<SmolStr>, data_url: String) { 57 + self.images 58 + .insert(name.into(), ResolvedImage::Pending(data_url)); 57 59 } 58 60 59 61 /// Promote a pending image to uploaded (draft) status. ··· 64 66 ident: AtIdentifier<'static>, 65 67 ) { 66 68 self.images 67 - .insert(name.to_string(), ResolvedImage::Draft { blob_rkey, ident }); 69 + .insert(SmolStr::new(name), ResolvedImage::Draft { blob_rkey, ident }); 68 70 } 69 71 70 72 /// Add an already-uploaded draft image. 71 73 pub fn add_uploaded( 72 74 &mut self, 73 - name: String, 75 + name: impl Into<SmolStr>, 74 76 blob_rkey: Rkey<'static>, 75 77 ident: AtIdentifier<'static>, 76 78 ) { 77 79 self.images 78 - .insert(name, ResolvedImage::Draft { blob_rkey, ident }); 80 + .insert(name.into(), ResolvedImage::Draft { blob_rkey, ident }); 79 81 } 80 82 81 83 /// Add a published image. 82 84 pub fn add_published( 83 85 &mut self, 84 - name: String, 86 + name: impl Into<SmolStr>, 85 87 entry_rkey: Rkey<'static>, 86 88 ident: AtIdentifier<'static>, 87 89 ) { 88 90 self.images 89 - .insert(name, ResolvedImage::Published { entry_rkey, ident }); 91 + .insert(name.into(), ResolvedImage::Published { entry_rkey, ident }); 90 92 } 91 93 92 94 /// Check if an image is pending upload.
+1 -1
crates/weaver-editor-core/src/writer/mod.rs
··· 141 141 entry_index: Option<&'a weaver_common::EntryIndex>, 142 142 143 143 // === Misc === 144 - numbers: HashMap<String, usize>, 144 + numbers: HashMap<SmolStr, usize>, 145 145 pending_blockquote_range: Option<Range<usize>>, 146 146 ref_collector: weaver_common::RefCollector, 147 147 }
+2 -2
crates/weaver-editor-core/src/writer/state.rs
··· 272 272 #[derive(Debug, Clone, Default)] 273 273 pub struct FootnoteContext { 274 274 /// Maps footnote name -> (syntax_span_index, char_start) 275 - pub ref_spans: HashMap<String, (usize, usize)>, 275 + pub ref_spans: HashMap<SmolStr, (usize, usize)>, 276 276 /// Current footnote def being processed: (name, span_idx, char_start) 277 - pub current_def: Option<(String, usize, usize)>, 277 + pub current_def: Option<(SmolStr, usize, usize)>, 278 278 } 279 279 280 280 /// UTF-16 offset checkpoints for incremental tracking.
+3 -2
crates/weaver-editor-core/src/writer/tags.rs
··· 5 5 6 6 use markdown_weaver::{Alignment, BlockQuoteKind, CodeBlockKind, EmbedType, Event, LinkType, Tag}; 7 7 use markdown_weaver_escape::{StrWrite, escape_href, escape_html, escape_html_body_text}; 8 + use smol_str::ToSmolStr; 8 9 9 10 use crate::offset_map::OffsetMapping; 10 11 use crate::render::{EmbedContentProvider, ImageResolver, WikilinkValidator}; ··· 488 489 let lang_opt = if lang.is_empty() { 489 490 None 490 491 } else { 491 - Some(smol_str::SmolStr::new(lang)) 492 + Some(lang.to_smolstr()) 492 493 }; 493 494 // Start buffering 494 495 self.code_block.buffer = Some((lang_opt, String::new())); ··· 990 991 self.write("</span>")?; 991 992 992 993 // Store the definition info (no longer tracking syntax spans for hide/show) 993 - self.footnotes.current_def = Some((name.to_string(), 0, char_start)); 994 + self.footnotes.current_def = Some((name.to_smolstr(), 0, char_start)); 994 995 995 996 // Record offset mapping for the prefix 996 997 self.record_mapping(