Normal bir ifade (regex) filtresi kullanarak metni değiştirecek bir Jekyll filtresi var mı?Jekyll içerikte normal ifadeler için filtre var mı?
"Yerleşik" filtre replace
'un basit bir dizge değiştirme işlemi yaptığına inanıyorum.
Normal bir ifade (regex) filtresi kullanarak metni değiştirecek bir Jekyll filtresi var mı?Jekyll içerikte normal ifadeler için filtre var mı?
"Yerleşik" filtre replace
'un basit bir dizge değiştirme işlemi yaptığına inanıyorum.
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)
(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!
Bu benim için çalıştı. Teşekkürler! – railgun
'foo 'bir normal ifadedir. – TWiStErRob
Harika bir örnek, tam olarak neye ihtiyacım vardı. – Aaron
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. –
@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