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. hdu1466 递推

    题意:       给你n条直线,不会存在三线共点,输出所有的可能交点数.. 思路:       这个是个地推的题目,假设当前的线段i,他里面有r条是随意的,有(i - r)条是平行的,那么当前的交点 ...

  2. 病毒木马查杀实战第014篇:U盘病毒之手动查杀

    在U盘中发现病毒 前段时间需要往虚拟机中拷贝点资料,如同往常一样,插上我的U盘,并且在虚拟机的设置中选择连接U盘.奇怪的是这次的连接时间较以往长,并且还出现了"自动播放"窗口: 图 ...

  3. 洛谷P1089 津津的储蓄计划

    题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里 ...

  4. Android Dex分包之旅

    http://yydcdut.com/2016/03/20/split-dex/ http://blog.zongwu233.com/the-touble-of-multidex http://tec ...

  5. vue的快速入门【IDEA版本】

    和vscode相比,使用IDEA进行前端开发并没有那么容易,需要先进行配置 . 安装vue插件,重启idea 鼠标右键添加vue component 点击 file 打开设置 settings,展开 ...

  6. 数据表格 layui.table

    layui官网-表单 自动渲染 方法渲染 table.render,cols中的field是后台传递的data map.put("data",stuService.selectSt ...

  7. Nmap浅析(2)——端口发现

    端口发现 ​ 每台网络设备最多有216(65536)个端口,端口的作用是实现"一机多用".操作系统分了65536个端口号,程序在发送的信息中加入端口号,操作系统在接收到信息后按照端 ...

  8. Linux上的Shebang符号(#!)

    使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗? 本文了将给你简单介绍一下Shebang("#!")这个符号. 首先,这个符号(#!)的名称, ...

  9. 2020BUAA-个人博客-案例分析

    个人博客作业-软件案例分析 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...

  10. shell脚本常用语法详解

    逻辑控制 if 语法:注意空格 a=1b=2if [ $a == $b ]then    echo "a==b"elif [ $a -gt $b ]then    echo &qu ...