CN104699519A - 基于GDI+实现的结合C#类库的JavaScript脚本编辑器 - Google Patents

基于GDI+实现的结合C#类库的JavaScript脚本编辑器 Download PDF

Info

Publication number
CN104699519A
CN104699519A CN201510154601.2A CN201510154601A CN104699519A CN 104699519 A CN104699519 A CN 104699519A CN 201510154601 A CN201510154601 A CN 201510154601A CN 104699519 A CN104699519 A CN 104699519A
Authority
CN
China
Prior art keywords
script
editor
gdi
class libraries
javascript
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510154601.2A
Other languages
English (en)
Inventor
梁效宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SICHUAN SALVATIONDATA INFORMATION SAFETY TECHNOLOGY Co Ltd
Original Assignee
SICHUAN SALVATIONDATA INFORMATION SAFETY TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SICHUAN SALVATIONDATA INFORMATION SAFETY TECHNOLOGY Co Ltd filed Critical SICHUAN SALVATIONDATA INFORMATION SAFETY TECHNOLOGY Co Ltd
Priority to CN201510154601.2A priority Critical patent/CN104699519A/zh
Publication of CN104699519A publication Critical patent/CN104699519A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器,属于计算机软件领域,一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器,包括:代码智能补全单元,用于支持JavaScript关键字和C#方法智能提示;JavaScript脚本单元,用于支持C#方法调用;预览单元,用于将结果集通过弹出框方式进行预览。本发明的有益效果如下:基于GDI+实现,支持代码智能补全,实现调用C#方法时自动补全;支持复杂结果集的图形化预览;支持把脚本编译为动态链接库DLL。

Description

基于GDI+实现的结合C#类库的JavaScript脚本编辑器
   技术领域
    本发明属于计算机软件领域,具体涉及一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器。
   背景技术
目前市面上存在很多JavaScript脚本编辑器,并且都有各自的特点,但都具有如下局限性:
1.缺乏代码智能补全功能,不支持自定义扩展C#方法(“方法”是包含一系列语句的代码块)的功能;
2.部分支持代码预览功能,但无法做到复杂结果集的图形化预览;
3.不支持在JavaScript脚本中调用C#方法;
4.无法把脚本编译为动态链接库(DLL, Dynamic Link Library)。
名词解释:
GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口;
JavaScript是一种脚本语言;
C#是一种高级程序设计语言。
发明内容
本发明针对现有技术的不足,提供了一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器,以解决现有技术缺乏代码智能补全等功能的问题。
为了实现以上发明目的,本发明采取的技术方案如下:一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器,包括:代码智能补全单元,用于支持JavaScript关键字和C#方法智能提示;JavaScript脚本单元,用于支持C#方法调用;预览单元,用于将结果集通过弹出框方式进行预览;脚本编译单元,用于将编写好的脚本翻译成标准的C#语句,保存到文件,并利用.net(Microsoft XML Web services 平台)框架所提供的类库,对文件进行编译,生成DLL类库。
作为优选,还包括:高亮度显示单元,用于增加脚本可读性;书签功能单元,用于添加和删除书签;录制宏单元,用于宏的录制和执行。
作为优选,脚本编辑器的界面包括代码编辑区、调试结果显示区和脚本预览窗口。
作为优选,扩展自定义方法具体步骤如下:
101-在代码编辑区,输入关键字片段,根据智能提示,输入自定义扩展方法;
102-点击运行按钮,根据代码编辑区显示文本,获取标准的脚本代码;
103-脚本执行控制引擎,接收步骤102传入的脚本代码,使用Noesis.JavaScript开源组件,执行JavaScript脚本和自定义扩展代码,返回结果数据;
104-返回结果数据,利用解析组件进行数据解析,呈现到界面。
作为优选,101所述的代码智能补全具体步骤如下:
1011-定义XML文件,存储元素项列表,加载XML文件到内存中;
1012-根据元素项类型,加载不同类型的智能提示元素项;
1013-当输入某个字符后,触发Key Press Event Handler事件;
1014-在步骤1013中的事件方法中,获取编辑区中当前代码段,循环步骤1012中智能提示元素项,依次比对元素项的值,添加以代码段开头的元素项到需要显示的元素项集合中;
1015-根据步骤1014中元素项集合,绘制自动提示菜单选择框。
作为优选,103所述的自定义方法执行具体步骤如下:
1031-创建JavaScript类库实例对象context;
1032-创建脚本扩展方法引擎实例对象;
1033-设置context参数,扩展C#自定义方法:
1034-调用context对象方法,执行脚本代码。
作为优选,1032所述的脚本扩展方法引擎具体步骤如下:
10321-引入.net类库和第三方类库;
10322-采用C#语法,调用其余类库方法,进行二次加工处理,实现需要的功能方法;
10323-按功能进行方法分类,实现不同的功能操作模块;
10323-创建一个类,在类中,声明各类操作模块实例对象,作为自定义扩展方法的统一入口;
10324-脚本扩展方法引擎。
作为优选,脚本编辑器采用.NET Framework 4.0框架,通过C#编程实现。
作为优选,脚本编辑器全部文本的渲染通过GDI+接口实现。
本发明的有益效果如下:
1.支持16种文本样式高亮度显示,增加脚本可读性;
2.基于GDI+实现,支持代码智能补全,实现调用C#方法时自动补全;
3.利用JavaScript引擎(专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中,这里是Noesis.Javascript.dll,是对Google's V8 JavaScript Engine的封装),实现JavaScript脚本直接在.net环境下运行,从而完美支持脚本中调用C#方法;
4. 支持复杂结果集的图形化预览;
5.支持把脚本编译为动态链接库DLL。
附图说明
图1为脚本编辑器技术架构示意图;
图2为脚本编辑器主要特点示意图;
图3为扩展自定义方法流程图;
图4为代码智能补全流程图;
图5为自定义方法执行流程图;
图6为脚本扩展方法引擎流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
如图1所示,脚本编辑器技术架构示意图,具体内容如下;
101-采用.NET Framework 4.0框架(Windows 组件,很多基于此架构的程序需要它的支持才能够运行),通过C#编程实现;也可以是.net 3.5 或者.net 4.5等版本。
102-全部文本的渲染(输入文本的排版布局、着色处理等),通过GDI+接口实现;
103-使用Noesis.JavaScript开源组件(JavaScript引擎),做到在.net中执行JavaScript脚本,同时JavaScript脚本也能调用C#方法。
104-脚本编辑器,界面包括代码编辑区、调试结果显示区和脚本预览窗口。
如图2所示,脚本编辑器主要特点示意图,具体内容如下;
201-支持16种文本样式高亮度显示,增加脚本可读性,属于104所述的脚本编辑区。
1.定义关键字样式,包含Javascript关键字和自定义关键字。
2.定义配置项样式(脚本分为配置模块和功能模块)。
3.定义XML括号和XML属性样式(配置模块采用XML语法)。
4.定义字符样式、注释样式、数字样式。
202-代码智能补全,支持JavaScript关键字和C#方法智能提示功能,属于104所述的脚本编辑区。
203-Javascript脚本,支持C#方法调用,属于104所述的脚本编辑区。
使用Noesis.JavaScript开源组件,实现在.net中执行JavaScript脚本,同时在Javascript脚本调用C#方法。C#方法中,可以对其它语言类库方法进行调用,从而支持C、C++和Java等编程语言,如图3所示。
204-书签功能,属于104所述的脚本编辑区,现有技术。
1.当前编辑行,添加、删除书签。
2.菜单栏,“书签”选项,可以根据添加的书签进行向前或向后导航操作(支持快捷键)。
3.菜单栏,“书签”选项,删除全部书签(支持快捷键)。
205-录制宏,属于104所述的脚本编辑区,现有技术。
1.单击功能栏“录制宏”按钮(Ctrl+M),开始宏录制,输入光标快速闪烁,单击鼠标结束宏录制。
2.单击功能栏“执行宏”按钮(Ctrl+Shift+M),在输入光标所在位置,插入录制的宏。
206-预览,属于104所述的调试结果显示区和脚本预览窗口。
1.单击功能栏“运行”按钮(F5),执行脚本,结果集通过弹出框方式进行预览,完美的支持树形结构数据的呈现。
2.通过Log(msg),在调试结果显示区打印输出,方便对脚本进行调试。
207-脚本编译,属于104所述的调试结果显示区。
1.将编写好的脚本(采用Javascript语法,结合C#方法)翻译成标准的C#语句,保存到文件。
2.利用.net框架所提供的类库,对文件进行编译,生成DLL类库。
3.编译结果显示在调试结果显示区(成功或失败信息)。
如图3所示,扩展自定义方法流程图,具体方法如下:
101-在代码编辑区,输入关键字片段,根据智能提示,完成自定义扩展方法的输入。具体代码智能补全流程见图4。
102-点击运行按钮(F5),根据代码编辑区显示文本,获取标准的脚本代码(content),括号内容可以替换。
103-脚本执行控制引擎,接收步骤102传入的content,使用Noesis.JavaScript开源组件,执行JavaScript脚本和自定义扩展代码,返回结果数据。自定义扩展代码执行流程见图5。
104-返回结果数据,利用解析组件进行数据解析,最后呈现到界面。
如图4所示,代码智能补全流程图,具体方法如下:
1011-定义XML文件,存储元素项列表。每个元素项(item),包含属性:关键字(key)、元素值(value)、类型(type)、描述(desc)、子项集合(items)。加载XML文件到内存中。
1012-根据元素项类型,加载不同类型的智能提示元素项(sourceItems)。
1013-当输入某个字符后,触发KeyPressEventHandler事件。
1014-在步骤1013中的事件方法中,获取编辑区中当前代码段,循环步骤1012中sourceItems,依次比对元素项的值,添加以代码段开头的元素项到需要显示的元素项集合中(visibleItems)。
1015-根据步骤1014中visibleItems,绘制自动提示菜单选择框。
如图5所示,自定义方法执行流程图,具体方法如下:
1031-创建Javascript类库实例对象(context)
a.添加引用Noesis.JavaScript.dll;using Noesis.JavaScript。
b.创建实例对象,JavaScriptContext context = new JavaScriptContext(),用于C#方法的扩展和执行脚本。
1032-创建脚本扩展方法引擎实例对象,所有自定义扩展方法入口,具体实现流程见图6:Debug调试模块;Convert数据转换模块;File文件操作模块;Sqlite数据库操作模块;PList(BPList)文件读取模块。
1033-设置context参数,扩展C#自定义方法。context.SetParameter(“XLY”,xlyEngine)。
1034-调用context对象方法,执行脚本代码。context.Run(content),context 可替换,content为编辑器中脚本代码字符串。
如图6所示,脚本扩展方法引擎流程图,具体方法如下:
10321-通过引入.net类库和第三方类库,可以扩展多种语言实现的方法。
10322-采用C#语法,调用.net、C、C++、java等类库方法,进行二次加工处理,实现需要的功能方法。
10323-按功能进行方法分类,实现不同的功能操作模块。比如Sqlite数据库操作模块,负责分析恢复删除数据(使用C++编写的类库)、查询sqlite数据库操作。
10323-创建一个类,在类中,声明各类操作模块实例对象,作为自定义扩展方法的统一入口。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

Claims (9)

1.一种基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,包括:代码智能补全单元,用于支持JavaScript关键字和C#方法智能提示;JavaScript脚本单元,用于支持C#方法调用;预览单元,用于将结果集通过弹出框方式进行预览;脚本编译单元,用于将编写好的脚本翻译成标准的C#语句,保存到文件,并利用.net框架所提供的类库,对文件进行编译,生成DLL类库。
2.根据权利要求1所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,还包括:高亮度显示单元,用于增加脚本可读性;书签功能单元,用于添加和删除书签;录制宏单元,用于宏的录制和执行。
3.根据权利要求1或2所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,脚本编辑器的界面包括代码编辑区、调试结果显示区和脚本预览窗口。
4.根据权利要求1所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,扩展自定义方法具体步骤如下:
101-在代码编辑区,输入关键字片段,根据智能提示,输入自定义扩展方法;
102-点击运行按钮,根据代码编辑区显示文本,获取标准的脚本代码;
103-脚本执行控制引擎,接收步骤102传入的脚本代码,使用Noesis.JavaScript开源组件,执行JavaScript脚本和自定义扩展代码,返回结果数据;
104-返回结果数据,利用解析组件进行数据解析,呈现到界面。
5.根据权利要求4所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,101所述的代码智能补全具体步骤如下:
1011-定义XML文件,存储元素项列表,加载XML文件到内存中;
1012-根据元素项类型,加载不同类型的智能提示元素项;
1013-当输入某个字符后,触发Key Press Event Handler事件;
1014-在步骤1013中的事件方法中,获取编辑区中当前代码段,循环步骤1012中智能提示元素项,依次比对元素项的值,添加以代码段开头的元素项到需要显示的元素项集合中;
1015-根据步骤1014中元素项集合,绘制自动提示菜单选择框。
6.根据权利要求4或5所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,103所述的自定义方法执行具体步骤如下:
1031-创建JavaScript类库实例对象context;
1032-创建脚本扩展方法引擎实例对象; 
1033-设置context参数,扩展C#自定义方法:
1034-调用context对象方法,执行脚本代码。
7.根据权利要求6所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,1032所述的脚本扩展方法引擎具体步骤如下:
10321-引入.net类库和第三方类库;
10322-采用C#语法,调用其余类库方法,进行二次加工处理,实现需要的功能方法;
10323-按功能进行方法分类,实现不同的功能操作模块;
10323-创建一个类,在类中,声明各类操作模块实例对象,作为自定义扩展方法的统一入口。
8.根据权利要求1所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,脚本编辑器采用.NET Framework 4.0框架,通过C#编程实现。
9.根据权利要求8所述的基于GDI+实现的结合C#类库的JavaScript脚本编辑器,其特征在于,脚本编辑器全部文本的渲染通过GDI+接口实现。
CN201510154601.2A 2015-04-03 2015-04-03 基于GDI+实现的结合C#类库的JavaScript脚本编辑器 Pending CN104699519A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510154601.2A CN104699519A (zh) 2015-04-03 2015-04-03 基于GDI+实现的结合C#类库的JavaScript脚本编辑器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510154601.2A CN104699519A (zh) 2015-04-03 2015-04-03 基于GDI+实现的结合C#类库的JavaScript脚本编辑器

Publications (1)

Publication Number Publication Date
CN104699519A true CN104699519A (zh) 2015-06-10

Family

ID=53346685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510154601.2A Pending CN104699519A (zh) 2015-04-03 2015-04-03 基于GDI+实现的结合C#类库的JavaScript脚本编辑器

Country Status (1)

Country Link
CN (1) CN104699519A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739983A (zh) * 2016-01-29 2016-07-06 腾讯科技(深圳)有限公司 脚本程序编辑装置及其实现方法
CN106951261A (zh) * 2017-03-27 2017-07-14 武汉斗鱼网络科技有限公司 数据管理方法及装置
CN107133029A (zh) * 2017-03-30 2017-09-05 武汉斗鱼网络科技有限公司 个性化组件实现方法及装置
CN108255709A (zh) * 2017-12-26 2018-07-06 平安壹钱包电子商务有限公司 脚本测试代码编写的方法、装置、终端设备及存储介质
CN111104154A (zh) * 2018-10-25 2020-05-05 长沙博为软件技术股份有限公司 一种基于数据处理服务实现大数据采集系统脚本功能扩展和定制的方法
CN117193739A (zh) * 2023-11-03 2023-12-08 建信金融科技有限责任公司 一种脚本编辑方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101071374A (zh) * 2007-03-30 2007-11-14 腾讯科技(深圳)有限公司 一种视窗系统及其界面编辑方法
CN104142830A (zh) * 2014-08-11 2014-11-12 四川效率源信息安全技术有限责任公司 通过脚本插件技术提取智能手机应用数据的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101071374A (zh) * 2007-03-30 2007-11-14 腾讯科技(深圳)有限公司 一种视窗系统及其界面编辑方法
CN104142830A (zh) * 2014-08-11 2014-11-12 四川效率源信息安全技术有限责任公司 通过脚本插件技术提取智能手机应用数据的方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CONMAJIA: ""功能强大 纯GDI+渲染的语法高亮编辑器控件支持折叠、书签和代码缩略图等各种高级功能"", 《HTTP://BBS.CSDN.NET/TOPICS/390835080》 *
LHFLY: ""C#使用技巧之调用JS脚本方法一"", 《HTTP://WWW.CNBLOGS.COM/XDPXYXY/ARCHIVE/2013/06/11/3132097.HTML》 *
TOMTC123: ""Notepad++ 使用技巧之关键字高亮、自动补全"", 《HTTP://BLOG.CSDN.NET/TOMTC123/ARTICLE/DETAILS/8765645》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105739983A (zh) * 2016-01-29 2016-07-06 腾讯科技(深圳)有限公司 脚本程序编辑装置及其实现方法
CN105739983B (zh) * 2016-01-29 2019-03-15 腾讯科技(深圳)有限公司 脚本程序编辑装置及其实现方法
CN106951261A (zh) * 2017-03-27 2017-07-14 武汉斗鱼网络科技有限公司 数据管理方法及装置
CN107133029A (zh) * 2017-03-30 2017-09-05 武汉斗鱼网络科技有限公司 个性化组件实现方法及装置
WO2018176814A1 (zh) * 2017-03-30 2018-10-04 武汉斗鱼网络科技有限公司 个性化组件实现方法及装置
CN108255709A (zh) * 2017-12-26 2018-07-06 平安壹钱包电子商务有限公司 脚本测试代码编写的方法、装置、终端设备及存储介质
CN111104154A (zh) * 2018-10-25 2020-05-05 长沙博为软件技术股份有限公司 一种基于数据处理服务实现大数据采集系统脚本功能扩展和定制的方法
CN117193739A (zh) * 2023-11-03 2023-12-08 建信金融科技有限责任公司 一种脚本编辑方法和装置

Similar Documents

Publication Publication Date Title
CN104699519A (zh) 基于GDI+实现的结合C#类库的JavaScript脚本编辑器
CN108664245B (zh) 一种基于json自描述结构的网页界面生成方法及装置
US8392886B2 (en) System, program product, and methods to enable visual recording and editing of test automation scenarios for web application
CN102819492B (zh) 一种基于Android的关键字驱动自动化测试框架
US10437574B2 (en) System and method for providing code completion features for code modules
CN106021257A (zh) 一种支持在线编程的爬虫抓取数据方法、装置及系统
CN103064720A (zh) 简档导向的jit代码生成
JP2012512489A (ja) デバッギングのためのユーザ・スクリプト・コードの変換
CN112083920A (zh) 一种前端页面设计方法、装置、存储介质及设备
Bolin Closure: The definitive guide: Google tools to add power to your JavaScript
CN113158651A (zh) Web服务器系统以及演示应用生成方法
CN114564199A (zh) 一种生成使用页面的方法、装置、设备及可读存储介质
CN106843996A (zh) 条件编译预处理方法和装置
Chowdhury Mastering Visual Studio 2017
JP2018156133A (ja) コンパイラプログラム、情報処理装置およびコンパイル方法
CN109086040A (zh) 一种快速生成html代码的方法和系统
Barton et al. Dynamic and graphical web page breakpoints
US20230195825A1 (en) Browser extension with automation testing support
Oliveira pytest Quick Start Guide: Write better Python code with simple and maintainable tests
CN115407997A (zh) 基于低代码的敏捷开发应用方法及系统
Béziers la Fosse et al. Injecting execution traces into a model-driven framework for program analysis
CN103116514A (zh) 基于系统扩展调用图的操作系统自动优化方法和系统
Navarro et al. OHT: Open and cross-platform GUI testing
CN113126979B (zh) 一种脱离服务器可二次编程的可视化业务搭建系统
CN102236546B (zh) 搜寻互动元素以执行对应脚本的系统及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 641000 Sichuan province Neijiang City Songshan Road No. 183

Applicant after: SICHUAN XLY INFORMATION SAFETY TECHNOLOGY CO., LTD.

Address before: 641000 Sichuan province Neijiang City Songshan Road No. 183

Applicant before: Sichuan SalvationData Information Safety Technology Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Liang Xiaoning

Inventor after: Gan Yuanjun

Inventor before: Liang Xiaoning

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150610