The way we have row parsing implemented currently at GitHub is as follows:
- Parse inlines in the input line into a transient paragraph container.
- Split the paragraph into table cells whenever we encounter a pipe (
|
) in a top-level text node.
I like to think that this doesn’t actually break the block/inline priority order — because we post-process inlines only, the table cells (blocks) are essentially one level up from inlines, and there is no block parsed within an inline. It’s a bit of a semantic argument, admittedly. Alternatively, view table cells as inlines within a table row block, and then it’s fairly okay.