.vbw-planning/milestones/03-coverage-analysis-quick-wins-critical-path-test-co/phases/04-code-quality-conventions-cleanup/PLAN-02-SUMMARY.md
Extracted ItemCreator (601 lines, 50+ methods) into two focused sub-modules following the FeedFetcher extraction pattern from Phase 3.
lib/source_monitor/items/item_creator/entry_parser.rb (390 lines) -- All field extraction methods (extract_guid, extract_url, extract_authors, etc.) plus utility methods (string_or_nil, safe_integer, split_keywords, etc.)lib/source_monitor/items/item_creator/content_extractor.rb (113 lines) -- Feed content processing through readability (process_feed_content, wrap_content_for_readability, etc.)lib/source_monitor/items/item_creator.rb -- Slimmed from 601 to 174 lines. Now contains only orchestration logic (find/create/update items), Result struct, constants, and forwarding methods for backward compatibility with tests.| File | Before | After |
|---|---|---|
| item_creator.rb | 601 | 174 |
| entry_parser.rb | -- | 390 |
| content_extractor.rb | -- | 113 |
| Total | 601 | 677 |
EntryParser receives source:, entry:, and content_extractor: -- exposes parse returning full attributes hashContentExtractor receives source: -- exposes process_feed_content(raw_content, title:)ItemCreator delegates build_attributes to entry_parser.parse via lazy accessorsend