LINUX.ORG.RU
 
VeGeek

[ruby] erb


0

1

есть задание - нужно строчку вида
He<% 2.times{ %>l<% } %>o, <%output.Write(\"World\")%>
преобразовать в Hello, World

то есть это слегка напоминает ембеддед руби.
но фишка в том, что есть объект output с методом Write, который выводит то, что ему скормили.
если бы нужно было писать не <%output.Write(\"World\")%>, а <%=output.Write(\"World\")%>, то я бы написал что-нибудь такое http://rn0.ru/show/DfPTZ5iKIsrNhjoCoVGL/

можно, в принципе, замутить в начале метода что-нибудь такое
string.gsub!(/output.Write\((.*)\)/,'%><%=output.Write(\1)%><%')
string.gsub!("<%%>","")
c поправкой на пробелы, но есть ли тут какое-нибудь красивое решение?


[#]  
belous_k_a
>>-----Цитата---->>

есть ли тут какое-нибудь красивое решение?

<<-----Цитата----<<

Мсье, вы пытаетесь написать шаблонный движок, не обратится ли вам к исходникам готовой реализации для получения столь вожделенных знаний?

()