将img src标签转换为image_tag

时间:2011-06-16 23:28:34

标签: html ruby-on-rails ruby regex ruby-on-rails-3

我正在使用此脚本解析HTML标记,以便将它们转换为<%= image_tag ...%>

我的正则表达式和测试用例在这里:http://rubular.com/r/sBPAaWSdGQ

我想捕获src =“captureme.jpg”以及所有其他属性,以便我可以移植它们。

我有正则表达式开始它还没有完全 - 我需要一些东西来捕获所有属性...即class,id 以下是我到目前为止的情况。

class ToImageTag

  def self.convert
    Dir.glob("app/views/**/*").each do |filename|
      next unless filename =~ /\.html\.erb$/
      file = File.new(filename, "rw")

      file.each_line do |line|
        source = /(<\s*img\s*.*src=(.*?)(>|\/>))/.match(line)
        source = src[1].split.first

        image_tag = "<%= image_tag(\"#{source}\")"

        line.gsub!(src[0], image_tag)
      end

      file.close
    end

  rescue => err
    puts "Exception: #{err}"
  end

end

1 个答案:

答案 0 :(得分:1)

您使用的是javascript吗?如果是这样,你可以使用jQuery来做你想做的事。

var src = new Array();

$('img').each(function(index, element) {
    src[index] = $(element).attr('src');
});

我没有试过这个,所以它可能没有bug。

如果您不使用javascript,那么有很多DOM解析器可以为您简化此任务。我不认为使用正则表达式是最好的选择。