Block List
All the lines in the region or the box are processed one by one and added to a list or they are skipped. When the distance between two lines is greater than the Line Height property, then it marks the end of a list. The distance between two lines is defined as the distance between the top Y position of the lines. The Line Height property is used to split the entire text into blocks that resemble to lists or get skipped.
For advancing to the next line Y position in the text, the getNextLineInRegion and getLineBeforeCursorInRegion operators are used. A List element contains a set of ListItem elements and starts with the first ListItem element encountered while processing.
List items can span multiple lines with the exception that if a line contains the string . . . it is processed as a single line item. A matched List Item element is split into a Label element and a ListItemBody element.
Condition for matching new list items or the start of a ListItem element:
- Line starting with a bullet • that corresponds to the Unicode character U+2022 (Regex = \x{2022}.*).
- The bullet is matched as a Label element and the rest of the line is matched as a ListItemBody element.
- Line starts with one or two digits continuing with a period and a space (Regex = ^\d{1,2}\. .*).
- The start digits and period are matched as a Label element and the rest of the line is matched as a ListItemBody element.
- Line starts with one or two digits then followed by a ) and a space (Regex = ^\d{1,2}\) .*)
- The start digits and ) are matched as a Label element and the rest of the line is matched as a ListItemBody element.
A List Item element ends when at least one of the following is true:
- The new line falls outside of the rule bounding box.
- The end of a list is encountered.
- The start of a new List Item element is encountered.