2014-09-12 12 views

cevap

11

Etkinlikte (daha iyi) bir çözüm bulunmadığı takdirde, hile yapacağı çok basit bir eklentiyi atarım - bu dosyayı _plugins/ klasörüne regex_filter.rb dosyası olarak bırakın - regex'i dize, ilkine ve örneğin ikinci arg değiştirme ({{ page.url | replace_regex: '/$', '' }} olarak: Jekyll en documentation üzerinde belirtildiği gibi

module Jekyll 
    module RegexFilter 
    def replace_regex(input, reg_str, repl_str) 
     re = Regexp.new reg_str 

     # This will be returned 
     input.gsub re, repl_str 
    end 
    end 
end 

Liquid::Template.register_filter(Jekyll::RegexFilter) 
+1

Harika bir örnek, tam olarak neye ihtiyacım vardı. – Aaron

+0

HTML'yi değiştirmek için bunu kullanıyorsanız, 're = Regexp.new reg_str' değerini "re = Regexp.new reg_str, 4" olarak değiştirdiğinizden ve birden çok satıra eşleştiğinden emin olun. –

+1

@CooperMaruyama, aynı şekilde adlandırılmış bir sabit varsa sihirli sabitleri kullanmayın: ['Regexp :: MULTILINE'] (http://ruby-doc.org/core-2.2.0/Regexp.html#constants- liste) == ['4'] (http://ruby-doc.org/core-2.2.0/Regexp.html#options-method) – TWiStErRob

-3

(ama çok kolay kaçırmak):

Jekyll Liquid kullanır Şablonları işlemek için şablon oluşturma . Tüm standart Sıvı etiketler ve filtreler desteklenmektedir. (in Liquid's documentation belirtildiği gibi)

Bu nedenle,

replace 

ör kullanabilir

replace - replace each occurrence e.g. {{ 'foofoo' | replace:'foo','bar' }} #=> 'barbar'   

Eklenti eklemeniz gerekmeden!

Şerefe!

+0

Bu benim için çalıştı. Teşekkürler! – railgun

+17

'foo 'bir normal ifadedir. – TWiStErRob