Нужно
вместо {$some_name} подставить некоторое значение (i.e. MyDataInfo.someName)
вместо {$some_description} подставить MyDataInfo.someDescription
вместо {$some_extra_info} подставить содержимого некоторого текстового файла (впринципе, чего угодно...)
Есть ли какие-либо библиотеки, позволяющие работать с шаблонами?
Например, на PERL я это делаю его встроенными синтаксическими конструкциями, на PHP при помощи различных Smarty, HTML_Template_IT и прочее Как и чем это можно сделать на C#
Здравствуйте, borisd, Вы писали:
B>А как насчет, Hashtable(или другой dictionary) + String.Replace? B>Тем более что списков и условий у вас нет.
Это будет решение "на коленке",хотелось бы уже проверенное и отлаженное средство, с небольшим, но гибким "языком" макро-подстановок, вложенными блоками и прочее.
начинать писать самому? — естественно, однако, в любом случае, прийдётся потратить много времени на оптимизацию и прочее...
я просто удивлён, что для .NET нет чего-то подобного
...имхо, уж простой парсинг текстовых файлов по шаблону, можно было бы добавить (более универсальной среда бы оказалась... не только для Кристал-Репортовских решений)
Re[2]: Шаблоны: парсинг текстового файла
От:
Аноним
Дата:
26.10.06 09:55
Оценка:
Здравствуйте, Аноним, Вы писали:
А>...имхо, уж простой парсинг текстовых файлов по шаблону, можно было бы добавить (более универсальной среда бы оказалась... не только для Кристал-Репортовских решений)
RegEx.Replace. Там есть делегат с помощью которого ты можешь подставлять свои значения.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Шаблоны: парсинг текстового файла
От:
Аноним
Дата:
26.10.06 12:41
Оценка:
Здравствуйте, GlebZ, Вы писали:
GZ>RegEx.Replace. Там есть делегат с помощью которого ты можешь подставлять свои значения.
мда... "очень удобно" по сравнению с обычными Шаблонизаторами...
а ксли этих шаблонов у меня ЦЕЛАЯ куча, придставляете, в какую кашу преврадится проект?
Хардкодинг зависимостей, никакого принципа MVC (во вменяемом смысле этого принципа) и прочее...
Re[3]: Шаблоны: парсинг текстового файла
От:
Аноним
Дата:
26.10.06 12:55
Оценка:
Здравствуйте, Аноним, Вы писали:
А>
Например, на PERL я это делаю его встроенными синтаксическими конструкциями, на PHP при помощи различных Smarty, HTML_Template_IT и прочее
А>зачем Вам понадобился C# ???
...это не мне, это новая паранойя шефа, каким способом предлагаете ему это объяснить?
Re[4]: Шаблоны: парсинг текстового файла
От:
Аноним
Дата:
26.10.06 13:03
Оценка:
Здравствуйте, Аноним, Вы писали:
А>...это не мне, это новая паранойя шефа, каким способом предлагаете ему это объяснить?
дать ссылку на это обсуждение
зы: а вообще-то, если хорошо владеете одной технологией, то воспользуйтесь опытом тех, кто уже не однократно обжёгся на PR-компаниях микрософт — не ведитесь!
Золотое правило: рулит то, в чём разбираешься лучше
Здравствуйте, <Аноним>, Вы писали:
GZ>>RegEx.Replace. Там есть делегат с помощью которого ты можешь подставлять свои значения. А>мда... "очень удобно" по сравнению с обычными Шаблонизаторами... А>а ксли этих шаблонов у меня ЦЕЛАЯ куча, придставляете, в какую кашу преврадится проект? А>Хардкодинг зависимостей, никакого принципа MVC (во вменяемом смысле этого принципа) и прочее...
По моему вас лень обуяла. Судя тому что вы написали в исходном сообщении, делается все очень просто.
public class Shablons
{
public delegate string ReplaceValue();
private static Regex regex = new Regex(@"\{$(?<tag>\w*)\}",/*нужное сам поставишь*/);
private Dictionary<string, ReplaceValue> _shablons=new Dictionary<string,ReplaceValue>();
public string DoWork(string str)
{
return regex.Replace(str, delegate(Match match)
{
if (!_shablons.ContainsKey(match.Value)) return match.Value;
return _shablons[match.Value]();
});
}
public void RegisterShablon(string key, ReplaceValue value)
{
_shablons.Add(key, value);
}
}
Shablons sha = new Shablons();
sha.RegisterShablon("{$shablon1}", delegate(){return MyData.Proc1();});
sha.RegisterShablon("{$shablon2}", delegate(){return MyData.Proc2();});
sha.RegisterShablon("{$shablon3}", delegate(){return MyData.Proc3();});
sha.RegisterShablon("{$shablon4}", delegate(){return MyData.Proc4();});
Console.WriteLine(sha.DoWork(source));
Штук 20 строк кода в функциональном стиле и золотой ключик у нас в кармане. После исправления всех ошибок(писал сходу и не проверял) можно юзать. И времени ушло меньше чем на поиски.