Skip to content

Conversation

@ofek1weiss
Copy link
Contributor

@ofek1weiss ofek1weiss commented Jun 30, 2025

null

Summary by CodeRabbit

  • New Features

    • Added support for formatting structured messages as Markdown and plain text, including various block types, tables, icons, and expandable sections.
    • Introduced customizable formatting options for icons and tables in both Markdown and text outputs.
  • Tests

    • Added comprehensive unit tests and fixtures for Markdown and text formatting, covering a wide range of message structures and styles.
    • Introduced new test classes for validating Markdown and text formatting outputs against expected fixture files.
  • Chores

    • Improved test utilities for handling expected output files and assertions, including support for text file comparison and override functionality.
  • Refactor

    • Updated internal model handling to use the latest Pydantic methods for forward reference resolution.
    • Updated icon representations to use Unicode instead of HTML in various message formatters.

@linear
Copy link

linear bot commented Jun 30, 2025

@github-actions
Copy link
Contributor

👋 @ofek1weiss
Thank you for raising your pull request.
Please make sure to add tests and document all user-facing changes.
You can do this by editing the docs files in this pull request.

@coderabbitai
Copy link

coderabbitai bot commented Jun 30, 2025

"""

Walkthrough

This update introduces new modules for formatting structured message content as Markdown and plain text, each with customizable styles for tables and icons. It also adds comprehensive unit tests and fixtures for both formats, including expected output files. Test utilities are refactored to support text-based assertions and file path management. Additionally, Pydantic model rebuilding is updated to use model_rebuild() instead of update_forward_refs(). Icon formatting in adaptive cards and block kit is changed from HTML to Unicode representations.

Changes

File(s) Change Summary
elementary/messages/formats/markdown.py New module for formatting structured messages as Markdown; provides MarkdownFormatter class and format_markdown.
elementary/messages/formats/text.py New module for formatting structured messages as plain text; provides TextFormatter class and format_text.
elementary/messages/blocks.py Updated Pydantic model forward reference resolution from update_forward_refs() to model_rebuild().
elementary/messages/message_body.py Updated Pydantic model forward reference resolution from update_forward_refs() to model_rebuild().
elementary/messages/formats/adaptive_cards.py Changed icon formatting from HTML to Unicode representation.
elementary/messages/formats/block_kit.py Changed icon formatting from HTML to Unicode representation.
elementary/messages/formats/unicode.py Renamed icon mapping variable from ICON_TO_HTML to ICON_TO_UNICODE and updated related checks/messages.
tests/unit/messages/formats/markdown/test_markdown.py New test class for Markdown formatting; compares output to fixture files.
tests/unit/messages/formats/text/test_text.py New test class for text formatting; compares output to fixture files.
tests/unit/messages/formats/markdown/fixtures/*.md Added numerous Markdown fixture files for various block types, styles, and lengths.
tests/unit/messages/formats/text/fixtures/*.txt Added numerous text fixture files for various block types, styles, and lengths.
tests/unit/alerts/alert_messages/test_alert_utils.py Refactored to use get_expected_file_path instead of get_expected_json_path.
tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py Refactored to use get_expected_file_path instead of get_expected_json_path.
tests/unit/messages/formats/block_kit/test_block_kit.py Refactored to use get_expected_file_path instead of get_expected_json_path.
tests/unit/messages/utils.py Renamed utility function, added assert_expected_text, and ensured parent dir creation for file paths.
elementary/.prettierignore Added entry to ignore markdown fixture files from Prettier formatting.
.pre-commit-config.yaml Extended prettier hook exclusions to skip markdown fixture files in tests/unit/messages/formats/markdown/fixtures/

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Formatter (Markdown/Text)
    participant MessageBody
    participant Output

    User->>Formatter: format(message: MessageBody)
    Formatter->>MessageBody: Read blocks
    loop For each block
        Formatter->>Formatter: format_block(block)
    end
    Formatter->>Output: Return formatted string
Loading

Poem

A bunny with code on its mind,
Formats messages in Markdown and plain text, aligned.
With fixtures and tests, it hops through the night,
Making sure output is perfectly right.
Tables and icons, all styled with care—
Now messages shine everywhere!
🐇✨
"""


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

♻️ Duplicate comments (2)
tests/unit/messages/formats/markdown/fixtures/simple_header.md (1)

1-1: Same content as colored_header.md

See previous comment; the duplication may be accidental.

tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md (1)

1-9: Same fenced-code concern as the 1-column variant

The 5-column table is also inside a fenced block, so it will not render as a Markdown table.
Confirm that treating it as preformatted text is what you want; otherwise convert to pipe syntax.

🧹 Nitpick comments (69)
tests/unit/messages/formats/text/fixtures/text_length_200.txt (1)

1-1: Consider appending a trailing newline
Some diff-viewers and POSIX tooling expect text files to end with \n. Adding it can prevent “No newline at end of file” warnings during future diffs.

tests/unit/messages/formats/markdown/fixtures/text_length_200.md (1)

1-1: Missing final newline
For consistency with other fixtures and smoother diff outputs, add a newline at EOF.

tests/unit/messages/formats/text/fixtures/text_length_50.txt (1)

1-1: EOF newline
Same nit as above—add \n at the end to keep fixtures uniform.

tests/unit/messages/formats/markdown/fixtures/code_block_200.md (1)

1-3: Specify a language for fenced code block
If this block is meant to render as plain text, consider using “```text” to suppress syntax-highlighting noise in some Markdown renderers.

-```
+```text
tests/unit/messages/formats/text/fixtures/text_length_500.txt (1)

1-1: Add newline at EOF
Keeps fixture formatting consistent and avoids minor diff annoyances.

tests/unit/messages/formats/text/fixtures/table_block_8_4.txt (1)

1-7: Add trailing newline for consistent fixture formatting

The file terminates without a final newline. While this is harmless at runtime, it breaks POSIX text-file conventions and can cause noisy diffs in future edits.

 Lorem ip    Lorem ip    Lorem ip    Lorem ip
+
tests/unit/messages/formats/text/fixtures/code_block_200.txt (1)

1-1: Terminate the fixture with a newline

Same remark as the other fixtures—append a \n to avoid “No newline at end of file” git warnings and keep formatting consistent across all test assets.

 Lorem ipsum dolor sit amet, c
+
tests/unit/messages/formats/text/fixtures/text_styles.txt (1)

1-1: Insert final newline

For uniformity with the markdown counterparts and to silence diff tools, add a trailing newline.

 Normal text Bold text Italic text
+
tests/unit/messages/formats/text/fixtures/table_block_8_1.txt (1)

1-7: Consistent EOF newline

All table fixtures should follow the same formatting rules—append a newline character after the last row.

 Lorem ip
+
tests/unit/messages/formats/text/fixtures/table_block_8_5.txt (1)

1-7: Follow POSIX text-file convention

Add a newline at the end to align with tooling expectations and maintain consistency with other fixture files.

 Lorem ip    Lorem ip    Lorem ip    Lorem ip    Lorem ip
+
tests/unit/messages/formats/text/fixtures/text_length_1000.txt (1)

1-1: Add a terminating newline to comply with POSIX text-file convention

Many tools (git, POSIX utilities, some editors) expect a newline at the end of every text file. Absence of the final \n occasionally leads to noisy diffs or truncated output when concatenating files.

-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con\n
tests/unit/messages/formats/text/fixtures/table_block_30_2.txt (1)

1-7: Terminate file with newline for consistency

Same rationale as above; inserting a trailing \n keeps fixtures uniform and avoids editor warnings.

tests/unit/messages/formats/text/fixtures/table_block_8_2.txt (1)

1-7: Missing newline at EOF

Add a final newline to conform with common tooling expectations.

tests/unit/messages/formats/text/fixtures/code_block_500.txt (1)

1-1: EOF newline recommended

Insert \n at the end for portability and cleaner diffs.

tests/unit/messages/formats/text/fixtures/bullet_list.txt (1)

1-4: End-of-file newline

Minor consistency tweak—append a newline.

tests/unit/messages/formats/markdown/fixtures/code_block_500.md (1)

3-3: Terminate file with a trailing newline
POSIX-style tools and some git diff viewers warn when the final line of a file is not newline-terminated. Adding a single \n after the closing back-tick fence avoids those warnings while not affecting the fixture’s semantics.

 Lorem ipsum dolor sit amet, consectetur adip

</blockquote></details>
<details>
<summary>tests/unit/messages/formats/markdown/fixtures/text_length_500.md (1)</summary><blockquote>

`1-1`: **Add trailing newline for cleaner diffs**  
The long-text fixture currently ends without `\n`. Appending one keeps consistency with most other fixtures and prevents “No newline at end of file” diff noise.

```diff
-Lorem ipsum dolor sit amet, consectetur adip
+Lorem ipsum dolor sit amet, consectetur adip⏎
tests/unit/messages/formats/text/fixtures/table_block_30_4.txt (1)

7-7: Consider ending file with newline
Same rationale as above—helps avoid diff warnings and keeps fixtures uniform.

tests/unit/messages/formats/text/fixtures/table_block_30_5.txt (1)

7-7: Trailing newline missing
Optional but recommended for consistency with other text fixtures.

tests/unit/messages/formats/text/fixtures/nested_expandable.txt (1)

5-5: Minor: add newline at EOF
Adds consistency and avoids diff tooling warnings; no functional impact on the test.

tests/unit/messages/formats/text/fixtures/table_block_30_3.txt (1)

1-7: Add a trailing newline to comply with POSIX text-file convention

The fixture appears to lack a final line-feed. A newline at EOF avoids subtle diffs and keeps cat/printf output predictable.

 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
+
tests/unit/messages/formats/text/fixtures/table_block_200_2.txt (1)

1-7: Terminate the file with \n

The file ends directly after the last character, which breaks the standard “one line = one record” expectation of many tools and can trigger noisy diffs. Appending a single LF avoids that.

tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt (1)

1-10: Missing newline at end of file

For consistency across all fixtures (and to keep Git diffs cleaner), add a trailing newline.

tests/unit/messages/formats/text/fixtures/all_icons.txt (1)

1-1: Ensure a final newline

Same rationale as the other fixtures—append \n after the last emoji to conform to POSIX text-file rules.

tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md (1)

1-9: Add newline after closing code fence

The closing ``` is the final byte in the file. A trailing newline prevents spurious Git warnings and aligns with Markdown editors that expect one.


</blockquote></details>
<details>
<summary>tests/unit/messages/formats/text/fixtures/table_block_200_5.txt (1)</summary><blockquote>

`1-5`: **Consider shortening placeholder text to curb repository bloat**

Each line is ~400 chars; five-column variants bring the file above 10 KB. For fixtures the exact wording rarely matters—trimming the “Lorem ipsum …” repetitions would keep diffs and repo size lighter.

</blockquote></details>
<details>
<summary>tests/unit/messages/formats/text/fixtures/all_blocks_red.txt (1)</summary><blockquote>

`10-10`: **Insert final newline**

Same rationale as earlier—helps keep diffs clean and tools happy.

</blockquote></details>
<details>
<summary>tests/unit/messages/formats/text/fixtures/table_block_200_3.txt (1)</summary><blockquote>

`7-7`: **Missing newline at EOF**

Add `\n` after the last row to align with repo conventions.

</blockquote></details>
<details>
<summary>tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md (2)</summary><blockquote>

`1-1`: **Specify language for the fenced block to satisfy MD040**

Markdown-lint flags the fence―add a language identifier (`text` is fine) so editors apply syntax highlighting and the linter passes.  


```diff
-```
+```text

9-9: Terminate file with newline

Add a trailing newline for consistency with other fixtures.

tests/unit/messages/formats/markdown/fixtures/fact_list.md (1)

1-1: Append newline at EOF

Minor but prevents “No newline at end of file” warnings in diffs.

tests/unit/messages/formats/markdown/fixtures/colored_header.md (1)

1-1: Fixture name implies colored output but no color markup present

The file is identical to simple_header.md and contains no color-related Markdown (e.g., HTML <span style="color:…">). Either merge the two fixtures or add the intended color formatting so the name reflects the content.

-# Test Header
+# <span style="color:green">Test Header</span>
tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md (1)

1-9: Leading blank line prevents Markdown table detection

Most parsers require the header row to start immediately. The initial blank line (line 1) causes the table to render as plain text.

-
 Column 0    Column 1
----------  ----------
 Lorem ip    Lorem ip
 Lorem ip    Lorem ip
 Lorem ip    Lorem ip
 Lorem ip    Lorem ip
 Lorem ip    Lorem ip
tests/unit/messages/formats/text/fixtures/whitespace_block.txt (1)

1-2: Consider adding trailing newline for POSIX-friendly text files

A final newline avoids edge-case diffs and tooling warnings, especially on Unix systems.

   This should be indented
+\n
tests/unit/messages/formats/markdown/fixtures/bullet_list.md (1)

1-5: Ensure list items share the same Markdown marker

Lines 1–2 use the - marker while lines 4–5 rely on the check-mark emoji alone.
Many renderers do not treat the latter as list items, so the list may split into two separate paragraphs.
Consider prefixing the checked rows with the same dash (or with - [x]) to keep the list structure intact:

- First bullet
- Second bullet

-- ✅ Check item 1\
-- ✅ Check item 2
+ - ✅ Check item 1
+ - ✅ Check item 2
tests/unit/messages/formats/markdown/fixtures/expandable_block.md (1)

1-2: Line-break escape may be brittle

Using the backslash at the end of line 1 triggers a hard line-break only in some Markdown flavours.
<br> or two trailing spaces is more portable:

-**Show More**\
+**Show More**  
tests/unit/messages/formats/text/fixtures/table_block_30_1.txt (1)

1-7: Add trailing newline for POSIX friendliness

The fixture lacks a final newline.
While not functionally critical, many tools and editors expect files to end with \n, and its absence can cause noisy diffs.

 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
 Lorem ipsum dolor sit amet, co
+                              
tests/unit/alerts/alert_messages/test_alert_utils.py (2)

323-326: format_adaptive_card already returns JSON-serialisable dicts – no need to wrap

assert_expected_json expects a dict, and format_adaptive_card already returns one.
You can pass it directly without the extra variable to keep the code tight:

-    adaptive_card_json = format_adaptive_card(message_body)
-    expected_adaptive_card_json_path = get_expected_file_path(
+    expected_adaptive_card_json_path = get_expected_file_path(
         FIXTURES_DIR / "adaptive_card", adaptive_card_filename
     )
-    assert_expected_json(adaptive_card_json, expected_adaptive_card_json_path)
+    assert_expected_json(format_adaptive_card(message_body), expected_adaptive_card_json_path)

348-353: Order-of-operations nit – compute fixture path before possible Slack send

Minor readability tweak – build the expected path before the (optional) Slack branch so the main assertion logic sits together:

-    if "TEST_SLACK_TOKEN" in os.environ and "TEST_SLACK_CHANNEL" in os.environ:
+    expected_block_kit_json_path = get_expected_file_path(
+        FIXTURES_DIR / "block_kit", block_kit_filename
+    )
+
+    if "TEST_SLACK_TOKEN" in os.environ and "TEST_SLACK_CHANNEL" in os.environ:
         ...
-    expected_block_kit_json_path = get_expected_file_path(
-        FIXTURES_DIR / "block_kit", block_kit_filename
-    )
tests/unit/messages/formats/block_kit/test_block_kit.py (1)

23-24: Unnecessary indirection – delegate to base class

BaseTestFormat already defines get_expected_file_path as abstract.
If all concrete format tests share the same implementation, move this helper to the base class instead of duplicating it here and in every future subclass.

tests/unit/messages/formats/markdown/fixtures/text_styles.md (1)

1-1: Missing trailing newline

Some diff tools and editors warn when the last line of a text file is not terminated with \n.
Consider adding a newline to keep fixtures consistent and avoid spurious diffs.

tests/unit/messages/formats/text/fixtures/divider_blocks.txt (1)

1-3: Fixture hard-codes 32 dashes – brittle if rendering width changes

If the divider length in the formatter becomes configurable, this exact character count will start failing the test for reasons unrelated to functionality.
Recommend expressing the expected divider via helper or regex in the test rather than a literal fixed-width line.

tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md (1)

1-1: Specify a language on the fenced code block to silence MD040

markdownlint flags code blocks without a language.
Adding even a generic identifier like text keeps the fixture content unchanged while satisfying the linter.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/code_block_50.md (1)

1-1: Add a language identifier to the code fence

Same MD040 warning here.
A minimal fix:

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md (1)

1-1: Provide a language for the fenced block

Consistent with other fixtures and avoids markdown-lint errors.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md (1)

1-1: Label the code fence with a language

Prevents MD040 violations and keeps tooling quiet.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md (1)

12-13: Minor: prefer double-space line breaks over trailing backslash

GitHub Markdown supports the backslash, but two trailing spaces are more widely recognised.
No action needed if the current style is intentional.

tests/unit/messages/formats/markdown/fixtures/divider_blocks.md (1)

5-5: Add a trailing newline for POSIX-style compliance

The file lacks a final newline, which some diff tools and linters flag.
Consider appending a \n after the last line to avoid nit-level warnings.

tests/unit/messages/formats/text/fixtures/table_block_200_1.txt (2)

2-2: Very long separator line may exceed typical terminal width

At ~200 chars this dash line is fine for snapshot testing, but can make diffs unwieldy.
Not blocking, just flagging in case width can be reduced without affecting coverage.


3-7: Missing trailing newline

Like other fixtures, appending a newline at EOF avoids noisy git warnings.

tests/unit/messages/formats/markdown/fixtures/all_icons.md (1)

1-1: Add a trailing newline for POSIX-style compliance.

Many diff tools and some CI linters flag files that don’t end with \n.
Adding one keeps the repo consistent and prevents noisy diffs.

-RED_TRIANGLE 🔺 X ❌ WARNING ⚠️ EXCLAMATION ❗ CHECK ✅ MAGNIFYING_GLASS 🔎 HAMMER_AND_WRENCH 🛠️ POLICE_LIGHT 🚨 INFO ℹ️ EYE 👁️ GEAR ⚙️ BELL 🔔 GEM 💎 SPARKLES ✨
+RED_TRIANGLE 🔺 X ❌ WARNING ⚠️ EXCLAMATION ❗ CHECK ✅ MAGNIFYING_GLASS 🔎 HAMMER_AND_WRENCH 🛠️ POLICE_LIGHT 🚨 INFO ℹ️ EYE 👁️ GEAR ⚙️ BELL 🔔 GEM 💎 SPARKLES ✨
+
tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md (2)

1-1: Specify a language on the opening fence for nicer GitHub rendering.

Prefixing the back-ticks with text (or md) avoids misleading syntax-highlighting and keeps the table monospace in UIs that auto-detect languages.

-```
+```text

9-9: Add missing newline at end of file.

Same rationale as earlier: avoids EOF-newline warnings in tooling.

-```
+```
+
tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md (1)

16-16: Terminate file with \n for consistency.

Minor, but keeps fixtures uniform and prevents lint noise.

-user1 `select 1`
+user1 `select 1`
+
tests/unit/messages/formats/markdown/fixtures/nested_expandable.md (1)

6-6: Append trailing newline.

Aligns with project style guidelines applied to other fixture files.

-Inner content
+Inner content
+
tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt (1)

10-10: Insert final newline.

Prevents “No newline at end of file” lint messages.

-user1 select 1
+user1 select 1
+
tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md (2)

8-8: Prefer GitHub-style task-list syntax over a standalone emoji

Using the check-mark emoji alone renders fine, but you lose the semantic advantages of Markdown task lists (e.g., automatic check boxes in GitHub/GitLab UIs).

-✅ Check item
+- [x] Check item

12-14: Rely on double-space line breaks instead of backslash escapes

The backslash continuation works only in CommonMark; many renderers ignore it.
A more interoperable approach is the standard two-space line break.

-**Show Details**\
-🔎 **Details Section**\
+**Show Details**␠␠
+🔎 **Details Section**␠␠

(␠ represents a space.)

tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md (1)

1-1: Add an explicit info-string to the fenced block

Specifying the language (text works well for ASCII tables) improves
syntax highlighting and avoids accidental interpretation as code in some renderers.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md (1)

1-1: Consistent fenced-code language hint

Same comment as in the 2-column variant—add an info-string for better rendering.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md (2)

8-8: Unify checklist notation with other fixtures

Keep the red/yellow fixtures identical except for the color cue to avoid
non-color related diffs in snapshot tests.

-✅ Check item
+- [x] Check item

12-14: Backslash line breaks — same portability remark applies

See the comment on the red variant; recommend double-space breaks.

-**Show Details**\
-🔎 **Details Section**\
+**Show Details**␠␠
+🔎 **Details Section**␠␠
tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md (1)

1-1: Annotate fenced block with language

Align with other table fixtures for consistency.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md (1)

2-8: Extremely long lines may hamper diff readability

The single-line cells (~1 k chars) make diffs unwieldy and hard to review. Consider inserting manual line breaks or splitting the lorem-ipsum text so future diffs stay readable.

elementary/messages/formats/text.py (2)

95-98: Simplify dictionary comprehension.

The comprehension can be simplified as suggested by pylint.

-            dicts = [
-                {header: cell for header, cell in zip(block.headers, row)}
-                for row in block.rows
-            ]
+            dicts = [dict(zip(block.headers, row)) for row in block.rows]

56-72: Consider refactoring elif chains for better maintainability.

While the current implementation works correctly, the long elif chain could be refactored using a dispatch pattern for better maintainability.

+    def _get_inline_formatters(self):
+        return {
+            IconBlock: lambda block: self.format_icon(block.icon),
+            TextBlock: lambda block: block.text,
+            LinkBlock: lambda block: f"{block.text} ({block.url})",
+            InlineCodeBlock: lambda block: block.code,
+            MentionBlock: lambda block: block.user,
+            LineBlock: lambda block: self.format_line_block(block),
+            WhitespaceBlock: lambda block: " ",
+        }

    def format_inline_block(self, block: InlineBlock) -> str:
+        formatters = self._get_inline_formatters()
+        formatter = formatters.get(type(block))
+        if formatter:
+            return formatter(block)
+        else:
+            raise ValueError(f"Unsupported inline block type: {type(block)}")
elementary/messages/formats/markdown.py (3)

101-104: Simplify dictionary comprehension.

Same simplification opportunity as in the text formatter.

-            dicts = [
-                {header: cell for header, cell in zip(block.headers, row)}
-                for row in block.rows
-            ]
+            dicts = [dict(zip(block.headers, row)) for row in block.rows]

51-67: Consider refactoring elif chains for consistency.

Similar to the text formatter, this elif chain could benefit from a dispatch pattern for better maintainability and consistency across formatters.

The same dispatch pattern approach suggested for the text formatter could be applied here for consistency.


133-133: Update type annotation for consistency.

The type annotation uses lowercase list which is modern Python style, but ensure this is consistent with the rest of the codebase.

Check if the codebase uses List from typing or lowercase list consistently and update accordingly.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ded6ea5 and d1471a8.

📒 Files selected for processing (80)
  • elementary/messages/formats/markdown.py (1 hunks)
  • elementary/messages/formats/text.py (1 hunks)
  • tests/unit/alerts/alert_messages/test_alert_utils.py (3 hunks)
  • tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py (2 hunks)
  • tests/unit/messages/formats/block_kit/test_block_kit.py (2 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_icons.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/bullet_list.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_200.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_50.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_500.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/colored_header.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/divider_blocks.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/expandable_block.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/fact_list.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/nested_expandable.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/simple_header.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_1000.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_200.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_50.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_500.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_styles.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/whitespace_block.md (1 hunks)
  • tests/unit/messages/formats/markdown/test_markdown.py (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_green.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_red.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_icons.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/bullet_list.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_200.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_50.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_500.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/colored_header.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/divider_blocks.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/expandable_block.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/fact_list.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/nested_expandable.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/simple_header.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_1000.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_200.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_50.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_500.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_styles.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/whitespace_block.txt (1 hunks)
  • tests/unit/messages/formats/text/test_text.py (1 hunks)
  • tests/unit/messages/utils.py (2 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (6)
tests/unit/messages/formats/block_kit/test_block_kit.py (2)
tests/unit/messages/utils.py (2)
  • assert_expected_json (25-40)
  • get_expected_file_path (17-22)
tests/unit/messages/formats/base_test_format.py (1)
  • get_expected_file_path (38-39)
tests/unit/alerts/alert_messages/test_alert_utils.py (1)
tests/unit/messages/utils.py (2)
  • assert_expected_json (25-40)
  • get_expected_file_path (17-22)
tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py (2)
tests/unit/messages/utils.py (2)
  • assert_expected_json (25-40)
  • get_expected_file_path (17-22)
tests/unit/messages/formats/base_test_format.py (1)
  • get_expected_file_path (38-39)
tests/unit/messages/utils.py (4)
tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py (1)
  • get_expected_file_path (46-47)
tests/unit/messages/formats/text/test_text.py (1)
  • get_expected_file_path (15-16)
tests/unit/messages/formats/block_kit/test_block_kit.py (1)
  • get_expected_file_path (22-23)
tests/unit/messages/formats/markdown/test_markdown.py (1)
  • get_expected_file_path (15-16)
elementary/messages/formats/markdown.py (3)
elementary/messages/blocks.py (17)
  • ActionsBlock (101-103)
  • CodeBlock (124-126)
  • DividerBlock (129-130)
  • ExpandableBlock (168-172)
  • FactListBlock (148-150)
  • HeaderBlock (119-121)
  • Icon (8-22)
  • IconBlock (51-53)
  • InlineCodeBlock (56-58)
  • LineBlock (66-69)
  • LinesBlock (137-138)
  • LinkBlock (45-48)
  • MentionBlock (61-63)
  • TableBlock (153-165)
  • TextBlock (39-42)
  • TextStyle (25-27)
  • WhitespaceBlock (72-73)
elementary/messages/message_body.py (1)
  • MessageBody (36-39)
elementary/messages/formats/text.py (11)
  • TableStyle (36-38)
  • format_icon (46-54)
  • format_inline_block (56-72)
  • format_line_block (74-77)
  • format_lines_block (79-82)
  • format_fact_list_block (84-89)
  • format_table_block (91-101)
  • format_expandable_block (103-104)
  • format_message_blocks (125-128)
  • format_message_block (106-123)
  • format (130-131)
elementary/messages/formats/text.py (4)
elementary/clients/slack/slack_message_builder.py (1)
  • blocks (33-34)
elementary/messages/blocks.py (14)
  • CodeBlock (124-126)
  • DividerBlock (129-130)
  • ExpandableBlock (168-172)
  • FactListBlock (148-150)
  • HeaderBlock (119-121)
  • Icon (8-22)
  • IconBlock (51-53)
  • InlineCodeBlock (56-58)
  • LineBlock (66-69)
  • LinkBlock (45-48)
  • MentionBlock (61-63)
  • TableBlock (153-165)
  • TextBlock (39-42)
  • WhitespaceBlock (72-73)
elementary/messages/message_body.py (1)
  • MessageBody (36-39)
elementary/messages/formats/markdown.py (11)
  • TableStyle (31-33)
  • format_icon (40-41)
  • format_inline_block (51-67)
  • format_line_block (69-72)
  • format_lines_block (74-87)
  • format_fact_list_block (89-94)
  • format_table_block (96-107)
  • format_expandable_block (109-110)
  • format_message_blocks (133-136)
  • format_message_block (112-131)
  • format (138-139)
🪛 LanguageTool
tests/unit/messages/formats/text/fixtures/code_block_200.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_200.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/code_block_500.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_500.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/markdown/fixtures/text_length_500.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_1000.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/markdown/fixtures/text_length_1000.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_2.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_5.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_3.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/markdown/fixtures/text_length_200.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_1.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_4.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🪛 markdownlint-cli2 (0.17.2)
tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🪛 Pylint (3.3.7)
elementary/messages/formats/markdown.py

[refactor] 44-49: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 52-67: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 51-51: Too many return statements (7/6)

(R0911)


[refactor] 97-107: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 102-102: Unnecessary use of a comprehension, use dict(zip(block.headers, row)) instead.

(R1721)


[refactor] 113-131: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 112-112: Too many return statements (8/6)

(R0911)

elementary/messages/formats/text.py

[refactor] 47-54: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 57-72: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 56-56: Too many return statements (7/6)

(R0911)


[refactor] 92-101: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 96-96: Unnecessary use of a comprehension, use dict(zip(block.headers, row)) instead.

(R1721)


[refactor] 107-123: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 106-106: Too many return statements (7/6)

(R0911)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: code-quality
🔇 Additional comments (21)
tests/unit/messages/formats/text/fixtures/fact_list.txt (1)

1-1: Fixture looks correct – no issues found
Single-line content is appropriate for the test; nothing else to flag.

tests/unit/messages/formats/text/fixtures/simple_header.txt (1)

1-1: Fixture looks correct – no issues found
Content is clear and consistent with naming; good to go.

tests/unit/messages/formats/text/fixtures/colored_header.txt (1)

1-1: Fixture looks correct – no issues found
Matches the expected header sample for text formatting tests.

tests/unit/messages/formats/text/fixtures/expandable_block.txt (1)

1-2: Fixture looks correct – no issues found
Two-line structure reflects “expandable” semantics accurately.

tests/unit/messages/formats/text/fixtures/code_block_50.txt (1)

1-1: Fixture looks correct – no issues found
Placeholder text is fine for code-block length boundary testing.

tests/unit/messages/formats/text/fixtures/table_block_200_5.txt (1)

7-7: Add terminating newline for POSIX-friendly tooling

Several code-viewers and CLI tools expect a trailing \n to distinguish the last line; omitting it can lead to noisy diffs.
[ suggest_nitpick ]

@@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c
+
tests/unit/messages/formats/markdown/fixtures/text_length_50.md (1)

1-1: LGTM – content length matches fixture intent

String length is exactly 50 characters (no newline), matching the fixture’s purpose.
No further action required.

tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md (1)

1-9: Verify fenced-code wrapping is intentional

The table is wrapped in a triple-back-tick block, which causes Markdown renderers to display it as plain text rather than an actual table.
If the goal is to render a monospace code snippet – great.
If you expect a real Markdown table, drop the fence and use the pipe (|) syntax instead.

No change requested if the current behaviour is deliberate.

tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md (1)

1-9: Inconsistent fencing – opening & closing ``` should not be part of rendered table

The back-tick fences (```) are present inside the fixture body.
If the formatter is supposed to emit a fenced code block, include the language hint (e.g., ```text) for clarity; if not, remove the fences to avoid double-fencing when embedding this table elsewhere.

tests/unit/messages/formats/markdown/fixtures/whitespace_block.md (1)

1-2: Fixture looks good

Back-slash continuation and &nbsp; usage match the expected Markdown behaviour for the whitespace test case. No issues spotted.

tests/unit/messages/formats/markdown/fixtures/text_length_1000.md (1)

1-1: Verify that the fixture is not accidentally truncated

The file ends mid-word (“con”). If the intent was exactly 1000 characters, double-check that the generator didn’t cut the text earlier than planned, otherwise tests comparing full-length output may give false positives/negatives.

tests/unit/messages/formats/text/fixtures/table_block_8_3.txt (1)

1-7: All good – concise table layout

The fixed-width columns accurately reflect the 8×3 table test case.
No concerns.

tests/unit/messages/formats/text/fixtures/all_blocks_green.txt (1)

1-10: Fixture looks good – no issues found

The content covers the various text-formatter features well and should serve the tests nicely.

tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md (1)

1-9: No actionable feedback

Nothing stands out – the fixture is concise and purposeful.

tests/unit/messages/formats/text/fixtures/table_block_200_4.txt (1)

1-7: No actionable feedback

The long-column table is expected for width-stress tests; no issues spotted.

tests/unit/messages/formats/text/test_text.py (1)

1-20: LGTM! Clean test implementation following established patterns.

The test class correctly inherits from BaseTestFormat[str] and implements all required methods consistently with other format test modules. The fixture directory setup and file path handling are appropriate for text format testing.

tests/unit/messages/utils.py (1)

43-49: LGTM! Well-implemented text assertion utility.

The assert_expected_text function follows the same pattern as assert_expected_json with proper override support, maintaining consistency across the testing utilities.

tests/unit/messages/formats/markdown/test_markdown.py (1)

1-20: LGTM! Consistent test implementation for markdown formatting.

The test class follows the same established pattern as other format test modules, with appropriate fixture handling for markdown files (.md extension).

elementary/messages/formats/text.py (1)

134-141: LGTM! Clean and well-structured entry point function.

The format_text function provides a clean interface with sensible defaults for icon and table styles. The parameter design allows for flexibility while maintaining ease of use.

elementary/messages/formats/markdown.py (2)

74-87: LGTM! Sophisticated handling of markdown line break requirements.

The logic correctly handles the nuance that markdown requires explicit line breaks (\) for non-bullet list items while bullet lists naturally create new lines. This is a thoughtful implementation of markdown formatting requirements.


96-107: LGTM! Proper markdown table formatting with code blocks.

The implementation correctly wraps both tabulated and JSON table output in markdown code blocks, ensuring proper rendering in markdown viewers.

ReportLinkData as ReportLink,
)
from tests.unit.messages.utils import assert_expected_json, get_expected_json_path
from tests.unit.messages.utils import assert_expected_json, get_expected_file_path
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Silent creation of empty JSON fixtures can hide real mismatches

get_expected_file_path will happily create the file and pre-populate it with {} when the fixture is missing.
This causes two problems:

  1. A missing / miss-typed fixture passes CI once OVERRIDE=true, and
  2. The first local run overwrites the file with {}, making the diff in the subsequent assertion noisy and confusing.

Fail fast instead:

-from tests.unit.messages.utils import assert_expected_json, get_expected_file_path
+from tests.unit.messages.utils import assert_expected_json
+
+def _must_exist(path: Path) -> Path:
+    if not path.exists():
+        raise FileNotFoundError(f"Expected fixture is missing: {path}")
+    return path

and use _must_exist where you currently call get_expected_file_path.
This keeps the convenience helper for writers, while tests remain strict.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In tests/unit/alerts/alert_messages/test_alert_utils.py at line 26, replace
calls to get_expected_file_path with its _must_exist variant to prevent silent
creation of empty JSON fixture files. This change ensures that missing or
mistyped fixture files cause immediate test failures instead of creating empty
files, improving test strictness and avoiding confusing diffs. Update all
relevant test code to use _must_exist to enforce this fail-fast behavior while
retaining helper convenience.

Comment on lines +13 to 14
from tests.unit.messages.utils import assert_expected_json, get_expected_file_path

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Same hidden-fixture pitfall as above

get_expected_file_path silently fabricates empty JSON files. Consider re-using the _must_exist helper (see previous comment) or switching to a stricter helper for tests.

🤖 Prompt for AI Agents
In tests/unit/messages/formats/block_kit/test_block_kit.py around lines 13 to
14, the use of get_expected_file_path can lead to silent creation of empty JSON
files, which is problematic. Replace get_expected_file_path with the _must_exist
helper or another stricter helper function that ensures the expected JSON files
actually exist, preventing silent fabrication and improving test reliability.

from elementary.messages.message_body import MessageBody
from tests.unit.messages.formats.base_test_format import BaseTestFormat
from tests.unit.messages.utils import assert_expected_json, get_expected_json_path
from tests.unit.messages.utils import assert_expected_json, get_expected_file_path
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Avoid shadowing by aliasing the imported helper

Importing get_expected_file_path and then defining a method with the same name may confuse readers and static-analysis tools. Alias the helper on import to keep the two clearly distinct.

-from tests.unit.messages.utils import assert_expected_json, get_expected_file_path
+from tests.unit.messages.utils import (
+    assert_expected_json,
+    get_expected_file_path as _get_expected_file_path,
+)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
from tests.unit.messages.utils import assert_expected_json, get_expected_file_path
from tests.unit.messages.utils import (
assert_expected_json,
get_expected_file_path as _get_expected_file_path,
)
🤖 Prompt for AI Agents
In tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py at line 20,
the imported helper function get_expected_file_path is shadowed by a local
method with the same name. To fix this, alias the imported
get_expected_file_path during import to a different name, such as
get_expected_file_path_helper, to clearly distinguish it from the local method
and avoid confusion.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (19)
tests/unit/messages/formats/text/fixtures/text_length_500.txt (1)

1-2: Add trailing newline for POSIX-friendly text files

Most linters and editors expect text files (even fixtures) to end with a single newline character (\n). Adding it avoids spurious diffs and warnings in future PRs.

 Lorem ipsum dolor sit amet, consectetur adip
+
tests/unit/messages/formats/markdown/fixtures/text_length_1000.md (1)

1-2: Add a trailing newline for POSIX-style file hygiene

Fixtures are still source-controlled text files, so keeping the conventional trailing newline avoids noisy diffs when editors auto-append it.

 Lorem ipsum dolor sit amet, con
+
tests/unit/messages/formats/text/fixtures/code_block_500.txt (1)

1-2: Add trailing newline for POSIX-compliant text files
Many tools (git, diff, some editors) expect a \n at EOF; its absence can cause needless “no-newline-at-end-of-file” markers and off-by-one issues in line-based tooling.

 Lorem ipsum dolor sit amet, consectetur adip
+
tests/unit/messages/formats/markdown/fixtures/code_block_50.md (1)

1-3: Specify a language identifier on the fenced code block (MD040)
markdownlint flags fenced blocks with no language. If the fixture isn’t specifically testing “no-language” behaviour, add a generic identifier (e.g., text) for consistency with the rest of the fixtures.

-```
+```text
 Lorem ipsum dolor sit amet, consectetur adipiscing
-```
+```
tests/unit/messages/formats/markdown/fixtures/code_block_500.md (1)

1-3: Add language identifier to fenced code block to satisfy MD040

Markdown-lint flags this fixture because the opening fence lacks a language ( ```text, ```bash, etc.).
Even though the fixture is consumed programmatically and highlighting is not required, adding an identifier (e.g. text) silences the linter without affecting the tests and improves readability when browsing the file.

-```
+```text
tests/unit/messages/formats/text/fixtures/table_block_200_4.txt (1)

1-8: Consider generating this wide-table fixture programmatically in the test instead of checking in a 200-column text file

Keeping very large static fixtures in the repository increases repo size and makes diffs noisy while providing limited benefit—the content is synthetic “Lorem ipsum” that can be produced on-the-fly.
A simple helper that renders the table at test time (and asserts against a hard-coded hash or golden string held in code) would keep the repo lean and avoid merge conflicts when spacing changes.

tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md (1)

1-9: Specify a language identifier for the fenced code block
markdownlint (MD040) flags the fence because no language is provided.
Even though this is just a test fixture, adding a language (e.g., text or markdown) keeps the fixture lint-clean and clarifies intent for future readers/editors.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md (1)

1-9: Specify language identifier for fenced code block (MD040)

markdownlint flags the opening ``` fence because no language is declared.
Adding a generic identifier such as text (or `md` if you want syntax-highlighted pipes) silences the linter without affecting fixture fidelity.

-```
+```text

Optional: add a trailing newline after the closing fence to keep POSIX editors happy.

tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md (1)

1-1: Specify a language for the fenced code block to silence MD040

markdownlint flags the opening back-ticks because no language is provided.
Adding text keeps the current rendering while satisfying the linter.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md (1)

1-9: Consider adding a language identifier to the fenced code block

markdownlint (MD040) flags this fixture because the opening back-ticks do not specify a language.
If you don’t care about syntax highlighting you can use text, which keeps the rendering identical while silencing the linter:

-```
+```text-```
+```

Alternatively, disable MD040 for this file if retaining a “bare” fence is required for test fidelity.

tests/unit/messages/formats/text/fixtures/text_length_1000.txt (1)

1-2: Ensure POSIX-style trailing newline for cross-tool consistency

Some editors and *nix tooling expect every text file to end with a single \n.
Please verify the fixture actually ends with one final newline (the blank line in the diff may be just the Git viewer). If it is missing, append it so linters and future diffs do not complain.

tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md (1)

1-1: Add a language identifier to the fenced code block

markdownlint is flagging MD040 because the opening fence lacks a language.
Adding a generic identifier such as text (or md) keeps the fixture rendering unchanged while satisfying the linter.

-```
+```text
tests/unit/messages/formats/markdown/fixtures/text_length_500.md (1)

1-2: Store long placeholder text programmatically instead of as a committed fixture

The 500-char Lorem ipsum blob lives here solely to satisfy a length requirement. Committing large single-line lorem-ipsum files clutters diffs and inflates repository size. Prefer generating the text on-the-fly inside the test (e.g., text = "Lorem ipsum " * 40 and truncate to 500 chars) or keep it in a compact fixture (multi-line, readable).

tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md (2)

1-3: Specify a language for the fenced code block to satisfy markdownlint (MD040)

markdownlint flags anonymous fenced code blocks.
Adding an explicit language (e.g., text) keeps the linter quiet and documents intent.

-```
+```text

9-9: Add a terminal newline for POSIX friendliness (optional)

Many editors/lint tools warn when the last line is not newline-terminated.
Not critical for tests, but easy to fix.

tests/unit/messages/formats/text/fixtures/table_block_200_1.txt (1)

1-8: Nit: add a trailing newline to avoid diff-only churn

The fixture ends without a terminating newline. Git diff tools and some editors highlight this as a warning and future edits often add it unintentionally, creating noisy diffs.
Consider appending a single \n at EOF.

tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md (1)

1-9: Optional: specify a fenced-code language to silence MD040

markdownlint flags the opening ``` block because no language identifier is provided.
If the formatter’s output is unconcerned with syntax highlighting, you can safely ignore; otherwise, adding text (or another appropriate token) will suppress the linter without altering rendered appearance:

-```
+```text

Ensure this change stays consistent with the formatter’s expected output before updating the fixture.

tests/unit/messages/formats/text/fixtures/table_block_200_2.txt (1)

1-8: Consider generating the wide-table fixture on the fly instead of committing a 4-KB plaintext snapshot

Storing wide, space-padded fixtures bloats the repo history and makes diffs noisy for what is essentially deterministic data.
A lightweight alternative:

  1. Keep a short seed file (e.g. JSON rows/columns).
  2. In the test, generate the padded table at runtime using the new TextFormatter and compare against the regenerated value.

This keeps fixtures readable and avoids future churn if the padding algorithm changes.
If keeping the file is required for performance or reproducibility, add a comment header (# AUTO-GENERATED – do not edit) so future contributors know not to hand-edit it.

tests/unit/messages/formats/text/fixtures/table_block_200_5.txt (1)

3-7: Fixture size & maintainability

The test fixture is ~1 KB of repeated “Lorem ipsum …” filler.
While correct functionally, such long placeholder text inflates the repository and makes reviewing diffs noisy. Consider:

-# five full rows of 200-char lorem ipsum
+# generate rows dynamically inside the test or
+# use a shorter deterministic string per column (e.g., "r0c0", "r0c1", …)

This keeps the snapshot intent while trimming file weight and easing future maintenance.
No action required if the team prefers explicit golden-files, but worth weighing the trade-off.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d1471a8 and 34bf4f5.

📒 Files selected for processing (75)
  • elementary/messages/blocks.py (2 hunks)
  • elementary/messages/message_body.py (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_icons.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/bullet_list.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_200.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_50.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/code_block_500.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/colored_header.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/divider_blocks.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/expandable_block.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/fact_list.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/nested_expandable.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/simple_header.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_1000.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_200.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_50.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_length_500.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/text_styles.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/whitespace_block.md (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_green.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_red.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/all_icons.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/bullet_list.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_200.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_50.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/code_block_500.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/colored_header.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/divider_blocks.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/expandable_block.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/fact_list.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/nested_expandable.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/simple_header.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_200_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_30_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_1.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_2.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_3.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_4.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/table_block_8_5.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_1000.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_200.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_50.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_length_500.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/text_styles.txt (1 hunks)
  • tests/unit/messages/formats/text/fixtures/whitespace_block.txt (1 hunks)
  • tests/unit/messages/utils.py (2 hunks)
✅ Files skipped from review due to trivial changes (4)
  • elementary/messages/message_body.py
  • elementary/messages/blocks.py
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md
  • tests/unit/messages/formats/text/fixtures/all_icons.txt
🚧 Files skipped from review as they are similar to previous changes (47)
  • tests/unit/messages/formats/markdown/fixtures/colored_header.md
  • tests/unit/messages/formats/markdown/fixtures/code_block_200.md
  • tests/unit/messages/formats/markdown/fixtures/text_length_50.md
  • tests/unit/messages/formats/text/fixtures/fact_list.txt
  • tests/unit/messages/formats/text/fixtures/text_length_50.txt
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md
  • tests/unit/messages/formats/markdown/fixtures/bullet_list.md
  • tests/unit/messages/formats/text/fixtures/simple_header.txt
  • tests/unit/messages/formats/text/fixtures/expandable_block.txt
  • tests/unit/messages/formats/text/fixtures/code_block_50.txt
  • tests/unit/messages/formats/markdown/fixtures/fact_list.md
  • tests/unit/messages/formats/markdown/fixtures/expandable_block.md
  • tests/unit/messages/formats/text/fixtures/text_styles.txt
  • tests/unit/messages/formats/text/fixtures/nested_expandable.txt
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md
  • tests/unit/messages/formats/text/fixtures/table_block_8_1.txt
  • tests/unit/messages/formats/text/fixtures/colored_header.txt
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md
  • tests/unit/messages/formats/text/fixtures/divider_blocks.txt
  • tests/unit/messages/formats/text/fixtures/table_block_8_4.txt
  • tests/unit/messages/formats/text/fixtures/table_block_30_1.txt
  • tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md
  • tests/unit/messages/formats/markdown/fixtures/simple_header.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md
  • tests/unit/messages/formats/markdown/fixtures/text_styles.md
  • tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt
  • tests/unit/messages/formats/text/fixtures/table_block_30_4.txt
  • tests/unit/messages/formats/markdown/fixtures/divider_blocks.md
  • tests/unit/messages/formats/markdown/fixtures/nested_expandable.md
  • tests/unit/messages/formats/text/fixtures/table_block_30_3.txt
  • tests/unit/messages/formats/text/fixtures/whitespace_block.txt
  • tests/unit/messages/formats/text/fixtures/table_block_8_5.txt
  • tests/unit/messages/formats/text/fixtures/bullet_list.txt
  • tests/unit/messages/formats/markdown/fixtures/all_icons.md
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md
  • tests/unit/messages/formats/markdown/fixtures/whitespace_block.md
  • tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt
  • tests/unit/messages/formats/text/fixtures/table_block_8_2.txt
  • tests/unit/messages/formats/text/fixtures/all_blocks_green.txt
  • tests/unit/messages/formats/text/fixtures/table_block_30_5.txt
  • tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md
  • tests/unit/messages/formats/text/fixtures/all_blocks_red.txt
  • tests/unit/messages/formats/text/fixtures/table_block_8_3.txt
  • tests/unit/messages/formats/text/fixtures/table_block_30_2.txt
  • tests/unit/messages/utils.py
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
tests/unit/messages/formats/markdown/fixtures/code_block_50.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/code_block_500.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🪛 LanguageTool
tests/unit/messages/formats/markdown/fixtures/text_length_1000.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/markdown/fixtures/text_length_200.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/markdown/fixtures/text_length_500.md

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/code_block_200.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/code_block_500.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_1.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_2.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_3.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_4.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/table_block_200_5.txt

[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~3-~3: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~4-~4: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~5-~5: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~6-~6: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dol...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum do...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~7-~7: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_1000.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_200.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

tests/unit/messages/formats/text/fixtures/text_length_500.txt

[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1-~1: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: code-quality
🔇 Additional comments (4)
tests/unit/messages/formats/text/fixtures/code_block_200.txt (1)

1-2: Fixture looks good as-is

The placeholder content and length are appropriate for exercising the formatter’s code-block handling. No action needed.

tests/unit/messages/formats/text/fixtures/text_length_200.txt (1)

1-1: Fixture looks good.

The placeholder text fulfils its purpose for length-based assertions. No issues spotted.

tests/unit/messages/formats/markdown/fixtures/text_length_200.md (1)

1-1: Confirm the fixture’s exact-length requirement

The line ends with a solitary “c”, suggesting the sentence was cut mid-word to hit an exact 200-character target. If downstream assertions rely on precisely 200 characters (no trailing newline), any inadvertent edit—including adding a newline, trimming whitespace, or re-wrapping the text—will break the test. Please double-check that:

  1. The file length is indeed 200 bytes/characters (excluding a final newline if the test expects none).
  2. Tests explicitly verify the length rather than the textual content, so future refactors don’t accidentally fail due to harmless wording changes.

If length is not critical, consider finishing the word to improve readability of the fixture.

tests/unit/messages/formats/text/fixtures/table_block_200_3.txt (1)

1-7: Fixture looks good

No functional or formatting issues spotted; content aligns with the Markdown counterpart.

@@ -0,0 +1,9 @@
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add language identifier to the fenced code block (MD040)

markdownlint fails on anonymous code fences.
Using a neutral identifier such as text satisfies the rule and leaves rendering unchanged.

-```
+```text
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md at line 1,
the fenced code block is missing a language identifier, causing markdownlint
rule MD040 to fail. Add a neutral language identifier like `text` immediately
after the opening triple backticks to fix the linting error without affecting
rendering.

@@ -0,0 +1,9 @@
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add language tag to fenced code block to satisfy markdownlint MD040

markdownlint flags the opening fence without a language.
Updating to text (or none) keeps the snapshot identical for renderers yet appeases the linter:

-```
+```text

If tests compare the fixture byte-for-byte, remember to update the expected string in assertions.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

1-1: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md at line 1,
the fenced code block lacks a language tag, causing markdownlint MD040 warnings.
Add a language tag such as "text" immediately after the opening triple backticks
to satisfy the linter without changing the rendered output. If the tests compare
the fixture content exactly, update the expected strings in the test assertions
accordingly.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
elementary/messages/formats/text.py (1)

46-54: Previous icon rendering issue has been resolved.

The function now correctly uses ICON_TO_UNICODE[icon] for the Unicode style, which properly renders Unicode characters for plain text output. This addresses the previous review concern about using HTML entities.

🧹 Nitpick comments (1)
elementary/messages/formats/text.py (1)

91-101: Consider minor optimization for dictionary construction.

The table formatting logic is correct and handles both tabulate and JSON styles appropriately. Static analysis suggests using dict(zip(block.headers, row)) instead of the dict comprehension on line 96 for slightly better performance.

-            dicts = [
-                {header: cell for header, cell in zip(block.headers, row)}
-                for row in block.rows
-            ]
+            dicts = [dict(zip(block.headers, row)) for row in block.rows]
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 34bf4f5 and db1dcc9.

📒 Files selected for processing (5)
  • elementary/messages/formats/adaptive_cards.py (2 hunks)
  • elementary/messages/formats/block_kit.py (2 hunks)
  • elementary/messages/formats/markdown.py (1 hunks)
  • elementary/messages/formats/text.py (1 hunks)
  • elementary/messages/formats/unicode.py (2 hunks)
✅ Files skipped from review due to trivial changes (3)
  • elementary/messages/formats/adaptive_cards.py
  • elementary/messages/formats/unicode.py
  • elementary/messages/formats/block_kit.py
🧰 Additional context used
🧬 Code Graph Analysis (1)
elementary/messages/formats/text.py (3)
elementary/messages/blocks.py (15)
  • ActionsBlock (101-103)
  • CodeBlock (124-126)
  • DividerBlock (129-130)
  • ExpandableBlock (168-172)
  • FactListBlock (148-150)
  • HeaderBlock (119-121)
  • Icon (8-22)
  • IconBlock (51-53)
  • InlineCodeBlock (56-58)
  • LineBlock (66-69)
  • LinkBlock (45-48)
  • MentionBlock (61-63)
  • TableBlock (153-165)
  • TextBlock (39-42)
  • WhitespaceBlock (72-73)
elementary/messages/message_body.py (1)
  • MessageBody (36-39)
elementary/messages/formats/markdown.py (11)
  • TableStyle (31-33)
  • format_icon (40-41)
  • format_inline_block (51-67)
  • format_line_block (69-72)
  • format_lines_block (74-87)
  • format_fact_list_block (89-94)
  • format_table_block (96-107)
  • format_expandable_block (109-110)
  • format_message_blocks (133-136)
  • format_message_block (112-131)
  • format (138-139)
🪛 Pylint (3.3.7)
elementary/messages/formats/markdown.py

[refactor] 44-49: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 52-67: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 51-51: Too many return statements (7/6)

(R0911)


[refactor] 97-107: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 102-102: Unnecessary use of a comprehension, use dict(zip(block.headers, row)) instead.

(R1721)


[refactor] 113-131: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 112-112: Too many return statements (8/6)

(R0911)

elementary/messages/formats/text.py

[refactor] 47-54: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 57-72: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 56-56: Too many return statements (7/6)

(R0911)


[refactor] 92-101: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 96-96: Unnecessary use of a comprehension, use dict(zip(block.headers, row)) instead.

(R1721)


[refactor] 107-123: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 106-106: Too many return statements (7/6)

(R0911)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: code-quality
🔇 Additional comments (3)
elementary/messages/formats/markdown.py (3)

74-87: Complex line formatting logic looks correct for Markdown.

The implementation correctly handles Markdown's line break behavior by:

  • Detecting bullet lists with regex pattern ^\s*[*-]
  • Adding backslash escapes for non-bullet lines to force line breaks
  • Properly managing newlines between lines

The logic appropriately addresses Markdown's requirement that single line breaks don't render as new lines except in bullet lists.


96-107: Table formatting implementation is appropriate.

Both table styles correctly wrap output in code blocks using triple backticks, which is the standard approach for preserving table formatting in Markdown. The JSON style provides a structured alternative when tabular formatting isn't suitable.


109-110: Hard line‐break behavior verified

The \\\n in the f-string produces a single backslash at end-of-line followed by a newline, which is the CommonMark way to force a hard line break. The fixtures (e.g. expandable_block.md, nested_expandable.md) confirm this exact rendering. No changes required.

Comment on lines +125 to +128
def format_message_blocks(self, blocks: List[MessageBlock]) -> str:
if not blocks:
return ""
return "\n".join([self.format_message_block(block) for block in blocks])
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify block separation behavior for text format.

The method joins message blocks with single newlines, which differs from the markdown formatter that uses double newlines (\n\n). Ensure this single newline separation provides adequate visual distinction between blocks in plain text output.


🏁 Script executed:

#!/bin/bash
# Check if there are any tests that verify the block separation behavior
ast-grep --pattern 'format_message_blocks($$$)' | head -10
rg -A 5 -B 5 'format_message_blocks.*join'

Length of output: 325


Add unit tests to verify single-newline separation in TextFormatter

No existing tests cover format_message_blocks in elementary/messages/formats/text.py. To ensure that joining blocks with a single \n still gives adequate visual separation (vs. the Markdown formatter’s \n\n), please:

  • Manually verify the plain-text output for a multi-block message.
  • Add a unit test (e.g. under tests/…) for TextFormatter.format_message_blocks, asserting:
    formatter = TextFormatter()
    blocks = [MessageBlock(text="A"), MessageBlock(text="B")]
    assert formatter.format_message_blocks(blocks) == "A\nB"
  • Update or extend any existing tests for other formatters to include a similar case for plain text.
🤖 Prompt for AI Agents
In elementary/messages/formats/text.py around lines 125 to 128, the method
format_message_blocks lacks unit tests verifying that multiple message blocks
are joined with a single newline. Add a new unit test in the appropriate test
file under tests/ that creates a TextFormatter instance, formats a list of
MessageBlock objects with texts "A" and "B", and asserts the output equals
"A\nB". Also, review and extend existing formatter tests to include similar
cases ensuring consistent plain-text formatting.

Some content with a [link](https://example.com)

**Inner Block**\
Inner content
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outer Block
🔎 Title with Icon
Some content with a link

Inner Block
Inner content

Inner Block 2
Inner content

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
elementary/messages/formats/markdown.py (1)

31-33: Consider reusing the existing TableStyle enum.

The TableStyle enum is duplicated from the text formatter. Consider importing it from a shared location to maintain consistency and avoid duplication.

-class TableStyle(Enum):
-    TABULATE = "tabulate"
-    JSON = "json"

Import from the text formatter or create a shared enums module:

+from elementary.messages.formats.text import TableStyle
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a1ff7c7 and 4bbb55d.

📒 Files selected for processing (7)
  • elementary/messages/formats/markdown.py (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/expandable_block.md (1 hunks)
  • tests/unit/messages/formats/markdown/fixtures/nested_expandable.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • tests/unit/messages/formats/markdown/fixtures/expandable_block.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md
  • tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md
  • tests/unit/messages/formats/markdown/fixtures/nested_expandable.md
🧰 Additional context used
🧬 Code Graph Analysis (1)
elementary/messages/formats/markdown.py (4)
elementary/messages/blocks.py (17)
  • ActionsBlock (101-103)
  • CodeBlock (124-126)
  • DividerBlock (129-130)
  • ExpandableBlock (168-172)
  • FactListBlock (148-150)
  • HeaderBlock (119-121)
  • Icon (8-22)
  • IconBlock (51-53)
  • InlineCodeBlock (56-58)
  • LineBlock (66-69)
  • LinesBlock (137-138)
  • LinkBlock (45-48)
  • MentionBlock (61-63)
  • TableBlock (153-165)
  • TextBlock (39-42)
  • TextStyle (25-27)
  • WhitespaceBlock (72-73)
elementary/messages/message_body.py (1)
  • MessageBody (36-39)
elementary/messages/formats/text.py (11)
  • TableStyle (36-38)
  • format_icon (46-54)
  • format_inline_block (56-72)
  • format_line_block (74-77)
  • format_lines_block (79-82)
  • format_fact_list_block (84-89)
  • format_table_block (91-101)
  • format_expandable_block (103-104)
  • format_message_blocks (125-128)
  • format_message_block (106-123)
  • format (130-131)
elementary/messages/formats/adaptive_cards.py (10)
  • format_icon (34-35)
  • format_text_block (38-44)
  • format_inline_block (47-63)
  • format_line_block (70-77)
  • format_lines_block (80-81)
  • format_fact_list_block (121-131)
  • format_table_block (134-156)
  • format_expandable_block (211-231)
  • format_message_blocks (234-245)
  • format_message_block (159-179)
🪛 Pylint (3.3.7)
elementary/messages/formats/markdown.py

[refactor] 44-49: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 52-67: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 51-51: Too many return statements (7/6)

(R0911)


[refactor] 97-107: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 102-102: Unnecessary use of a comprehension, use dict(zip(block.headers, row)) instead.

(R1721)


[refactor] 115-133: Unnecessary "elif" after "return", remove the leading "el" from "elif"

(R1705)


[refactor] 114-114: Too many return statements (8/6)

(R0911)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: code-quality
🔇 Additional comments (4)
elementary/messages/formats/markdown.py (4)

43-49: Text block formatting looks correct.

The implementation properly handles Markdown syntax for bold (**text**) and italic (_text_) formatting.


99-99: Table formatting approach is appropriate.

Wrapping both tabulated and JSON tables in code blocks (```) is the correct approach for Markdown, ensuring proper rendering of formatted content.

Also applies to: 105-105


109-112: Expandable block formatting implementation looks correct.

The use of Markdown blockquote syntax (>) with bold title formatting creates appropriate expandable-style content for Markdown output.


144-148: Convenience function implementation is clean.

The format_markdown function provides a good interface with sensible defaults for table styling.

elif isinstance(block, LineBlock):
return self.format_line_block(block)
elif isinstance(block, WhitespaceBlock):
return "&nbsp;"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Replace HTML entity with Markdown-appropriate whitespace.

Using &nbsp; is HTML syntax, not standard Markdown. Consider using regular spaces or Markdown-specific non-breaking space alternatives.

-            return "&nbsp;"
+            return " "

For non-breaking space in Markdown, you could also use multiple spaces or consider if whitespace blocks need special handling at all.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return "&nbsp;"
return " "
🤖 Prompt for AI Agents
In elementary/messages/formats/markdown.py at line 65, replace the HTML entity
"&nbsp;" with a Markdown-appropriate whitespace. Use regular spaces or multiple
spaces instead of the HTML non-breaking space, ensuring the output conforms to
Markdown syntax rather than HTML.

Comment on lines +74 to +87
def format_lines_block(self, block: LinesBlock) -> str:
formatted_parts = []
for index, line_block in enumerate(block.lines):
formatted_line = self.format_line_block(line_block)
formatted_parts.append(formatted_line)
is_bullet = re.match(r"^\s*[*-]", formatted_line)
is_last = index == len(block.lines) - 1
if not is_bullet and not is_last:
# in markdown, single line breaks are not rendered as new lines, except for bullet lists
# so we need to add a backslash to force a new line
formatted_parts.append("\\")
if not is_last:
formatted_parts.append("\n")
return "".join(formatted_parts)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify the line break handling logic.

The complex logic for handling line breaks and bullet lists appears correct for Markdown rendering, but this should be tested to ensure proper output formatting.


🏁 Script executed:

#!/bin/bash
# Description: Search for existing tests of the MarkdownFormatter to verify line break handling

# Look for markdown formatter tests
fd -t f -e py test | xargs rg -l "MarkdownFormatter|format_lines_block" -A 5 -B 5

Length of output: 83


🏁 Script executed:

#!/bin/bash
# Search for the MarkdownFormatter class definition and usage across all Python files
rg -n "class .*MarkdownFormatter" -g "*.py" || echo "No class definition found"
rg -n "MarkdownFormatter" -g "*.py" || echo "No MarkdownFormatter references found"
rg -n "format_lines_block" -g "*.py" || echo "No format_lines_block references found"

Length of output: 938


Add unit tests for MarkdownFormatter.format_lines_block

There are currently no tests covering elementary/messages/formats/markdown.py:74–87. We need to validate the backslash + newline logic for bullets vs. non-bullets to prevent regressions.

Please add tests that cover at least:

  • A single non-bullet line (no trailing backslash or extra newline)
  • Multiple consecutive non-bullet lines (each should end with \\\n except the last)
  • Bullet lines (* or -), ensuring they don’t get a backslash
  • Mixed blocks where bullets and non-bullets alternate
  • Edge cases (empty lines, whitespace-only lines)

File to test:

  • elementary/messages/formats/markdown.py, method format_lines_block
🤖 Prompt for AI Agents
In elementary/messages/formats/markdown.py around lines 74 to 87, add unit tests
for the format_lines_block method to cover its behavior thoroughly. Create tests
for a single non-bullet line ensuring no trailing backslash or extra newline,
multiple consecutive non-bullet lines verifying each ends with a backslash and
newline except the last, bullet lines starting with * or - confirming they do
not get a backslash, mixed blocks alternating bullets and non-bullets to check
correct formatting, and edge cases including empty and whitespace-only lines.
These tests should validate the backslash plus newline logic to prevent
regressions.

else:
raise ValueError(f"Unsupported message block type: {type(block)}")

def format_message_blocks(self, blocks: list[MessageBlock]) -> str:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Consider Python version compatibility for type annotations.

The list[MessageBlock] syntax requires Python 3.9+. Ensure this is consistent with the project's Python version requirements.


🏁 Script executed:

#!/bin/bash
# Description: Check Python version requirements and existing type annotation patterns

# Check for Python version requirements
fd -t f pyproject.toml setup.py setup.cfg requirements.txt | xargs cat 2>/dev/null | rg -i "python.*version|python_requires"

# Check existing type annotation patterns in the codebase
rg "List\[|list\[" --type py -A 1 -B 1 | head -20

Length of output: 1950


🏁 Script executed:

#!/bin/bash
set -euxo pipefail

echo "Searching for project metadata files..."
# Find potential Python version specifiers
fd -HI pyproject.toml setup.py Pipfile | sed -e 's/^/FOUND: /'

# Display contents if found
for f in $(fd -HI pyproject.toml setup.py Pipfile); do
  echo "=== $f ==="
  head -n50 "$f"
done

echo
echo "Checking GitHub Actions for python-version..."
rg -n "python-version" -t yaml .github/workflows || echo "No python-version keys found in workflows"

echo
echo "Checking for Travis CI configuration..."
if [ -f .travis.yml ]; then
  echo "=== .travis.yml ==="
  head -n30 .travis.yml
else
  echo "No .travis.yml"
fi

echo
echo "Checking for runtime.txt..."
if [ -f runtime.txt ]; then
  echo "=== runtime.txt ==="
  head -n10 runtime.txt
else
  echo "No runtime.txt"
fi

echo
echo "Looking for Dockerfiles with Python base images..."
rg -n "FROM python" -t docker || echo "No Dockerfiles using Python base image"

echo
echo "Searching for Poetry configuration..."
rg -R "tool.poetry" -t toml || echo "No Poetry metadata found"

Length of output: 324


Switch to typing.List for consistency and Python <3.9 compatibility

It looks like the rest of the codebase (and your tests) still use typing.List[...], whereas built-in generics (list[...]) only work on Python 3.9+. To avoid a breaking change and keep annotations uniform, update this signature to use List[MessageBlock].

• File elementary/messages/formats/markdown.py
– Add at top (if not already present):
python from typing import List
– Change
diff - def format_message_blocks(self, blocks: list[MessageBlock]) -> str: + def format_message_blocks(self, blocks: List[MessageBlock]) -> str:

🤖 Prompt for AI Agents
In elementary/messages/formats/markdown.py at line 135, the method signature
uses the built-in generic list[MessageBlock], which is incompatible with Python
versions earlier than 3.9 and inconsistent with the rest of the codebase. To fix
this, import List from typing at the top of the file if not already imported,
and change the method signature to use List[MessageBlock] instead of
list[MessageBlock].

@ofek1weiss ofek1weiss temporarily deployed to elementary_test_env July 1, 2025 13:12 — with GitHub Actions Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.pre-commit-config.yaml (1)

22-22: Regex works, but tighten & make cross-platform

^tests/unit/messages/formats/markdown/fixtures/ will do the job on POSIX paths, yet it breaks on Windows where pre-commit feeds back-slash-separated paths (e.g. tests\unit\...).
A tiny tweak makes the rule OS-agnostic and slightly easier to extend:

-        exclude: \.html$|^docs/|^tests/unit/messages/formats/markdown/fixtures/
+        exclude: \.html$|^(docs|tests[\\/]+unit[\\/]+messages[\\/]+formats[\\/]+markdown[\\/]+fixtures)/

[…] matches both / and \.
• Grouping the two directory roots under one ^() keeps the pattern short if more roots are added later.
Not critical, but saves surprises for Windows contributors.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a7c8f2c and 9da38c9.

📒 Files selected for processing (1)
  • .pre-commit-config.yaml (1 hunks)

@ofek1weiss ofek1weiss merged commit f62b3e3 into master Jul 1, 2025
5 checks passed
@ofek1weiss ofek1weiss deleted the ele-4704-text-and-md-formatters branch July 1, 2025 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants