Multiline Directive Enhancement
Multiline Directive Enhancement
Date: 2025-07-27 20:30
Issue: Multiline directives only support set commands, missing all other XMD directives
Impact: Users cannot use exec, if, for, etc. in multiline blocks as documented
Current Implementation Analysis
Working
process_multiline_directive()handlessetcommands onlyis_multiline_directive()correctly detects multiline format- Documentation shows full multiline support expected
Missing Directives
exec- command executionif/elif/else/endif- conditionalsfor/endfor- loopsimport- module imports- All other supported single-line directives
Technical Requirements
Current Limitations
process_multiline_directive()hardcoded forsetonly (line 30-34)- No context state management for control flow
- No output buffer handling for multiline blocks
- No error propagation for failed directives
Required Changes
- Extend
process_multiline_directive()to support all directive types - Add context management for if/for blocks spanning multiple lines
- Implement output buffering for multiline directive results
- Error handling for invalid multiline syntax
Implementation Strategy
Phase 1: Core Infrastructure
- Modify
process_multiline_directive()to use genericprocess_directive() - Add multiline context state management
- Implement output collection for multiline blocks
Phase 2: Control Flow Support
- Handle if/elif/else/endif blocks in multiline
- Support for/endfor loops in multiline
- Proper scope management for nested structures
Phase 3: Advanced Features
- exec command support with dynamic buffers
- import directive support
- Error recovery and validation
Files to Modify
src/xmd_processor/process_multiline_directive/process_multiline_directive.cinclude/xmd_processor_internal.h(function signatures)- Tests in appropriate test directories
Expected Behavior
Should work identically to equivalent single-line directives.