pub(crate) mod config;
#[cfg(feature = "multiline")]
mod preprocessor;
mod string_extract;
#[cfg(feature = "multiline")]
mod structural;
#[cfg(feature = "multiline")]
pub(crate) use config::has_concatenation_indicators;
pub use config::MultilineConfig;
#[cfg(feature = "multiline")]
pub(crate) use config::PreprocessedText;
#[cfg(feature = "multiline")]
pub(crate) use crate::types::LineMapping;
#[cfg(feature = "multiline")]
pub(crate) use preprocessor::preprocess_multiline;
#[cfg(feature = "multiline")]
pub(crate) use preprocessor::preprocess_multiline_admitted;
#[cfg(feature = "multiline")]
pub(crate) use string_extract::{
extract_dot_concatenation, extract_plus_concatenation, filter_line_content,
};
pub(crate) use string_extract::{extract_prefix, fragment_assignment_name_is_credential_like};
#[cfg(feature = "multiline")]
pub(crate) use structural::resolve_template_reference;
#[cfg(feature = "multiline")]
pub(crate) fn collect_structural_fragments_for_test(
lines: &[&str],
source_line_offsets: &[usize],
initial_offset: usize,
fragment_cache: &crate::fragment_cache::FragmentCache,
) -> (Vec<String>, Vec<LineMapping>) {
structural::collect_structural_fragments(
lines,
source_line_offsets,
initial_offset,
fragment_cache,
)
}
#[cfg(feature = "multiline")]
pub(crate) fn warm_runtime_regexes() {
structural::warm_runtime_regexes();
}
#[cfg(not(feature = "multiline"))]
pub(crate) fn warm_runtime_regexes() {}