pub mod clipboard;
pub mod editor;
pub mod text_extraction;
pub use clipboard::copy_to_clipboard;
pub use editor::open_in_editor;
pub use text_extraction::{
extract_item_as_llm_markdown, extract_page_text, format_debt_type_name, format_path_text,
};
use super::{app::ResultsApp, detail_page::DetailPage};
use crate::priority::UnifiedDebtItem;
use anyhow::Result;
use std::path::Path;
pub fn copy_path_to_clipboard(path: &Path) -> Result<String> {
let path_str = format_path_text(path);
copy_to_clipboard(&path_str, "path")
}
pub fn copy_page_to_clipboard(
item: &UnifiedDebtItem,
page: DetailPage,
app: &ResultsApp,
) -> Result<String> {
let content = extract_page_text(item, page, app);
copy_to_clipboard(&content, "page content")
}
pub fn copy_item_as_llm_to_clipboard(item: &UnifiedDebtItem) -> Result<String> {
let content = extract_item_as_llm_markdown(item);
copy_to_clipboard(&content, "LLM markdown")
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
#[test]
fn test_copy_path_succeeds_or_fails_gracefully() {
let path = PathBuf::from("/tmp/test.rs");
let result = copy_path_to_clipboard(&path);
assert!(result.is_ok()); let message = result.unwrap();
assert!(message.contains("Copied") || message.contains("Clipboard"));
}
}