Возможно ли в шаблоне Telosys, чтобы вызвать функцию, созданную специально? -- code-generation поле с участием velocity поле с участием telosys пол Связанный проблема

Is it possible in a Telosys template to call a function created specifically?


4
vote

проблема

русский

Я использую Telosys ( https://www.telosys.org ) для генерации исходного кода Python и его работает отлично. Но у меня есть особая необходимость, которая может быть решена, вызывая определенную функцию преобразования.

Можно ли создать конкретную функцию и называть его в шаблоне телезийных?

Например: <код> myFunction("abc" ) или <код> $something.myFunction("abc" ) или что-то еще

Если необходимо, чтобы я мог создать эту функцию на разных языках, таких как Java, Python или JavaScript.

Английский оригинал

I use Telosys (https://www.telosys.org) to generate Python source code and it works fine. But I have a specific need that could be solved by calling a specific conversion function.

Is it possible to create a specific function and to call it inside a Telosys template?

For example: myFunction("abc" ) or $something.myFunction("abc" ) or anything else

If necessary it's possible for me to create this function in different languages ​​like Java, Python or JavaScript.

</div
        

Список ответов

3
 
vote
vote
Лучший ответ
 

Telosys предназначен для расширяемого, поэтому да, вы можете создавать свои собственные функции и позвонить им в свои шаблоны. Поскольку Teleosys написан в Java, вам придется создавать эти функции в Java, а затем использовать объект « LOTGER » в файле «.vm», чтобы загрузить свой класс и вызов методах, определенных в этом классе.

Вот как сделать этот шаг за шагом:

  1. Используйте предпочитаемую IDE, чтобы создать класс Java, определяющий ваш конкретный метод (ы). Этот класс может быть в любом пакете (включая пакет «по умолчанию / Беззамышему»), метод (ы) могут быть «статическими», если вам не нужен экземпляр класса.

  2. Компиляция этого класса (цель состоит в том, чтобы изготовить простой файл " .CLASS " или " .jar ", если вы предпочитаете)

  3. Положите класс (или банку) в папку шаблонов:

    .
  • Если у вас есть файл " .class ", поместите его в « классы » в папке
  • Если у вас есть файл " .jar ", поместите его в папку « lib »

Примеры:

 <код> TelosysTools/templates/my-bundle/classes/MyClass.class TelosysTools/templates/my-bundle/lib/my-lib.jar   
  1. в файле шаблона (".vm") Используйте объект « $ loader », чтобы загрузить класс Java и позвонить в любой из его методов См. Ссылка «$ Loader»: http://www.telosys.org/ Шаблоны-док / объекты / Loader.html

Если все ваши методы «статически», вам не нужен экземпляр, так что просто используйте «". Пример:

 <код> ## load the class and keep it in a new "$Math"  object (no instance created) #set( $Math = $loader.loadClass("java.lang.Math") ## use the static methods of this class $Math.random()   

Если ваши методы не «статичны», поэтому вам нужен экземпляр, затем используйте « $ loader.NewInstance () ". Примеры:

 <код> ## create an instance of StringBuilder and put it in the context with #set #set( $strBuilder = $loader.newInstance('java.lang.StringBuilder') ) ## use the instance to call a method $strBuilder.append('aa')         ## create new instance of a specific class : MyTool.class #set( $tool = $loader.newInstance('MyTool') ) ## use the instance to call a method $tool.myFunction()   

Для суммирования вы можете использовать любой класс, предоставленный Java-jre (например, «Math», «StringBuilder»), вы можете использовать существующие библиотеки, добавив файл «.jar» (не забудьте добавить зависимости Требуется, если файл JAR не является автономным) или просто добавьте один файл «.Class».

 

Telosys is designed to be extensible, so yes you can create your own functions and call them in your templates. As Telosys is written in Java you will have to create these functions in Java, then use the "loader" object in the ".vm" file to load your class and call the methods defined in this class.

Here's how to do that step by step:

  1. Use your preferred IDE to create a Java class defining your specific method(s). This class can be in any package (including the "default / unnamed package"), the method(s) can be "static" if you don't need an instance of the class.

  2. Compile this class (the goal is to produce a simple ".class" file or a ".jar" file if you prefer)

  3. Put the class (or the jar) in the templates bundle folder :

  • if you have a ".class" file put it in "classes" folder
  • if you have a ".jar" file put it in the "lib" folder

Examples :

TelosysTools/templates/my-bundle/classes/MyClass.class TelosysTools/templates/my-bundle/lib/my-lib.jar 
  1. In the template file (".vm") use the "$loader" object to load your Java class and call any of its methods See "$loader" reference here : http://www.telosys.org/templates-doc/objects/loader.html

If all your methods are "static" you don’t need an instance so just use "$loader.loadClass()" . Example :

## load the class and keep it in a new "$Math"  object (no instance created) #set( $Math = $loader.loadClass("java.lang.Math") ## use the static methods of this class $Math.random() 

If your methods are not "static" so you need an instance, then use "$loader.newInstance()" . Examples :

## create an instance of StringBuilder and put it in the context with #set #set( $strBuilder = $loader.newInstance('java.lang.StringBuilder') ) ## use the instance to call a method $strBuilder.append('aa')         ## create new instance of a specific class : MyTool.class #set( $tool = $loader.newInstance('MyTool') ) ## use the instance to call a method $tool.myFunction() 

So to sum up, you can use any class provided by Java-JRE (eg "Math", "StringBuilder" ), you can reuse existing libraries by adding a ".jar" file (don't forget to add dependencies required if the jar file is not stand-alone) or just add a single ".class" file.

</div
 
 
         
         

Связанный проблема

236  Функция прошла как аргумент шаблона  ( Function passed as template argument ) 
Я ищу правила, включающие передачу шаблонов C ++, функционируют как аргументы. Это поддерживается C ++, как показано на примере здесь: <код> #include <ios...

27  Для каких целей вы использовали T4?  ( For what purposes have you used t4 ) 
T4 существует в течение нескольких лет в Visual Studio, но не не привлечь много внимания. Однако для тех, кто это знает, кажется, некоторые очень творческие...

33  Как скрывать файлы, сгенерированные пользовательским инструментом в Visual Studio  ( How to hide files generated by custom tool in visual studio ) 
Я хотел бы, чтобы файлы, созданные моим пользовательским инструментом, чтобы быть скрытым, но я не могу найти какую-либо документацию о том, как это сделано. ...

39  Есть ли способ иметь функции в основных шаблонах T4?  ( Is there any way to have functions in basic t4 templates ) 
by Базовый шаблон t4, я имею в виду, не использую T4 Toolkit или любой из надстройков. Мой T4 становится немного сложным, но я хотел бы сохранить в себе с...

95  Соглашения о именах для файлов частичных классов  ( Naming conventions for partial class files ) 
Я генерирую большую часть моим кода лесов ASP.NET MVC. Все сгенерированные файлы являются частичными классами, которые используют стандартные соглашения об им...

1  Определение класса копия поколения в C #  ( Class definition copy generation in c sharp ) 
<Р> У меня есть сборка (DLL), созданные из ранних связаны классов инструмента кода genaration dynamcis УРКА в. Эти классы в основном имеют свойство. <Р> Я хоч...

0  Сценарий для создания всей специализации шаблонов  ( Script to generate all specialization of templates ) 
Я пишу скрипт Python, который в конечном итоге будет генерировать все возможные специализации шаблонов определенных (шаблонов, шаблонов) комбинации. Я буду ...

0  Кто-нибудь знает плагины поколения кода VB.Net для Staruml?  ( Does anyone know of any vb net code generation plug ins for staruml ) 
Простой вопрос действительно. Разработка не требуется. Я нашел аналогичные инструменты для Java, C #, C ++ и других языков, но не VB.NET. Спасибо ...

0  Создание клиента Proxy Web Service для позиционирования HR-XML WSDL  ( Generating web service proxy client for hr xml positionopening wsdl ) 
Я пытаюсь сгенерировать клиент прокси-сервиса Java, используя Apache Axis2 для Открытие положения WSDL предоставлена ​​ CHR-XML Консорциум Отказ Я использу...

0  Как создать шаблоны элементов, которые добавляют более одного файла?  ( How to create item templates that add more than one file ) 
Я создал шаблон элемента для VS2008, на эти Инструкции И это кажется достаточно простой. Тем не менее, можно ли добавить более одного файла в проект? Напр...

2  Simple Ado.net C # Хранированная процедура Генератор процедуры  ( Simple ado net c sharp stored procedure generator ) 
Я использую Visual Studio 2005, SQL Server 2005, C #, ADO.NET. У нас очень большая база данных и регулярно добавляя новые хранимые процедуры. Я устал от напис...

0  Ruby on Rails 3: генератор администрирования интерфейса?  ( Ruby on rails 3 administration interface generator ) 
Я ищу какой-нибудь драгоценный камень / библиотека, способная генерировать интерфейс администрирования для моего проекта ROR3. Я не хочу иметь некоторую библи...

44  Генерировать классы Poco в разных проектах к проекту с моделью объекта  ( Generate poco classes in different project to the project with entity framework ) 
Я пытаюсь использовать шаблон репозитория с EF4 с использованием VS2010. С этой целью я использую поколение COCO CODE, щелкнув правой кнопкой мыши на дизайн...

0  Ищете генератор кода, чтобы создать процедуру чтения XML от абстрактного описания документа  ( Seeking a code generator to create xml read in routine from abstract document de ) 
Написание рутины чтения XML в C, используя libxml, утомительно, особенно если вы хотите сделать это чисто, с проверками и сообщениями об ошибках для отсутству...

1  Создание классов из HTML-документации  ( Generate classes from html documentation ) 
У меня есть какой-то третья сторонняя веб-служба, отформатированная в таблицах HTML, как это (первая строка - заголовок): <код> ElementNum|ElementName|DataT...

Связанный проблема

236  Функция прошла как аргумент шаблона 
27  Для каких целей вы использовали T4? 
33  Как скрывать файлы, сгенерированные пользовательским инструментом в Visual Studio 
39  Есть ли способ иметь функции в основных шаблонах T4? 
95  Соглашения о именах для файлов частичных классов 
1  Определение класса копия поколения в C # 
0  Сценарий для создания всей специализации шаблонов 
0  Кто-нибудь знает плагины поколения кода VB.Net для Staruml? 
0  Создание клиента Proxy Web Service для позиционирования HR-XML WSDL 
0  Как создать шаблоны элементов, которые добавляют более одного файла? 
2  Simple Ado.net C # Хранированная процедура Генератор процедуры 
0  Ruby on Rails 3: генератор администрирования интерфейса? 
44  Генерировать классы Poco в разных проектах к проекту с моделью объекта 
0  Ищете генератор кода, чтобы создать процедуру чтения XML от абстрактного описания документа 
1  Создание классов из HTML-документации 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.