2011-06-16 214 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解析器可以爲你簡化這個任務。我不認爲使用正則表達式是最好的選擇。