← kolan.mobi
хоумпэйдж |
Главная |
← ksoftware.ya.ru блог |
Разработчик: Кирилл Бережной
Когда начинаешь новый проект нужно создать для него папку, а в ней еще папки для документов, картинок и другой всячины. Делать это каждый раз в ручную хлопотно, да и можно что-нибудь забыть. ProjectStarter позволяет создать нужную иерархию в один присест.
Загрузить ProjectStarter (473 кб)
Задача: Сделать систему, создающую проект по шаблону. Шаблон должен быть легко редактируемым, не избыточным.
Решение: Шаблон (самая обычная папка) - это и есть заготовка проекта. В папке-шаблоне могут быть другие папки и файлы. Такой шаблон элементарно редактировать, дополнять, изменять. Да и программа делается за пять минут. Все что надо - скопировать шаблон куда нужно - вот и все.
Остаётся одна проблема - избыточность.
Например у нас есть два шаблона
Project DCU Binary Source 1.pas
Project Source Simple.pas
Теперь мы хотим добавить папку Forms. Нам придется добавить её и во все остальные, а если их 20? Проблема в избыточности.
Решение уже давно придумано - наследование. Шаблоны надо уметь наследовать. При наличии возможности наследовать шаблоны можно построить гибкую иерархию шаблонов по образу и подобию VCL.
Синтаксис имен папок, например такой:
<Имя предка>.<Имя шаблона>
Пример:
ProjectTemplate.Separate DCU Binary Forms Source Separate.MVC Source SystemController.pas
Если, теперь, использовать шаблон MVC, то получим совокупность того что было в папке Separate.MVC и во всех предках, то есть в ProjectTemplate.Separate:
<Имя проекта> DCU Binary Forms Source SystemController.pas
При создании шаблона можно в имени файла или папки указать '{ProjectName}', например: '{ProjectName}.NewTemplate', '{ProjectName}Unit' и тогда при создании проекта программа заменит это обозначение на имя директории в которой создается проект. Пример:
Допустим у нас есть следующие шаблоны {ProjectName}.Separate DCU Binary Forms Source Separate.MVC Source {ProjectName}SystemController.pas
При создании проекта {ProjectName} заменяется на имя папки в которой создается проект, то есть на имя проекта.