自动脚本工具新版 v2.0

自动脚本工具 下载

下载工具后,解压,直接双击 "execute.bat" 文件后(前提已配置好 jdk 1.7 的环境),会生成文件夹 "output",该文件夹下会有生成的对应语言的脚本。

你也可以先尝试修改文件 “config_example.xml” 的配置项,再运行 "execute.bat",看 "output" 文件夹下的文件有什么变化,对于程序员来说应该是很简单的东西了。

 

新版本支持同步输出 as3(对象+宏), java(对象+宏), c#(对象+宏), mysql(对象), js(宏), lua(宏) 的脚本了。

工具主要目的就是输出不同目标语言下相同的数据对象类定义,和宏类定义。配置详细

[type] 支持的 type 类型 

|---boolean : 布尔

|---integer8 : 8 位整型

|---integer16 : 16 位整型

|---integer32 : 32 位整型

|---integer64 : 64 位整型

|---decimal32 : 32 位小数

|---decimal64 : 64 位小数

|---string : 字符串

|---array : 数组,默认泛型类型为 object

|---dictionary : 字典,默认泛型类型为 object

|---date : 日期

|---object : 基类型



[value] 对应 type 类型支持的默认值

|---boolean : true/false 真/假

|---string : 非 null 时,输出会自动添加引号

|---date, array, dictionary : new 构造对象

|---object : null 空值



[Macros][group]

|---宏的分组,当不指定宏类型时,则被系统归为分组中,自动指定类型为 integer32,指定一个系统值

|---值结构为 0x7FFFFFFF,从左到右,第0位始终为0,第1-11位表示所在的组,第12-31表示宏值。如 宏 0x00100001 表示该宏在分组 1 (第 1-11 位 : 0x001) 中,值为 1 (第 12-31 位 : 0x00001)

|---分组不能嵌套



[AutoScript] 以包为单位定义对象和宏

|---package : 默认包路径 - 非必需

|---packageAs3 : as3 包路径,如果未指定,则使用 package - 非必需

|---packageJava : java 包路径,如果未指定,则使用 package - 非必需

|---packageNet : c# 包路径,如果未指定,则使用 package - 非必需

|---packageDB : mysql 数据库名,如果未指定,则使用 package 的最内层包名,如果也未指定,则系统默认为 dbScript - 非必需

|---packageJS : js 包路径,如果未指定,则使用 package - 非必需

|---packageLua : lua 包路径,如果未指定,则使用 package - 非必需

|---[Object] 对象数据

	|---name : 对象数据类名(即文件名), - 必需

	|---extend : 基类 - 非必需

	|---note : 对象数据注释 - 非必需

	|---nameTable : 该对象数据对应的 mysql 表名,如果未指定,则使用 name - 非必需

	|---autoIncrement : mysql 中主键自增起始值 - 非必需

	|---[ImportAs3][ImportJava][ImportNet] 对象数据需要引用的其它对象

		|---value : 引用的对象完整包路径+类名,如 java.util.Date - 必需

	|---[Property] 对象数据属性

		|---name : 属性名,c# 输出时会首字母大写 - 必需

		|---type : 属性默认类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需

		|---value : 属性默认值,特殊值见 [value],其它值则会原样输出 - 非必需

		|---note : 属性注释 - 非必需

		|---typeAs3 : as3 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需

		|---valueAs3 : as3 属性围住值,如果未指定,则使用 value - 非必需

		|---typeJava : java 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需

		|---valueJava : java 属性默认值,如果未指定,则使用 value - 非必需

		|---typeNet : c# 属性类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需

		|---valueNet : c# 属性默认值,如果未指定,则使用 value - 非必需

		|---typeDB : mysql 字段类型(原样输出类型和指定的值),如果未指定,则使用 type - 非必需

		|---valueDB : mysql 字段默认值,如果未指定,则使用 value - 非必需

		|---restrictDB : mysql 字段约束,如 NOT NULL - 非必需

|---[Macros] 一组宏的定义,该定义下的直系 [Macro] 占用第 1 个分组

	|---name : 宏类名(即文件名) - 必需

	|---groupStart : 指定分组的起始序号,最小值为 0

	|---groupEnd : 指定分组的结束序号,如果小于 groupStart,则默认为 0x7FF

	|---note : 宏类注释 - 非必需

	|---[Macro] 宏

		|---name : 宏名 - 必需

		|---type : 宏类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需

		|---value : 宏默认值,特殊值见 [value],其它值则会原样输出 - 非必需

		|---note : 宏注释

	|---[Group] 宏分组,同 [Macro] 定义一样会生成一个宏,如果不指定类型,则系统指定的值结构为:分组位为当前分组,值部分为0

		|---name : 分组(宏)名

		|---type : 分组(宏)类型,指定类型见 [type],如果指定为不支持的类型,则原样输出 - 非必需

		|---value : 分组(宏)默认值,特殊值见 [value],其它值则会原样输出 - 非必需

		|---note : 分组(宏)注释

		|---[Macro] 分组中的宏

配置模板

 1 <AutoScript package="" packageAs3="" packageJava="" packageNet="" packageDB="" packageJS="" packageLua="">

 2 

 3     <Object name="" extend="" note="" nameTable="" autoIncrement="">

 4         <ImportAs3 value=""/>

 5         <ImportJava value=""/>

 6         <ImportNet value=""/>

 7         <Property name="" type="" value="" note="" typeAs3="" valueAs3="" typeJava="" valueJava="" typeNet="" valueNet="" typeDB="" valueDB="" restrictDB=""/>

 8     </Object>

 9     

10     <Macros name="" groupStart="" groupEnd="" note="">

11         <Macro name="" type="" value="" note=""/>

12         <Group name="" type="" value="" note="">

13             <Macro name="" type="" value="" note=""/>

14         </Group>

15     </Macros>

16 

17 </AutoScript>

批文件模板

 1 @echo off

 2 

 3 java -classpath ./libs/*; AutoScript ^

 4 -config ./config_example.xml ^

 5 -pathAs3 ./output/as3/ ^

 6 -pathJava ./output/java/ ^

 7 -pathNet ./output/net/ ^

 8 -net2one netLib ^

 9 -pathDB ./output/mysql/ ^

10 -pathJS ./output/js/ ^

11 -pathLua ./output/lua/

12 

13 pause

14 

15 @echo on

16 exit

17 

18 

19 ::输出配置文件中的对象数据和宏

20 ::-config 后可以指定多个配置文件,如 -config config_a.xml config_b.xml

21 ::-pathAs3 输出 as3 文件路径(如果需要输出 as3 脚本)

22 ::-pathJava 输出 java 文件路径(如果需要输出 java 脚本)

23 ::-pathNet 输出 c# 文件路径(如果需要输出 c# 脚本)

24 ::-net2one 如果指定的话,将会把每一个配置文件(如 config_a.xml)里的所有对象(节点 Object)输出到一个 .cs 文件中 。后接 .cs 文件名(数量与 -config 指定的文件数量一一对应),如 -config ./configA.xml ./configB.xml -net2one a b,将会输出 a.cs 和 b.cs 文件

25 ::-pathDB 输出 mysql 脚本文件路径(如果需要输出 mysql 脚本)

26 ::-pathJS 输出 js 文件路径(如果需要输出 js 脚本)

27 ::-pathLua 输出 lua 文件路径(如果需要输出 lua 脚本)

比如:客户端与服务端需要统一请求和返回命令、错误码之类的,就可以只需要维护宏定义配置文件。直接输出客户端和服务端的宏定义类。

 1 <Macros name="ReqRsp" groupStart="1" groupEnd="100" note="请求返回命令">

 2     <Macro name="WELCOME" type="string" value="欢迎使用"/>

 3     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>

 4     

 5     <Group name="Register" note="注册">

 6         <Macro name="register_req" note="注册账号请求"/>

 7         <Macro name="register_rsp" note="注册请求返回"/>

 8     </Group>

 9 </Macros>

10 <Macros name="Errors" groupStart="101" groupEnd="200" note="错误码">

11     <Macro name="WELCOME" type="string" value="欢迎使用"/>

12     <Macro name="ERROR_PASSWORD" type="integer32" value="1" note="密码错误"/>

13     

14     <Group name="Register" note="注册">

15         <Macro name="username_existed" note="登录名已存在"/>

16         <Macro name="email_necessary" note="需要填写电子邮箱"/>

17     </Group>

18 </Macros>
配置宏示例
 1 package com.test

 2 {

 3 

 4     /** 请求返回命令 */

 5     public class ReqRsp

 6     {

 7 

 8         static public const WELCOME:String = "欢迎使用";

 9         /** 密码错误 */

10         static public const ERROR_PASSWORD:int = 1;

11 

12         /** 注册 */

13         static public const REGISTER:int = 2097152;

14         /** 注册账号请求 */

15         static public const REGISTER_REQ:int = 2097153;

16         /** 注册请求返回 */

17         static public const REGISTER_RSP:int = 2097154;

18 

19     }

20 }
输出 as3 ReqRsp
 1 package com.test

 2 {

 3 

 4     /** 错误码 */

 5     public class Errors

 6     {

 7 

 8         static public const WELCOME:String = "欢迎使用";

 9         /** 密码错误 */

10         static public const ERROR_PASSWORD:int = 1;

11 

12         /** 注册 */

13         static public const REGISTER:int = 106954752;

14         /** 登录名已存在 */

15         static public const USERNAME_EXISTED:int = 106954753;

16         /** 需要填写电子邮箱 */

17         static public const EMAIL_NECESSARY:int = 106954754;

18 

19     }

20 }
输出 as3 Errors
 1 package com.test;

 2 

 3 /** 请求返回命令 */

 4 public class ReqRsp {

 5     

 6     static public final String WELCOME = "欢迎使用";

 7     /** 密码错误 */

 8     static public final int ERROR_PASSWORD = 1;

 9 

10     /** 注册 */

11     static public final int REGISTER = 2097152;

12     /** 注册账号请求 */

13     static public final int REGISTER_REQ = 2097153;

14     /** 注册请求返回 */

15     static public final int REGISTER_RSP = 2097154;

16     

17 }
输出 java ReqRsp
 1 package com.test;

 2 

 3 /** 错误码 */

 4 public class Errors {

 5     

 6     static public final String WELCOME = "欢迎使用";

 7     /** 密码错误 */

 8     static public final int ERROR_PASSWORD = 1;

 9 

10     /** 注册 */

11     static public final int REGISTER = 106954752;

12     /** 登录名已存在 */

13     static public final int USERNAME_EXISTED = 106954753;

14     /** 需要填写电子邮箱 */

15     static public final int EMAIL_NECESSARY = 106954754;

16     

17 }
输出 java Errors
 1 namespace com.test

 2 {

 3     /// <summary>

 4     /// 请求返回命令

 5     /// </summary>

 6     public class ReqRsp

 7     {

 8 

 9         public const System.String WELCOME = "欢迎使用";

10         /// <summary>

11         /// 密码错误

12         /// </summary>

13         public const System.Int32 ERROR_PASSWORD = 1;

14 

15         /// <summary>

16         /// 注册

17         /// </summary>

18         public const System.Int32 REGISTER = 2097152;

19         /// <summary>

20         /// 注册账号请求

21         /// </summary>

22         public const System.Int32 REGISTER_REQ = 2097153;

23         /// <summary>

24         /// 注册请求返回

25         /// </summary>

26         public const System.Int32 REGISTER_RSP = 2097154;

27 

28     }

29 }
输出 c# ReqRsp
 1 namespace com.test

 2 {

 3     /// <summary>

 4     /// 错误码

 5     /// </summary>

 6     public class Errors

 7     {

 8 

 9         public const System.String WELCOME = "欢迎使用";

10         /// <summary>

11         /// 密码错误

12         /// </summary>

13         public const System.Int32 ERROR_PASSWORD = 1;

14 

15         /// <summary>

16         /// 注册

17         /// </summary>

18         public const System.Int32 REGISTER = 106954752;

19         /// <summary>

20         /// 登录名已存在

21         /// </summary>

22         public const System.Int32 USERNAME_EXISTED = 106954753;

23         /// <summary>

24         /// 需要填写电子邮箱

25         /// </summary>

26         public const System.Int32 EMAIL_NECESSARY = 106954754;

27 

28     }

29 }
输出 c# Errors
 1 var com_test_ReqRsp = {

 2 

 3     "WELCOME" : "欢迎使用",  

 4     "ERROR_PASSWORD" : 1, // 密码错误 

 5 

 6     "REGISTER" : 2097152, // 注册 

 7     "REGISTER_REQ" : 2097153, // 注册账号请求 

 8     "REGISTER_RSP" : 2097154, // 注册请求返回 

 9 

10 };
输出 js ReqRsp
 1 var com_test_Errors = {

 2 

 3     "WELCOME" : "欢迎使用",  

 4     "ERROR_PASSWORD" : 1, // 密码错误 

 5 

 6     "REGISTER" : 106954752, // 注册 

 7     "USERNAME_EXISTED" : 106954753, // 登录名已存在 

 8     "EMAIL_NECESSARY" : 106954754, // 需要填写电子邮箱 

 9 

10 };
输出 js Errors
 1 com_test_ReqRsp = {

 2 

 3     ["WELCOME"] = "欢迎使用",  

 4     ["ERROR_PASSWORD"] = 1, -- 密码错误 

 5 

 6     ["REGISTER"] = 2097152, -- 注册 

 7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求 

 8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回 

 9 

10 };
输出 lua ReqRsp
 1 com_test_ReqRsp = {

 2 

 3     ["WELCOME"] = "欢迎使用",  

 4     ["ERROR_PASSWORD"] = 1, -- 密码错误 

 5 

 6     ["REGISTER"] = 2097152, -- 注册 

 7     ["REGISTER_REQ"] = 2097153, -- 注册账号请求 

 8     ["REGISTER_RSP"] = 2097154, -- 注册请求返回 

 9 

10 };
输出 lua Errors

 比如数据传输,像 as3 与 java 通信的 amf3 协议,可以传输对象。配置如下

1 <Object name="VOUser" note="用户对象" nameTable="t_user">

2     <Property name="id" type="integer32" note="标识" restrictDB="PRIMARY KEY"/>

3     <Property name="isBoy" type="boolean" value="true"/>

4     <Property name="dateTime" type="date" value="new"/>

5 </Object>
配置对象类示例
 1 package com.test

 2 {

 3     /** 用户对象 */

 4     public class VOUser

 5     {

 6     

 7         //============================================================================

 8         //PROPERTY

 9         //============================================================================

10         private var _id:int;

11         private var _isBoy:Boolean = true;

12         private var _dateTime:Date = new Date();

13         //============================================================================

14         //CONSTRUCTOR

15         //============================================================================

16         public function VOUser() {}

17         //============================================================================

18         //GETTER_SETTER

19         //============================================================================

20         /** 标识 */

21         public function get id():int { return _id; }

22         /** @private */

23         public function set id(value:int):void { this._id = value; }

24 

25         public function get isBoy():Boolean { return _isBoy; }

26         public function set isBoy(value:Boolean):void { this._isBoy = value; }

27 

28         public function get dateTime():Date { return _dateTime; }

29         public function set dateTime(value:Date):void { this._dateTime = value; }

30         

31     }

32 }
输出 as3 VOUser
 1 package com.test;

 2 

 3 /** 用户对象 */

 4 public class VOUser {

 5 

 6     //============================================================================

 7     //PROPERTY

 8     //============================================================================

 9     private int id;

10     private boolean isBoy = true;

11     private java.util.Date dateTime = new java.util.Date();

12     //============================================================================

13     //CONSTRUCTOR

14     //============================================================================

15     public VOUser() {}

16     //============================================================================

17     //GETTER_SETTER

18     //============================================================================

19     /** 标识 */

20     public int getId() { return id; }

21     /** 标识 */

22     public void setId(int value) { this.id = value; }

23 

24     public boolean getIsBoy() { return isBoy; }

25     public void setIsBoy(boolean value) { this.isBoy = value; }

26 

27     public java.util.Date getDateTime() { return dateTime; }

28     public void setDateTime(java.util.Date value) { this.dateTime = value; }

29 

30 }
输出 java VOUser
 1 namespace com.test

 2 {

 3     /// <summary>

 4     /// 用户对象

 5     /// </summary>

 6     public class VOUser

 7     {

 8         //============================================================================

 9         //PROPERTY

10         //============================================================================

11         private System.Int32 _id;

12         private System.Boolean _isBoy = true;

13         private System.DateTime _dateTime = System.DateTime.Now;

14         //============================================================================

15         //CONSTRUCTOR

16         //============================================================================

17         public VOUser() {}

18         //============================================================================

19         //GETTER_SETTER

20         //============================================================================

21         /// <summary>

22         /// 标识

23         /// </summary>

24         public System.Int32 Id

25         {

26             get { return _id; }

27             set { this._id = value; }

28         }

29 

30         public System.Boolean IsBoy

31         {

32             get { return _isBoy; }

33             set { this._isBoy = value; }

34         }

35 

36         public System.DateTime DateTime

37         {

38             get { return _dateTime; }

39             set { this._dateTime = value; }

40         }

41 

42     }

43 }
输出 c# VOUser
 1 DROP DATABASE IF EXISTS db_test;

 2 CREATE DATABASE db_test DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

 3 

 4 USE db_test;

 5 

 6 #----------------------------------------------------------------------------

 7 #用户对象

 8 DROP TABLE IF EXISTS t_user;

 9 CREATE TABLE t_user(

10     id INT PRIMARY KEY COMMENT "标识"

11     , isBoy TINYINT DEFAULT 1

12     , dateTime DATETIME DEFAULT NULL

13 )DEFAULT CHARSET = UTF8 COLLATE UTF8_GENERAL_CI;

14 DESC t_user;
输出 mysql 脚本

 

你可能感兴趣的:(脚本)