CodeGen用户定义的扩展令牌

用户定义的扩展令牌是一种特殊的令牌,开发人员可以确定令牌的名称以及在代码生成过程中遇到令牌时要插入的值。

CodeGen支持多种机制,允许通过以下方式实现用户定义的令牌:

Environment variables.

Include files.

Command line tokens.

Under defined token files.

如果模板文件依赖于开发人员为特定的用户定义标记提供值,可以将该

依赖关系告诉CodeGen。有关详细信息,请参阅声明用户定义的令牌依赖项。

环境变量

如泛型标记中所述,可以使用<环境:变量>模板文件中的令牌和CodeGen将把从

环境变量获得的值插入到输出流中。

包括文件

在通用标记中也有记录,可以使用<文件:name.ext>模板文件中的令牌和CodeGen

将从外部文件中读取数据并将该数据插入到输出流中。

命令行标记

声明已用已定义标记的一种快速方法是使用-ut命令行选项在命令行上同时指定名

称和值,例如:

codegen –s <structure> -t <template> -ut MODEL_NS=MyApp.Model

可以在命令行上指定多个用户定义的标记,在-ut选项后用空格分隔,例如:

codegen –s <structure> -t <template> -ut MODEL_NS=MyApp.Model VIEW_NS=MyApp.View

如果用户定义的标记值(等号字符后面的部分)包含双引号,则在将值传递给

CodeGen之前,Windows将删除引号。在这种情况下,必须用反斜杠字符转义双引

号字符,如下所示:

-ut MYMESSAGE=\"Hello World\"

默认情况下,在命令行上定义的替换值用户定义标记可能不包含其他标记。如果希

望启用该功能,则必须通过-utpp命令行选项告诉CodeGen将用户定义的标记视为

预处理器标记。

用户定义的令牌文件

如果需要定义多个用户定义的令牌,那么有时可以在用户定义的令牌文件中定义它

们,并通过-u命令行选项命名用户定义的令牌文件。

用户定义的令牌文件示例如下:

;

; User defined tokens for Synergex Inc.

;

<SUPPORT_PHONE>(800) 366-3472</SUPPORT_PHONE>

<SUPPORT_EMAIL>support@synergex.com</SUPPORT_EMAIL>

<WEBSITE>http://www.synergex.com</WEBSITE>

要告诉CodeGen从文件中读取用户定义的标记,可以使用-u命令行选项。例如:

codegen –s
<structure> -t <template> -u
MYTOKENS:<usertokenfile>

然后可以在模板文件中引用用户定义的标记。例如:

display(tt,”Please
call support at <SUPPORT_PHONE>”)

display(tt,” or send an email to <SUPPORT_EMAIL>.”)

声明用户定义的令牌依赖项

如果CodeGen在模板文件中遇到某种格式类似于令牌(即由< and >字符分隔)但未被识别为令牌的内容,则CodeGen将忽略它,并且该文本将保留在创建的输出文件中。为了使CodeGen能够为诸如HTML、XML和XAML等语言或脚本生成代码,这是必需的。

但是,当涉及到用户定义的令牌时,这可能是一个问题,因为如果模板包含的内容是模板开发人员打算作为用户定义的令牌来替换的,但是随后从模板生成代码的人忽略了指定用户定义令牌的来源,则令牌将保留在生成的文件,不会报告任何错误。

为了解决这种情况,模板开发人员可以使用<REQUIRES_USERTOKEN>令牌来声明他们的模板需要声明一个特定的用户定义的令牌,可以在令牌文件(-u)中,也可以在命令行(-ut)中声明。

如果模板声明需要用户定义的标记,但在生成代码时尚未声明该用户定义标记,则CodeGen将显示错误并停止处理该模板。

CodeGen用户定义的扩展令牌的更多相关文章

  1. PHP 面向对象编程和设计模式 (4/5) - 异常的定义、扩展及捕获

    PHP高级程序设计 学习笔记 2014.06.12 异常经常被用来处理一些在程序正常执行中遇到的各种类型的错误.比如做数据库链接时,你就要处理数据库连接失败的情况.使用异常可以提高我们程序的容错特性, ...

  2. SQLServer更改用户定义的数据库角色

    更改用户定义的数据库角色注意事项 需具有以下一项或多项权限或成员身份才能运行此命令: 对角色具有 ALTER 权限 对数据库具有 ALTER ANY ROLE 权限 具有 db_securityadm ...

  3. SQLServer之创建用户定义的数据库角色

    创建用户定义的数据库角色注意事项 角色是数据库级别的安全对象. 在创建角色后,可以使用 grant.deny 和revoke来配置角色的数据库级权限. 若要向数据库角色添加成员,请使用alter ro ...

  4. Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)

    Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...

  5. 【翻译】Flink Table Api & SQL — 用户定义函数

    本文翻译自官网:User-defined Functions  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/tabl ...

  6. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  7. 应用C#和SQLCLR编写SQL Server用户定义函数

    摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...

  8. SQL——用户定义函数

    根据用户定义函数返回值的类型,可将用户定义函数分为如下三个类别: (1) 返回值为可更新表的函数 若用户定义函数包含单个 SELECT 语句且该语句可更新,则该函数返回的表也可更新,这样的函数称为内嵌 ...

  9. JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置

    前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...

随机推荐

  1. 编译Android内核 For nexus 5 以及绕过Android的反调试

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/54880488 前面的博客中已经记录了Nexus 5手机的Android 4.4.4 ...

  2. POJ1151基本的扫描线求面积

    题意:      给定n个矩形的对角坐标,分别是左下和右上,浮点型,求矩形覆盖的面积. 思路:       基本的线段树扫描线求面积,没有坑点,不解释了,提示一点,有的题尤其是线段树扫描线的题需要离散 ...

  3. 手脱ASPack2.12壳(练习)

    俗话说柿子挑软的捏,练习脱壳还得用加密壳脱 0x01 准备 1.OD 2.ASPack加壳软件 0x02 脱壳实战 查一下壳 OD载入 第一个call,F7进去 第二个call也是F7进去 之后往下单 ...

  4. postgresql高级应用之合并单元格

    postgresql高级应用之合并单元格 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14732172.html 1.写在前面✍ 继上一篇postgresql高 ...

  5. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  6. Linux执行命令报错:Permission denied

    原因:权限被拒 结局办法 chmod -R 777 目录名 更改目录内文件的权限即可

  7. maven工程添加servlet依赖

    实现导入HttpServlet <!-- Servlet依赖--> <dependency> <groupId>javax.servlet</groupId& ...

  8. ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(系统保障篇)

    快速上手多人游戏服务器开发.后续会基于 Google Agones,更新相关 K8S 运维.大规模快速扩展专用游戏服务器的文章.拥抱️原生 Cloud-Native! 系列 ColyseusJS 轻量 ...

  9. Spring的安装

    Spring的安装 Spring框架包 spring-framework-4.3.6RELEASE-dist.zip http://repo.spring.io/simple/libs-release ...

  10. 使用find_if算法搜寻map的value

    // // main.cpp // map_find // // Created by PKU on 14-9-8. // Copyright (c) 2014年 PKU. All rights re ...