2011-06-16 119 views
0

我使用这个脚本,以便将它们转换成解析HTML标签<%= IMAGE_TAG ...%>转换IMG SRC标签IMAGE_TAG

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

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

我得到的正则表达式开始它只是还没有到那里 - 我需要一些东西来捕捉所有的属性...即类,编号 以下是我到目前为止。

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 
+2

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2011-06-16 23:33:59

+0

不能使用nokogiri来解析.html.erb文件。刚刚尝试过。 – maletor 2011-06-16 23:37:11

+1

使用http://hpricot.com/这就是HAML人员用来将ERB转换为HAML的用途。 – 2011-06-16 23:42:15

回答

1

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

var src = new Array(); 

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

我还没有试过这个,所以它可能不是没有bug的。

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