danoan.correct_markdown.core.string_view module
- class danoan.correct_markdown.core.string_view.StringView(segments: Dict[str, List[str]])[source]
Bases:
objectData structure that partitionates a string in several segments that can be edited separately and joined altogether.
Segments are grouped into views and represent a semantic unit in the string. An html document might have the markuo view containing the tag elements and the text view containing the plain-text content of the document.
StringView manages a list of ViewSegmentItem (index). Each ViewSegmentItem describes a segment of one of the managed views.
- Below, an example of the index:
- [
ViewSegmentItem(view_name=’text’, master_index=0, segment_index=0) ViewSegmentItem(view_name=’markup’, master_index=1, segment_index=0) ViewSegmentItem(view_name=’text’, master_index=2, segment_index=0) ViewSegmentItem(view_name=’markup’, master_index=3, segment_index=3) ViewSegmentItem(view_name=’text’, master_index=4, segment_index=29) ViewSegmentItem(view_name=’markup’, master_index=5, segment_index=3) ViewSegmentItem(view_name=’text’, master_index=6, segment_index=29)
]
The index allows us to update both markup and text views independently. It is guaranteed that when “get_content” is called, both updated views will be correctly aligned.
>>> segments = { ... "text": ["","October journal","\n\n","October first","\n\n", "Today it rained."], ... "markup": ["<h1>","</h1>","<h2>","</h2>","",""] ... } >>> SV = StringView(segments)
>>> SV["text"] 'October journal\n\nOctober first\n\nToday it rained.'
>>> SV["markup"] '<h1></h1><h2></h2>'
>>> SV.get_content() '<h1>October journal</h1>\n\n<h2>October first</h2>\n\nToday it rained.'
>>> s = SV["text"].find("October first") >>> SV["text"] = s, "Monday, October first\n\nToday was sunny!" >>> SV["text"] 'October journal\n\nMonday, October first\n\nToday was sunny!'
>>> SV.get_content() '<h1>October journal</h1>\n\n<h2>Monday, October first</h2>\n\nToday was sunny!'
- Parameters:
segments (Dict[str, List[str]])
- class ViewSegmentItem(view_name: Any, master_index: int, segment_index: int)[source]
Bases:
object- Parameters:
view_name (Any)
master_index (int)
segment_index (int)
- master_index: int
- segment_index: int
- view_name: Any