我正在使用Ruby为我的团队编写命令行开发实用程序。
我正在尝试检查文件系统上的HTML文档,并在<script>
</head>
标记
类似的东西:
<html>
<head>
<script src="...foo.js"></script>
<script src="...bar.js"></script>
<!-- I WANT TO INSERT NEW TEXT HERE -->
</head>
<body>
</body>
</html>
我在考虑从IO.readlines(file_name)
开始,将每一行与正则表达式进行比较,然后在</head>
之前插入新标记。然后,将整个数组合并回该文件的新版本。
这听起来过于复杂。谁有更好的方法?
对于奖励积分,拥有合适的缩进水平会很棒。
答案 0 :(得分:5)
HTML和正则表达式(通常)并不是一个好主意。
如果您想以干净的方式使用Ruby解析和修改HTML,我推荐使用Nokogiri。
答案 1 :(得分:1)
在你的特殊情况下,这不是一个坏主意。如果文件中有特殊行,则可以轻松找到它,从行的开头提取必要数量的缩进,并用另一个内容替换整行。但是不要在记忆中这样做。您可以在读取源文件时将其写入临时文件,而不需要占用RAM。
如果HTML评论只是一个示例,并且该行不存在,您仍然可以替换&lt; / head&gt;的第一次出现。与&lt; script&gt; ...&lt; / script&gt;&lt; / head&gt;使用正则表达式,不需要解析HTML。 (但这只适用于你的特殊情况。)坦率地说,你也不需要Ruby,因为sed命令非常适合这项工作。
或者,如果您进行其他检查,例如脚本已经存在,那么 使用任何HTML解析器lib / gem。我建议你使用hpricot,如果你喜欢jQuery的概念,因为hpricot有一个非常类似的方法。
HTH