Files
markitect-main/markitect/explode_variants/enums.py
tegwick a17c362653 feat: implement Issue #148 core infrastructure for explode-implode variants
Complete implementation of Phase 1 core infrastructure:

Core Infrastructure Components:
- ExplodeVariant enum (flat, hierarchical, semantic)
- ExplodeMode, ManifestVersion, DetectionConfidence enums
- BaseVariant abstract class with common interface
- ExplodeOptions, ImplodeOptions, ExplodeResult, ImplodeResult dataclasses

Manifest System:
- ManifestManager class for manifest.md creation and parsing
- StructureEntry and ManifestData dataclasses
- YAML front matter with complete metadata preservation
- Validation and update mechanisms

Variant Detection:
- VariantDetector class with multiple detection strategies
- Manifest-based detection (highest priority)
- Directory naming pattern recognition
- Semantic structure analysis with confidence scoring
- Automatic fallback and combination logic

Command Interface Updates:
- md-explode: Added --variant parameter with [flat|hierarchical|semantic]
- md-explode: Added --create-manifest/--no-manifest option
- md-implode: Added --force-variant parameter for manual override
- md-implode: Integrated auto-detection with verbose output
- Updated help text and examples for both commands

Test Coverage:
- Comprehensive test suite with 21 test cases
- Tests for all enums, dataclasses, and core functionality
- ManifestManager creation, reading, and validation tests
- VariantDetector pattern recognition and confidence tests
- 100% test pass rate with robust edge case handling

Infrastructure Features:
- Backward compatibility maintained (flat variant default)
- Graceful handling of unimplemented variants with user warnings
- Extensible design for easy addition of new variants
- Clear separation between infrastructure and implementation

Success Criteria Met:
 ExplodeVariant enum with all planned variants
 ManifestManager creates and parses manifest.md files
 Commands accept variant parameters
 Auto-detection logic identifies variant types
 Unit tests achieve 100% pass rate
 Backward compatibility maintained

Ready for Phase 2: Variant implementations (Issue #149)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 20:17:41 +02:00

108 lines
2.6 KiB
Python

"""
Enums for explode-implode variant system.
"""
from enum import Enum
class ExplodeVariant(Enum):
"""
Available explode variants for different directory organization strategies.
Each variant defines how a markdown file is exploded into a directory
structure and how that structure is imploded back.
"""
FLAT = "flat"
"""
Flat structure - current default behavior.
Creates directories based on h1 headings with nested content.
Example:
book.mdd/
├── manifest.md
├── book_title/
│ ├── index.md
│ ├── chapter_1.md
│ └── chapter_2.md
└── conclusion.md
"""
HIERARCHICAL = "hierarchical"
"""
Hierarchical structure with numbered prefixes.
Creates nested directories reflecting heading hierarchy with ordering.
Example:
book.mdd/
├── manifest.md
├── 01_book_title/
│ ├── index.md
│ ├── 01_chapter_1/
│ │ ├── index.md
│ │ └── 01_section_1.md
│ └── 02_chapter_2/
└── 99_conclusion.md
"""
SEMANTIC = "semantic"
"""
Semantic structure with content-based grouping.
Groups content into semantic categories like parts, chapters, appendices.
Example:
book.mdd/
├── manifest.md
├── parts/
│ ├── 01_fundamentals/
│ └── 02_advanced/
├── chapters/
│ ├── 01_basics/
│ └── 02_intermediate/
└── appendices/
"""
class ExplodeMode(Enum):
"""
Modes for explode operations affecting behavior and output.
"""
STANDARD = "standard"
"""Standard explode operation with manifest generation."""
LEGACY = "legacy"
"""Legacy mode without manifest for backward compatibility."""
PREVIEW = "preview"
"""Preview mode showing what would be created without actual creation."""
class ManifestVersion(Enum):
"""
Manifest format versions for backward compatibility.
"""
V1_0 = "1.0"
"""Initial manifest format with basic structure preservation."""
V1_1 = "1.1"
"""Enhanced manifest with asset tracking and metadata."""
class DetectionConfidence(Enum):
"""
Confidence levels for variant auto-detection.
"""
HIGH = "high"
"""High confidence - manifest found or clear patterns detected."""
MEDIUM = "medium"
"""Medium confidence - some patterns match but ambiguous."""
LOW = "low"
"""Low confidence - minimal patterns, fallback detection."""
UNKNOWN = "unknown"
"""Cannot determine variant - requires manual specification."""