如何使用Nokogiri插入HTML块与适当的缩进?



我有一个HTML块,我想在Nokogiri中插入一个HTML文档。问题是当在HTML的任何地方插入块时,它不采用插入位置的缩进。下面是一个例子:

HTML文档(例如缩短):

<div>
<div id="insertHere">
</div>
</div>

插入:

<table>
<tbody>
<tr>
<td>Hi</td>
</tr>
</tbody>
</table>

插入后结果。这是因为它没有考虑缩进。我希望能够考虑到插入时的缩进并在插入的每行的左侧填充缩进:

<div>
<table>
<tbody>
<tr>
<td>Hi</td>
</tr>
</tbody>
</table>
</div>

它是使用Nokogiri的node.replace('<table>....</table>')插入的。

我想让它看起来像:

<div>
<table>
<tbody>
<tr>
<td>Hi</td>
</tr>
</tbody>
</table>
</div>

是否有一种方法可以让我插入或替换它的块左侧缩进?

编辑:如果不使用Nokogiri,这是另一种方法吗?也许在每个元素上设置一个唯一的ID,就像在react元素上设置data-react-id一样,然后一旦我有一个地方需要插入一个元素,我可以使用正则表达式找到它,并将空白缩进匹配到左边?对诺科吉里以外的其他途径开放。试着集思广益。

我知道野尻不能"漂亮的印刷";但是有没有办法把空格移到左边呢?或空白"在当前元素之前和换行"之后来计算缩进,然后我可以手动填充插入的内容。也许在nokogiri中有一种方法可以获得父节点,然后如何使用父节点的内容来获得当前节点左侧的空白。

原来Nokogiri真的不像@Casper提到的那样是用来打印漂亮的。相反,我只是通过一个html漂亮的打印机运行它,我使用https://github.com/threedaymonk/htmlbeautifier gem。

最新更新