use crate::debug::{DebugColorMode, DebugDetail, DebugFilters, ProtoSummaryRow};
use super::dialect::lua51;
use super::dialect::lua52;
use super::dialect::lua53;
use super::dialect::lua54;
use super::dialect::lua55;
use super::dialect::luajit;
use super::dialect::luau;
use super::{DialectVersion, RawChunk, RawProto};
pub fn dump_parser(
chunk: &RawChunk,
detail: DebugDetail,
filters: &DebugFilters,
color: DebugColorMode,
) -> String {
match chunk.header.version {
DialectVersion::Lua51 => lua51::dump_chunk(chunk, detail, filters, color),
DialectVersion::Lua52 => lua52::dump_chunk(chunk, detail, filters, color),
DialectVersion::Lua53 => lua53::dump_chunk(chunk, detail, filters, color),
DialectVersion::Lua54 => lua54::dump_chunk(chunk, detail, filters, color),
DialectVersion::Lua55 => lua55::dump_chunk(chunk, detail, filters, color),
DialectVersion::LuaJit => luajit::dump_chunk(chunk, detail, filters, color),
DialectVersion::Luau => luau::dump_chunk(chunk, detail, filters, color),
}
}
#[derive(Debug, Clone, Copy)]
pub(crate) struct ParserProtoEntry<'a> {
pub id: usize,
#[allow(dead_code)]
pub parent: Option<usize>,
pub depth: usize,
pub proto: &'a RawProto,
}
pub(crate) fn build_parser_summary_row(entry: &ParserProtoEntry<'_>) -> ProtoSummaryRow {
ProtoSummaryRow {
id: entry.id,
depth_below_focus: entry.depth,
name: None,
first: None,
lines: Some((
entry.proto.common.line_range.defined_start,
entry.proto.common.line_range.defined_end,
)),
instrs: Some(entry.proto.common.instructions.len()),
children: Some(entry.proto.common.children.len()),
}
}