MCPcopy Create free account
hub / github.com/apache/solr / _parse_entries

Method _parse_entries

dev-tools/scripts/changes2logchange.py:514–557  ·  view source on GitHub ↗

Parse individual entries within a section. Handles both: - Bulleted entries: * text - Numbered entries: 1. text, 2. text, etc. (older format)

(self, section_content: str, change_type: str)

Source from the content-addressed store, hash-verified

512 return version_section
513
514 def _parse_entries(self, section_content: str, change_type: str) -> List[ChangeEntry]:
515 """Parse individual entries within a section.
516
517 Handles both:
518 - Bulleted entries: * text
519 - Numbered entries: 1. text, 2. text, etc. (older format)
520 """
521 entries = []
522
523 # First try to split by bulleted entries (* prefix)
524 bulleted_pattern = re.compile(r'^\*\s+', re.MULTILINE)
525 bulleted_entries = bulleted_pattern.split(section_content)
526
527 if len(bulleted_entries) > 1:
528 # Has bulleted entries
529 for entry_text in bulleted_entries[1:]: # Skip first empty split
530 entry_text = entry_text.strip()
531 if not entry_text or entry_text == "(No changes)":
532 continue
533 entry = self._parse_single_entry(entry_text, change_type)
534 if entry:
535 entries.append(entry)
536 else:
537 # No bulleted entries, try numbered entries (old format: "1. text", "2. text", etc.)
538 numbered_pattern = re.compile(r'^\s{0,2}\d+\.\s+', re.MULTILINE)
539 if numbered_pattern.search(section_content):
540 # Has numbered entries
541 numbered_entries = numbered_pattern.split(section_content)
542 for entry_text in numbered_entries[1:]: # Skip first empty split
543 entry_text = entry_text.strip()
544 if not entry_text:
545 continue
546 entry = self._parse_single_entry(entry_text, change_type)
547 if entry:
548 entries.append(entry)
549 else:
550 # No standard entries found, try as paragraph
551 entry_text = section_content.strip()
552 if entry_text and entry_text != "(No changes)":
553 entry = self._parse_single_entry(entry_text, change_type)
554 if entry:
555 entries.append(entry)
556
557 return entries
558
559 def _parse_single_entry(self, entry_text: str, change_type: str) -> Optional[ChangeEntry]:
560 """Parse a single entry into a ChangeEntry object."""

Callers 1

Calls 5

_parse_single_entryMethod · 0.95
stripMethod · 0.80
appendMethod · 0.65
splitMethod · 0.45
searchMethod · 0.45

Tested by

no test coverage detected