Commit 78f8aec
authored
Fix block content leaking out of marker-line nested-list items (#251)
A nested list opened on its parent item's marker line (`- - A`) was
treated as line-scoped: the inner list was materialized from an isolated
single-line slice, so its item closed immediately. A block placed in that
item then leaked out to the outer item, and a following same-indent
marker fragmented the list into two.
The reference djot.js 0.3.2 keeps the inner item open: it absorbs blocks
indented to its content column and continues the list across following
same-indent markers. djot-php now matches that.
When an item's content itself begins with a list marker, collect the
whole nested region (lines indented past the inner marker column, plus
markers at it, across blank lines) into the item's lines and parse them
as blocks. The existing recursive list parser then builds a persistent
inner list - reusing the nested-list handling that already works for a
sublist appearing on a following line, rather than adding a parallel
path. A non-marker line at the inner marker column, or anything less
indented, stays outer-item content.
Cases now matching the reference:
- `- - A\n\n block for A\n - B` -> inner item A keeps the block; B
stays in the same inner list.
- `- - A\n\n block under A` -> block stays inside inner item A (no
leak to the outer item).
- `- - A\n - B\n - C` -> single tight inner list [A, B, C]
(unchanged).
The paragraph-interrupt rule and bare-marker rejection are untouched.
carve-php inherits this parser and was affected by the same bug.1 parent 58a181a commit 78f8aec
2 files changed
Lines changed: 166 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2052 | 2052 | | |
2053 | 2053 | | |
2054 | 2054 | | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
| 2061 | + | |
| 2062 | + | |
| 2063 | + | |
| 2064 | + | |
| 2065 | + | |
| 2066 | + | |
2055 | 2067 | | |
2056 | 2068 | | |
2057 | 2069 | | |
| |||
2141 | 2153 | | |
2142 | 2154 | | |
2143 | 2155 | | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
2144 | 2223 | | |
2145 | 2224 | | |
2146 | 2225 | | |
| |||
2158 | 2237 | | |
2159 | 2238 | | |
2160 | 2239 | | |
2161 | | - | |
2162 | | - | |
| 2240 | + | |
| 2241 | + | |
2163 | 2242 | | |
2164 | 2243 | | |
2165 | 2244 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
772 | 772 | | |
773 | 773 | | |
774 | 774 | | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
775 | 860 | | |
0 commit comments