Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.12.05 05:36
Оценка:
Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.

Пока рассматриваются варианты
  1. ASP.Net
  2. PHP
  3. CodeSmith

ASP.Net — Дешёво и сердито. Вроде как и шустро и кешируемо и язык выбирай — нехочу, но прикручивать его придётся с дикими хаками (если по 1.1 на сайте есть статья, то по 2.0 я ничего не нашёл).

PHP — Казалось бы те-же возможности, что и у ASP.Net, но скорость работы по меньше. Зато проще прикрутить.

CodeSmith — не работал с ним, но судя по тому что знаю он где-то посередине.

Посоветуйте что мне делать

Плюсами при выборе являются
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Генераторы текста
От: c-smile Канада http://terrainformatica.com
Дата: 10.12.05 05:45
Оценка:
Здравствуйте, adontz, Вы писали:

A>Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.


tiscript, http://www.terrainformatica.com/tiscript/

TIScript supports two execution modes — Script and Hypertext Preprocessor Script when script is included inside text:

...text... <% ... script ... %> ...text...
Re[2]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.12.05 06:30
Оценка:
Здравствуйте, c-smile, Вы писали:

Цена/Лицензия? У меня проект типа для души Хотя польза народному хозяйству и возможна, вряд ли я буду брать за это деньги.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Генераторы текста
От: c-smile Канада http://terrainformatica.com
Дата: 10.12.05 07:29
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


A>Цена/Лицензия? У меня проект типа для души Хотя польза народному хозяйству и возможна, вряд ли я буду брать за это деньги.


Бесплатно, там же написано. (где-то )
Re[4]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.12.05 09:14
Оценка: +2
Здравствуйте, c-smile, Вы писали:

CS>Бесплатно, там же написано. (где-то )


Нет ну возможны варианты... Например GPL тоже по идее бесплатно...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 10.12.05 10:03
Оценка:
Здравствуйте, c-smile, Вы писали:

Ссылки в документации на WHTM файлы, а в архиве HTM файлы. Хорошо бы исправить, а то пользуешься как быдто ссылок и нет.

Я так понял что интерфейс есть только си++? Мне вообще-то изз C# это всё надо использовать. К тому у меня структура может быть массив массивов. Я из документации не понял как такое в скрипт передать и программы. Но несовместимость с C# это для меня очень плохо.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Генераторы текста
От: Кирилл Осенков Украина
Дата: 10.12.05 10:28
Оценка:
Здравствуйте, adontz, Вы писали:

A>Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.

Посмотри Microsoft DSL Tools(Tools for Domain Specific Languages).

Это фактически — пакет (package) для студии, позволяющий генерировать произвольные визуальные дизайнеры по заданному тобой описанию языка.
Например, вводишь описание UML Class Diagram, нажимаешь "генерировать", и получаешь на выходе визуальный дизайнер по типу Visio. Причём полностью настраиваемый.

Так вот, причём здесь собственно генерация текста. Ты когда в своём сгенерённом дизайнере что-то рисуешь со стрелками и прямоугольниками, у тебя в памяти создаётся модель. И ты имеешь к ней полный доступ, например, можешь пробежаться по всем классам в твоём "класс-дизайнере", по всем ассоциациям, исходящими из данной фигуры и т.д.

Есть text templating engine (подобный ASP.NET), который поддерживает подмножество C# как скрипт и имеет полный доступ к нарисованной модели.
Так, можно написать простенький скрипт, который по твоему рисунку (например, диаграмме классов) генерит С# код, или VB код, или XML, или отчёт, да что угодно.

Так вот этот text templating engine и можно было бы использовать.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[5]: Генераторы текста
От: c-smile Канада http://terrainformatica.com
Дата: 10.12.05 21:32
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


A>Ссылки в документации на WHTM файлы, а в архиве HTM файлы. Хорошо бы исправить, а то пользуешься как быдто ссылок и нет.


Это просто снимок того что есть на сайте, а там wrapped html.
Сделай себе Save As страницы http://www.terrainformatica.com/tiscript/ в mht
и будет offline help.

A>Я так понял что интерфейс есть только си++? Мне вообще-то изз C# это всё надо использовать. К тому у меня структура может быть массив массивов. Я из документации не понял как такое в скрипт передать и программы. Но несовместимость с C# это для меня очень плохо.


Для C# или 1) нужно писать обертку (лучше на C++/CLI) или 2) использовать штатный JavaScript.NET

A>К тому у меня структура может быть массив массивов. Я из документации не понял как такое в скрипт передать и программы. Но несовместимость с C# это для меня очень плохо.



eval( "my_array_of_arrays = [ [0,1,2], [3,4,5], [6,7,8] ]" );

или

eval( "my_func([ [0,1,2], [3,4,5], [6,7,8] ])" );


Это самый простой и быстрый способ передачи сложных структур данных в любой скрипт движок.

Т.е. загрузка (инициализация) твоего скрипт runtime для выполнения "макроподстановок" это примерно следующее:


// environment preparation:
tis.load(parameters_stream,false);  // например все my_array_of_arrays = [ [0,1,2], [3,4,5], [6,7,8] ];
tis.load(code_stream,false); // библиотечные функции например

// setup streams:
tis.set_std_streams( 0 /*stdin*/, my_hypertext_output_stream /*stdout*/ , console /*stderr*/ ); 
   // в stdout (scripting stdout) мы будем ловить то что получилось

// поехали!
tis.load(hypertext_input_stream); // собственно Hypertext MacroProcessing 
// hypertext_input_stream - это твоя имплементация - из памяти, из файла, из сокета, из БД - откуда хошь.


По моему несложно.
Re[5]: Генераторы текста
От: c-smile Канада http://terrainformatica.com
Дата: 10.12.05 22:10
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, c-smile, Вы писали:


CS>>Бесплатно, там же написано. (где-то )


A>Нет ну возможны варианты... Например GPL тоже по идее бесплатно...


Просто free. Надо бы мне что такое в виде лицензии изобразить.
Re[6]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 11.12.05 01:42
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Просто free. Надо бы мне что такое в виде лицензии изобразить.


BSD ?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 11.12.05 01:53
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Для C# или 1) нужно писать обертку (лучше на C++/CLI)


А параметры передавать? Двойной интероп получается.

CS>2) использовать штатный JavaScript.NET


Он как препроцессор (<% %>) не работает.

CS>
CS>eval( "my_array_of_arrays = [ [0,1,2], [3,4,5], [6,7,8] ]" );
CS>

CS>или
CS>
CS>eval( "my_func([ [0,1,2], [3,4,5], [6,7,8] ])" );
CS>

CS>Это самый простой и быстрый способ передачи сложных структур данных в любой скрипт движок.

А вот у ASP.Net таких проблем нету. Можно из скрипта (это уже собственно и не скрипт никакой) прямо к хостящей программе обращатся. Но зато подключить его ой какая головная боль...

CS>Т.е. загрузка (инициализация) твоего скрипт runtime для выполнения "макроподстановок" это примерно следующее:

...

CS>По моему несложно.

Да, но из C# использование выглядит как левой рукой за правое ухо.

Но на заметку взял , спасибо в любом случае.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Генераторы текста
От: Nagir  
Дата: 12.12.05 09:43
Оценка:
Здравствуйте, adontz, Вы писали:

A>Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.


Если я правильно понял, то возможно проще будет парсер свой написать...
Например используя www.antlr.org — там есть много готовых шаблонов.
Все будет под твоим контролем и бесплатно.
Re: Генераторы текста
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 14.12.05 10:03
Оценка:
Здравствуйте, adontz, Вы писали:

A>Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.


A>ASP.Net — Дешёво и сердито. Вроде как и шустро и кешируемо и язык выбирай — нехочу, но прикручивать его придётся с дикими хаками (если по 1.1 на сайте есть статья, то по 2.0 я ничего не нашёл).


A>PHP — Казалось бы те-же возможности, что и у ASP.Net, но скорость работы по меньше. Зато проще прикрутить.


Точно поменьше? Даже если использовать какой-нибудь кеширующий движок аля Smarty?
-- Главное про деструктор копирования не забыть --
Re[2]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.12.05 10:18
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Точно поменьше? Даже если использовать какой-нибудь кеширующий движок аля Smarty?


Кеширование не намечатся. Вернее не за счёт движка.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Генераторы текста
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.05 20:28
Оценка:
Здравствуйте, adontz, Вы писали:

A>Итак. стоит задача по шаблону получить некоторый текст. Шаблон должен быть PHP-like, то бишь со скриптами.


A>Пока рассматриваются варианты

A>

    A>
  1. ASP.Net
    A>
  2. PHP
    A>
  3. CodeSmith
    A>

XSLT — в некоторых случаях (особенно если входные данные иерархичны) довольно удобен несмотря на громоздкий синтаксис. Еще один плюс — при наличии XSD для входных данных качественный контроль синтаксической структуры этих самых данных.

LInQ — поверх можно реализовать довольно интересный движек.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[2]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 18.12.05 21:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>XSLT — в некоторых случаях (особенно если входные данные иерархичны) довольно удобен несмотря на громоздкий синтаксис. Еще один плюс — при наличии XSD для входных данных качественный контроль синтаксической структуры этих самых данных.


Не, мне нужен именно язык. простой и понятный. Лучше старый. Чтобы переменные были, if, while и всё такое. Чтобы создание шаблона не превращалось в искусство.

AVK>LInQ — поверх можно реализовать довольно интересный движек.


google выдал кучу ссылок по слову LInQ. Не поделишься единственно правильной?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Генераторы текста
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 22:39
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, AndrewVK, Вы писали:


AVK>>XSLT — в некоторых случаях (особенно если входные данные иерархичны) довольно удобен несмотря на громоздкий синтаксис. Еще один плюс — при наличии XSD для входных данных качественный контроль синтаксической структуры этих самых данных.


A>Не, мне нужен именно язык. простой и понятный. Лучше старый. Чтобы переменные были, if, while и всё такое. Чтобы создание шаблона не превращалось в искусство.


AVK>>LInQ — поверх можно реализовать довольно интересный движек.


A>google выдал кучу ссылок по слову LInQ. Не поделишься единственно правильной?


LINQ

Только я не понимаю как оно поможет в данном случае.
Re[4]: Генераторы текста
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.12.05 00:00
Оценка: :)
Здравствуйте, c-smile, Вы писали:

CS>LINQ


CS>Только я не понимаю как оно поможет в данном случае.


Ой да. Даже презентацию видел — помню.

Ну теперь нас двое, потому что я тоже не понимаю
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Генераторы текста
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.12.05 08:57
Оценка:
Здравствуйте, adontz, Вы писали:

A>Не, мне нужен именно язык. простой и понятный. Лучше старый. Чтобы переменные были, if, while и всё такое.


В XSLT это все есть. + прекрасная интеграция с .NET и возможность создания собственных функций либо внедрения кусков на шарпе или JScript прямо в шаблоне.

AVK>>LInQ — поверх можно реализовать довольно интересный движек.


A>google выдал кучу ссылок по слову LInQ. Не поделишься единственно правильной?


Без проблем. http://msdn.microsoft.com/netframework/future/linq/. Чтобы понять, как из этого можно сделать язык шаблонов см. XLinq. Сразу предупреждаю — придется ручками доделывать.
... << RSDN@Home 1.2.0 alpha rev. 624>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.