Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
20.03.2016
Размер:
7.31 Mб
Скачать

StarUML. Руководство разработчика. Глава 11. Написание шаблонов

121 / 139

 

 

 

Сигнатура

Описание

Целевой шаблон

IStarUMLApplication

 

POWERPOINT

StarUMLProject(): IUMLProject

Возвращает COM объект проекта

TEXT

MSWord(): WordApplication

Возвращает COM объект приложения Word.

WORD

MSExcel(): ExcelApplication

Возвращает COM объект приложения Excel.

EXCEL

MSPPT(): PowerpointApplication

Возвращает COM объект приложения

POWERPOINT

 

Powerpoint.

 

findByFullpath(Path): IElement

Возвращает элемент по указанному пути.

WORD,EXCEL,

 

 

POWERPOINT,TEXT

findByLocalpath(RootElem, Path):

Возвращает элемент по относительному пути от

WORD,EXCEL,

IElement

RootElem.

POWERPOINT,TEXT

itemCount(RootElem,

Возвращает количество элементов в коллекции

WORD,EXCEL,

CollectionName): int

CollectionName.

POWERPOINT,TEXT

item(RootElem, CollectionName,

Возвращает элемент коллекции ColletionName

WORD,EXCEL,

Index): IElement

по индексу Index.

POWERPOINT,TEXT

attr(Elem, AttrName): Value

Возвращает свойство или значение ссылки с

WORD,EXCEL,

 

именем AttrName элемента Elem.

POWERPOINT,TEXT

current(): IElement

Возвращает последний выбранный элемент.

WORD,EXCEL,

 

 

POWERPOINT,TEXT

pos(): int

Возвращает индекс текущего элемента в

WORD,EXCEL,

 

контейнере.

POWERPOINT

createFile(path): TextStream

Создаёт файл с указанным полным именем и

TEXT

 

возвращает объект файла.

 

deleteFile(path)

Удаляет существующий файл с указанным

TEXT

 

полным именем.

 

createFolder(path): Folder

Создаёт папку с указанным полным именем и

TEXT

 

возвращает объект папки.

 

deleteFolder (path)

Удаляет папку с указанным полным именем.

TEXT

fileExists(path): Boolean

Проверяет, существует ли файл с указанным

TEXT

 

полным именем.

 

folderExists(path): Boolean

Проверяет, существует ли папка с указанным

TEXT

 

полным именем.

 

fileBegin(path)

Создаёт файл с указанным именем и вывод всех

TEXT

 

команд перенаправляется в этот файл, пока не

 

 

встретится fileEnd.

 

fileEnd(path)

Соответствует fileBegin и останавливает вывод

TEXT

 

в указанный ею файл.

 

getTarget(path): String

Возвращает путь вывода StarUML Generator UI,

TEXT

 

установленный пользователем.

 

Написание текстовых шаблонов

Перед написанием текстового шаблона, должны быть выполнены следующие шаги.

1.Скачайте образец текстового шаблона (template-text.zip) из раздела "downloads/templates" домашней страницы StarUML, для того, чтобы генерировать на его основе другие текстовые шаблоны.

2.Создайте новую папку с именем "template-text" и разархивируйте в неё скаченный файл.

3.Запустите StarUML.

4.Выберите меню [Tools] -> [StarUML Generator...].

5.Выберите шаблон "Default Code Template" на странице [Select templates for generator].

StarUML. Руководство разработчика. Глава 11. Написание шаблонов

122 / 139

6.Щелкните кнопку [Clone Template], укажите название шаблона и путь, где он будет сохранен, и щелкните [OK].

7.Выберите новый созданный шаблон в [List of templates], щелкните кнопку [Open Template], и новый текстовый шаблон будут открыт в экране редактора.

8.Вводите команды в окне редактора, как указано ниже.

Команды, описанные в параграфе "Компоненты шаблона", представляются немного иначе, чем в других шаблонах. Команда в текстовом шаблоне заключается в символы "<@" и "@>". Название команды указывается сразу после "<@", первый параметр отделяется от названия одним пробелом, другие параметры разделяются символом ";". Текст, находящийся вне "<@" и "@>" обрабатывается как стилевая область, которая помещается в генерируемый документ "как есть".

Чтобы перебрать элементы типа "UMLClass", находящиеся по адресу "::Design Model", используется следующая команда

<@REPEAT {R}::Design Model;UMLClass;;@>

...

<@ENDREPEAT@>

Допустим, Вы хотите распечатать данные о классах модели. Между командами REPEAT и ENDREPEAT поместите текст "class", "{", "}" и команду DISPLAY для вывода имени класса и документации, как показано ниже.

<@REPEAT {R}::Design Model;UMLClass;;@> class <@DISPLAY ;current().Name@> {

// <@DISPLAY ;current().Documentation@>} <@ENDREPEAT@>

В текстовом шаблоне, есть сокращенная команда, аналогичная команде DISPLAY, но не содержащая параметра пути. Она имеет форму "<@=expression@>" и использует только второй параметр команды DISPLAY. Если показанный выше шаблон выразить через "<@= ..@>", то получится следующий код.

<@REPEAT {R}::Design Model;UMLClass;;@> class <@=current().Name@> {

// <@=current().Documentation@>} <@ENDREPEAT@>

Использование IF и ENDIF имеет смысл, если нужно что-то анализировать в просмтриваемом классе. В следующем примере документация класа печатается, если она не пустая.

<@REPEAT {R}::Design Model;UMLClass;;@> class <@DISPLAY ;current().Name@> { <@IF current().Documentation != ""@>

// <@DISPLAY ;current().Documentation@> <@ENDIF@>}

<@ENDREPEAT@>

Выражение, используемое как параметр команды, пишется на JScript. В данном контексте может использоваться встроенная функция. Если Вы хотите использовать другую функцию вместо встроенной, определите новую функцию в команде SCRIPT и вызовите её в параметре другой команды. Следующий пример определяет функцию myfunc и отображает значение, возвращаемое этой функцией.

<@SCRIPT

function myfunc(a, b) {

...

}

@>

Соседние файлы в папке ПиАПС ЛР2