/** * 指定された要素の開始タグの後ろに改行を付けるかどうかを決定します. * 条件は以下の通りです. * * - もしも指定された要素に子要素がない場合は改行なし * - 子要素を一つだけ含み, それが整形済テキストの場合は改行あり * - 子要素を一つだけ含み, それがコンテナ要素の場合, 再帰的にチェックした結果 * - 子要素を一つだけ含み, 上記以外のノードの場合は改行なし * - 子要素が二つ以上の場合は改行あり * * @param ContainerElement $node * @return bool */ public function breaks(ContainerElement $node) { $size = $node->size(); switch ($size) { case 0: return false; case 1: $childNodes = $node->getChildNodes(); $child = $childNodes[0]; if ($child instanceof Code) { return true; } if ($child instanceof ContainerElement) { return $this->breaks($child); } return false; default: return true; } }