pub const WORD_OOXML_EXTS: &[&str] = &[".docx", ".docm", ".dotx", ".dotm"];
pub fn is_word_ooxml(path: &str) -> bool {
let lower = path.to_ascii_lowercase();
WORD_OOXML_EXTS.iter().any(|ext| lower.ends_with(ext))
}
pub fn word_exts_display() -> String {
WORD_OOXML_EXTS.join(", ")
}
#[allow(unused_imports)]
pub(super) use super::block_api::{
parse_docx_blocks, parse_docx_indexed_items_with_images, parse_docx_indexed_paragraphs,
parse_docx_paragraph_events, parse_docx_paragraph_events_with_images, ParaOrImage,
};
#[allow(unused_imports)]
pub(super) use super::block_model::{
docx_heading_level, DocxBlock, DocxBlockKind, IndexedParagraph, PageBreakSignal,
ParagraphEvent, MIN_PARAGRAPH_CHARS,
};
#[allow(unused_imports)]
pub(super) use super::images_rels::{
collect_image_chunks_from_items, image_hash_name, image_placeholder,
open_docx_archive_with_rids, parse_rels_xml_images, text_with_image_marker,
};
#[allow(unused_imports)]
pub(super) use super::xml_text::{collapse_whitespace, push_event_text, push_text, qname_eq};