diff --git a/scripts/rtl_ltr_linter.py b/scripts/rtl_ltr_linter.py
index 70e52a798f70c..34aa0005b998c 100644
--- a/scripts/rtl_ltr_linter.py
+++ b/scripts/rtl_ltr_linter.py
@@ -247,21 +247,16 @@ def lint_file(path, cfg):
# Skip lines that start a code block (```)
if CODE_FENCE_START.match(line): continue
- # Check for block-level directionality changes (e.g.,
)
- m_div_open = HTML_DIR_ATTR_RE.search(line)
-
- # If an opening
tag is found
- if m_div_open and 'markdown="1"' in line:
- new_div_ctx = m_div_open.group(2).lower() # Extract the new directionality context from the opening div tag
- block_context_stack.append(new_div_ctx) # Push the new directionality context onto the stack
- continue # Continue to the next line of the file
-
- # If a closing
tag is found and we are inside a div context
- # (i.e., the stack has more than just the base file_direction_ctx)
- if '
' in line and len(block_context_stack) > 1:
- block_context_stack.pop() # Pop the last directionality context from the stack
- continue # Continue to the next line of the file
-
+ # Corrected logic to handle all div tags on a single line
+ div_tags = re.findall(r"(]*dir=['\"](rtl|ltr)['\"][^>]*>|
)", line, re.IGNORECASE)
+ for tag_tuple in div_tags:
+ tag, direction = tag_tuple
+ if tag.startswith('' and len(block_context_stack) > 1:
+ block_context_stack.pop()
+
# Check if the line is a Markdown list item
list_item = LIST_ITEM_RE.match(line)
@@ -388,11 +383,17 @@ def lint_file(path, cfg):
issues.append(
f"::{sev['pure_ltr'].lower()} file={path},line={idx}::Pure LTR text '{s}' in {part} of RTL context may need trailing '' marker."
)
+
+ # Check for unclosed div tags at the end of the file
+ if len(block_context_stack) > 1:
+ issues.append(
+ f"::error file={path},line={len(lines)}::Found unclosed
tag. "
+ f"The final block context is '{block_context_stack[-1]}', not the file's base '{file_direction_ctx}'."
+ )
# Return the list of found issues
return issues
-
def get_changed_lines_for_file(filepath):
"""
Returns a set of line numbers (1-based) that were changed in the given file in the current PR.