Skip to content

Commit 73782e8

Browse files
committed
📝 docs(api): add public docstrings
1 parent 08bf204 commit 73782e8

4 files changed

Lines changed: 30 additions & 0 deletions

File tree

sdiff/__init__.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44

55

66
def diff(md1, md2, renderer=TextRenderer(), parser_cls: type[MdParser] = MdParser):
7+
"""Compare two Markdown strings by structure and return rendered outputs + errors.
8+
9+
Args:
10+
md1: Left Markdown string.
11+
md2: Right Markdown string.
12+
renderer: Renderer instance used to format the output (TextRenderer by default).
13+
parser_cls: Parser class to use (MdParser by default).
14+
15+
Returns:
16+
(rendered_left, rendered_right, errors)
17+
"""
718
tree1 = parse(md1, parser_cls)
819
tree2 = parse(md2, parser_cls)
920

sdiff/compare.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ def _diff(tree1, tree2, include_symbols=None, exclude_symbols=None):
4444

4545

4646
def diff_links(tree1, tree2):
47+
"""Diff only link-relevant structure (paragraphs/headers/lists/links)."""
4748
return _diff(tree1, tree2, include_symbols=['p', 'h', 'l', 'a'])
4849

4950

5051
def diff_struct(tree1, tree2):
52+
"""Diff overall structure, ignoring link and image content."""
5153
return _diff(tree1, tree2, exclude_symbols=['a', 'i'])

sdiff/parser.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323

2424
class MdParser:
25+
"""Markdown parser that builds a lightweight structural tree.
26+
27+
Uses Mistune AST tokens to build sdiff Node objects.
28+
"""
2529
list_rules = None
2630

2731
@classmethod
@@ -33,6 +37,15 @@ def __init__(self):
3337
self._reference_definitions = {}
3438

3539
def parse(self, text, rules=None):
40+
"""Parse Markdown text into a list of Node objects.
41+
42+
Args:
43+
text: Markdown string.
44+
rules: Optional rules argument kept for compatibility.
45+
46+
Returns:
47+
list[Node]
48+
"""
3649
tokens = self._markdown(text)
3750
return self._convert_block_tokens(tokens)
3851

@@ -253,6 +266,7 @@ class ZendeskHelpMdParser(MdParser):
253266
_TABS_PATTERN = re.compile(r'(?s)<tabs>(?P<content>.*?)</tabs>')
254267

255268
def parse(self, text, rules=None):
269+
"""Parse Markdown with Zendesk tag support into a list of Node objects."""
256270
nodes = self._parse_nodes(text)
257271
return nodes
258272

@@ -425,6 +439,7 @@ def _remove_ltr_rtl_marks(text):
425439

426440

427441
def parse(text, parser_cls: type[MdParser] = MdParser):
442+
"""Parse Markdown into a Root node using the given parser class."""
428443
text = _remove_spaces_from_empty_lines(text)
429444
text = _remove_ltr_rtl_marks(text)
430445
parser = parser_cls()

sdiff/renderer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class HtmlRenderer:
5+
"""Render a tree to HTML, marking inserts/deletes with ins/del tags."""
56

67
def render(self, tree: Root):
78
result = tree.original(self)
@@ -16,6 +17,7 @@ def render_node(self, node, text):
1617

1718

1819
class TextRenderer:
20+
"""Render a tree back to plain text/Markdown-like output."""
1921

2022
def render(self, tree: Root):
2123
result = tree.original(self)

0 commit comments

Comments
 (0)