MCPcopy Create free account
hub / github.com/SpaceZephyr/myskill / ParagraphData

Class ParagraphData

pptx/scripts/inventory.py:137–263  ·  view source on GitHub ↗

Data structure for paragraph properties extracted from a PowerPoint paragraph.

Source from the content-addressed store, hash-verified

135
136
137class ParagraphData:
138 """Data structure for paragraph properties extracted from a PowerPoint paragraph."""
139
140 def __init__(self, paragraph: Any):
141 """Initialize from a PowerPoint paragraph object.
142
143 Args:
144 paragraph: The PowerPoint paragraph object
145 """
146 self.text: str = paragraph.text.strip()
147 self.bullet: bool = False
148 self.level: Optional[int] = None
149 self.alignment: Optional[str] = None
150 self.space_before: Optional[float] = None
151 self.space_after: Optional[float] = None
152 self.font_name: Optional[str] = None
153 self.font_size: Optional[float] = None
154 self.bold: Optional[bool] = None
155 self.italic: Optional[bool] = None
156 self.underline: Optional[bool] = None
157 self.color: Optional[str] = None
158 self.theme_color: Optional[str] = None
159 self.line_spacing: Optional[float] = None
160
161 # Check for bullet formatting
162 if (
163 hasattr(paragraph, "_p")
164 and paragraph._p is not None
165 and paragraph._p.pPr is not None
166 ):
167 pPr = paragraph._p.pPr
168 ns = "{http://schemas.openxmlformats.org/drawingml/2006/main}"
169 if (
170 pPr.find(f"{ns}buChar") is not None
171 or pPr.find(f"{ns}buAutoNum") is not None
172 ):
173 self.bullet = True
174 if hasattr(paragraph, "level"):
175 self.level = paragraph.level
176
177 # Add alignment if not LEFT (default)
178 if hasattr(paragraph, "alignment") and paragraph.alignment is not None:
179 alignment_map = {
180 PP_ALIGN.CENTER: "CENTER",
181 PP_ALIGN.RIGHT: "RIGHT",
182 PP_ALIGN.JUSTIFY: "JUSTIFY",
183 }
184 if paragraph.alignment in alignment_map:
185 self.alignment = alignment_map[paragraph.alignment]
186
187 # Add spacing properties if set
188 if hasattr(paragraph, "space_before") and paragraph.space_before:
189 self.space_before = paragraph.space_before.pt
190 if hasattr(paragraph, "space_after") and paragraph.space_after:
191 self.space_after = paragraph.space_after.pt
192
193 # Extract font properties from first run
194 if paragraph.runs:

Callers 2

paragraphsMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected