6b. リストの状態遷移(PDF)

マークダウンのUL
最初の状態 遷移のきっかけ
NOTHING
^[-*+]\s
IN_UL
^[-*+]\s
空行
else
IN_UL_P
^[ ]{4}
^[-*+]\s
空行
else
アクション
<ul>, $item = $matches[1];
<li>$item</li>, $item = $matches[1];
状態の遷移
IN_UL
IN_UL
IN_UL_P
$item = $item . $line;
IN_UL
<li>→<li><p>, </li>→</p></li>, <p>$matches[1]</p> IN_UL_P
</li>, <li><p>$matches[1]</p>
IN_UL_P
</li></ul>
NOTHING
</li></ul><p>$line</p>
NOTHING
WikiのUL
最初の状態 遷移のきっかけ アクション
NOTHING
^[-*+] ?
<ul><li>$matches[1];
^(\d+\.) ?
<ol><li>$matches[1];
IN_UL
^[-*+]{2} ?
<ul><li>$matches[1];
^[-*+] ?
</li><li>$matches[1];
^(\d+\.){2} ?
<ol><li>$matches[2];
^(\d+\.) ?
</li></ul><ol><li>$matches[2];
空行
</li></ul>
IN_OL
^[-*+]{2} ?
<ul><li>$matches[1];
^[-*+] ?
</li></ol><ul><li>$matches[1];
^(\d+\.){2} ?
<ol><li>$matches[2];
^(\d+\.) ?
</li><li>$matches[2];
空行
</li></ol>
IN_ULUL
^[-*+]{2} ?
</li><li>$matches[1];
^[-*+] ?
</li></ul><li>$matches[1];
^(\d+\.){2} ?
</li></ul><ol><li>$matches[2];
^(\d+\.) ?
</li></ul></li></ul><ol><li>$matches[2];
空行
</li></ul></li></ul>
IN_OLOL
^[-*+]{2} ?
<ul><li>$matches[1];
^[-*+] ?
</li></ul><li>$matches[1];
^(\d+\.){2} ?
</li><li>$matches[2];
^(\d+\.) ?
</l><li>$matches[2];
空行
</li></ol></li></ol>
IN_ULOL
^[-*+]{2} ?
</li></ol><ul><li>$matches[1];
^[-*+] ?
</li></ol><li>$matches[1];
^(\d+\.){2} ?
</li><li>$matches[2];
^(\d+\.) ?
</li></ol></li></ul><ol><li>$matches[2];
空行
</li></ol></li></ul>
IN_OLUL
^[-*+]{2} ?
</li><li>$matches[1];
^[-*+] ?
</li></ul></li></ol><ul><li>$matches[1];
^(\d+\.){2} ?
</li></ul><ol><li>$matches[2];
^(\d+\.) ?
</li></ul></li></li><li>$matches[2];
空行
</li></ol></li></ul>
状態の遷移
IN_UL
IN_OL
IN_ULUL
IN_UL
IN_ULOL
IN_OL
NOTHING
IN_OLUL
IN_OL
IN_OLOL
IN_OL
NOTHING
IN_ULUL
IN_UL
IN_ULOL
IN_OL
NOTHING
IN_ULUL
IN_UL
IN_ULOL
IN_OL
NOTHING
IN_ULUL
IN_UL
IN_ULOL
IN_OL
NOTHING
IN_ULUL
IN_UL
IN_ULOL
IN_OL
NOTHING