Implemented comprehensive content command family for MarkdownMatters CLI following TDD8 methodology and MarkdownMatters specification. ## TDD8 Cycle 1 - Content Commands ### Core Implementation - Content parser for extracting main content without matter zones - Content statistics calculator (words, lines, paragraphs, characters) - CLI commands: `content-get` and `content-stats` - Full integration with existing markitect CLI ### MarkdownMatters Compliance - Correctly removes YAML/TOML/JSON frontmatter - Correctly removes tailmatter blocks (`yaml tailmatter`, `json tailmatter`) - Preserves contentmatter (MultiMarkdown key-value pairs within content) - Follows three-zone specification from wiki/MarkdownMatters.md ### Module Structure ``` markitect/content/ ├── __init__.py # Module exports ├── parser.py # ContentParser with matter zone removal ├── stats.py # ContentStats data class └── commands.py # CLI commands implementation ``` ### CLI Commands Added - `markitect content-get --file [path]` - Extract pure content - `markitect content-stats --file [path]` - Calculate content statistics ### Test Coverage - 16 comprehensive tests covering all scenarios - Test fixtures for different document types - CLI integration tests with Click testing - Edge case handling (file not found, empty content, etc.) ### Validation Results - All tests pass (16/16) - Manual CLI testing confirmed - Proper matter zone separation validated - Statistics calculation accuracy verified ## Technical Architecture ### ContentParser Class - `extract_content()` - Remove frontmatter and tailmatter - `calculate_stats()` - Generate comprehensive statistics - `_remove_frontmatter()` - YAML frontmatter removal - `_remove_tailmatter()` - Tailmatter block removal ### ContentStats Data Class - word_count, line_count, paragraph_count, character_count - JSON serialization support via `to_dict()` ## GAMEPLAN Progress - ✅ TDD8 Cycle 1: Content Commands (COMPLETE) - 🔄 Next: Cycle 2 - Frontmatter Commands - Remaining: Contentmatter, Tailmatter command families This implements the foundation for Issue #38 with 6 remaining cycles planned for complete MarkdownMatters CLI functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
487 B
487 B
Plain Markdown Document
This is a simple markdown document without any frontmatter or tailmatter. Just pure content.
This paragraph contains exactly fifteen words for testing the word counting functionality of the parser.
Section One
Another section with regular content. This helps test the basic content extraction without any matter zones.
Section Two
The final section with some more content. Multiple paragraphs help test paragraph counting and line counting features.