pub mod chunker;
pub mod summary;
pub mod treesitter;
use std::ops::Range;
use std::path::PathBuf;
#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
pub enum ChunkKind {
Function,
Method,
Class,
Struct,
Enum,
Interface,
Module,
Block,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct CodeChunk {
pub id: u64,
pub file_path: PathBuf,
pub language: String,
pub kind: ChunkKind,
pub name: Option<String>,
pub signature: Option<String>,
pub doc_comment: Option<String>,
pub body: String,
pub byte_range: Range<usize>,
pub line_range: Range<usize>,
}
#[derive(Debug)]
pub struct ParseResult {
pub chunks: Vec<CodeChunk>,
pub language: String,
}
impl std::fmt::Display for ChunkKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ChunkKind::Function => write!(f, "function"),
ChunkKind::Method => write!(f, "method"),
ChunkKind::Class => write!(f, "class"),
ChunkKind::Struct => write!(f, "struct"),
ChunkKind::Enum => write!(f, "enum"),
ChunkKind::Interface => write!(f, "interface"),
ChunkKind::Module => write!(f, "module"),
ChunkKind::Block => write!(f, "block"),
}
}
}