perl_dap_variables/lib.rs
1//! Variable rendering for Perl DAP
2//!
3//! This crate provides types and utilities for rendering Perl variables
4//! in the Debug Adapter Protocol (DAP) format, enabling debugging support
5//! in VSCode and other DAP-compatible editors.
6//!
7//! # Overview
8//!
9//! The crate provides:
10//!
11//! - [`PerlValue`] - Represents Perl values (scalars, arrays, hashes, references)
12//! - [`RenderedVariable`] - DAP-compatible variable representation with lazy expansion
13//! - [`VariableRenderer`] - Trait for custom variable rendering strategies
14//! - [`PerlVariableRenderer`] - Default implementation for Perl variables
15//!
16//! # Example
17//!
18//! ```rust
19//! use perl_dap_variables::{PerlValue, RenderedVariable, PerlVariableRenderer, VariableRenderer};
20//!
21//! let renderer = PerlVariableRenderer::new();
22//! let value = PerlValue::Scalar("hello".to_string());
23//! let rendered = renderer.render("$greeting", &value);
24//!
25//! assert_eq!(rendered.name, "$greeting");
26//! assert_eq!(rendered.value, "\"hello\"");
27//! ```
28
29mod parser;
30mod renderer;
31
32pub use parser::{VariableParseError, VariableParser};
33pub use perl_dap_value::PerlValue;
34pub use renderer::{PerlVariableRenderer, RenderedVariable, VariableRenderer};