Skip to content

Commit 7cd231a

Browse files
Allow for inserting a paragraph with text/style (#7)
1 parent 9d5384a commit 7cd231a

2 files changed

Lines changed: 45 additions & 7 deletions

File tree

src/cmi_docx/document.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,44 @@ def replace(self, needle: str, replace: str) -> None:
6161
for run_find in run_finder:
6262
run_find.replace(replace)
6363

64-
def insert_paragraph(
64+
def insert_paragraph_by_text(
6565
self,
66-
paragraph: docx_paragraph.Paragraph,
6766
index: int,
68-
) -> None:
69-
"""Inserts a paragraph at a given index.
67+
text: str,
68+
style: str | None = None,
69+
) -> docx_paragraph.Paragraph:
70+
"""Inserts a paragraph into a document.
7071
7172
Args:
72-
paragraph: The paragraph to insert.
7373
index: The index to insert the paragraph at.
74+
text: The text to insert.
75+
style: The style to apply to the text.
76+
77+
Returns:
78+
The new paragraph.
79+
"""
80+
new_paragraph = self._insert_empty_paragraph(index)
81+
new_paragraph.add_run(text, style=style)
82+
return new_paragraph
83+
84+
def insert_paragraph_by_object(
85+
self,
86+
index: int,
87+
paragraph: docx_paragraph.Paragraph,
88+
) -> docx_paragraph.Paragraph:
89+
"""Inserts a paragraph into a document.
90+
91+
Args:
92+
index: The index to insert the paragraph at.
93+
paragraph: The paragraph to insert.
94+
95+
Returns:
96+
The new paragraph.
7497
"""
7598
new_paragraph = self._insert_empty_paragraph(index)
7699
for paragraph_run in paragraph.runs:
77100
new_paragraph.add_run(paragraph_run.text, paragraph_run.style)
101+
return new_paragraph
78102

79103
def insert_image(
80104
self,

tests/test_document.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,29 @@ def test_replace() -> None:
4646
assert doc.paragraphs[0].text == "Goodbye, world!"
4747

4848

49-
def test_insert_paragraph() -> None:
49+
def test_insert_paragraph_by_object() -> None:
5050
"""Test inserting a paragraph into a document."""
5151
doc = docx.Document()
5252
doc.add_paragraph("Hello, world!")
5353
doc.add_paragraph("Goodbye, world!")
5454
extend_document = document.ExtendDocument(doc)
5555
new_paragraph = docx.Document().add_paragraph("Maintain, world!")
5656

57-
extend_document.insert_paragraph(new_paragraph, 1)
57+
extend_document.insert_paragraph_by_object(1, new_paragraph)
58+
59+
assert doc.paragraphs[0].text == "Hello, world!"
60+
assert doc.paragraphs[1].text == "Maintain, world!"
61+
assert doc.paragraphs[2].text == "Goodbye, world!"
62+
63+
64+
def test_insert_paragraph_by_text() -> None:
65+
"""Test inserting a paragraph into a document."""
66+
doc = docx.Document()
67+
doc.add_paragraph("Hello, world!")
68+
doc.add_paragraph("Goodbye, world!")
69+
extend_document = document.ExtendDocument(doc)
70+
71+
extend_document.insert_paragraph_by_text(1, "Maintain, world!")
5872

5973
assert doc.paragraphs[0].text == "Hello, world!"
6074
assert doc.paragraphs[1].text == "Maintain, world!"

0 commit comments

Comments
 (0)