Generates a list of VDOM children from an lxml node. Inserts inner text and/or tail text in between VDOM children, if necessary.
(
node: etree._Element, transforms: Iterable[_ModelTransform]
)
| 228 | |
| 229 | |
| 230 | def _generate_vdom_children( |
| 231 | node: etree._Element, transforms: Iterable[_ModelTransform] |
| 232 | ) -> list[VdomDict | str]: |
| 233 | """Generates a list of VDOM children from an lxml node. |
| 234 | |
| 235 | Inserts inner text and/or tail text in between VDOM children, if necessary. |
| 236 | """ |
| 237 | return ( # Get the inner text of the current node |
| 238 | [node.text] if node.text else [] |
| 239 | ) + list( |
| 240 | chain( |
| 241 | *( |
| 242 | # Recursively convert each child node to VDOM |
| 243 | [_etree_to_vdom(child, transforms)] |
| 244 | # Insert the tail text between each child node |
| 245 | + ([child.tail] if child.tail else []) |
| 246 | for child in node.iterchildren(None) |
| 247 | ) |
| 248 | ) |
| 249 | ) |
| 250 | |
| 251 | |
| 252 | def del_html_head_body_transform(vdom: VdomDict) -> VdomDict: |
no test coverage detected