sublime中的cocos-js代码提示

来源:互联网 发布:服务器负载监控软件 编辑:程序博客网 时间:2024/05/22 05:16

一、开干

这篇文章是承接着《sublime上的JS代码提示2—api》这篇文章来的,主要生成的是cocos-js的代码提示。
和之前的不同主要是源文件还有正则表达式的匹配模式不同。

可以看到源文件是一些jsb开头的文件,这些文件位于cocos2d_js_bindings工程下:

这个工程是cocos代码导入到js中的地方。
然后我们随便选择一个文件,就拿jsb_cocos2dx_auto.cpp这个文件开刀吧,
打开这个文件后,我们选择如下的一块代码:

这里就是cocos转js的地方,所以我们的匹配也应该在这里下手,下面是我写的匹配模式:

m = re.match("^\s+JS_FN\(\"(\w+)",line)

然后我们就可以找到我们需要的函数提示啦!


二、工具代码

#!/usr/bin/env python # -*- coding: utf-8 -*- import os;import sys;import shutil;import reSOURCE_DIR = "source"GENERATE_DIR = "generate"snippetTemplate = """<snippet>    <content><![CDATA[$content]]></content>    <tabTrigger>$trigger</tabTrigger>    <scope>source.js</scope>    <description>$desc</description></snippet>"""# 解析cppdef parseCpp(_src,_dst):    for name in os.listdir(_src):        __src_path = _src + "/" + name        __dst_name = os.path.splitext(name)[0]        __dst_path = _dst + "/" + __dst_name        if os.path.isfile(__src_path):            parseFile(__src_path,__dst_path)# 解析文件def parseFile(_file,_dst):    print "start parseFile name:"+_file    print "generate dst:" + _dst    if not os.path.exists(_dst):        os.makedirs(_dst)    f=open(_file,"r")    for line in f.readlines():        # m = re.match("^\s+JS_FN\(\"(\w+)\"$",line)        m = re.match("^\s+JS_FN\(\"(\w+)",line)        if m:            generateSnippetFile(_dst,m.group(1))    f.close()    print "end parseFile name:"+_file    print "\n"# 生成代码提示文件def generateSnippetFile(_dst,_content):    print "generateSnippetFile content:"+_content    template=snippetTemplate.replace("$content",_content)    template=template.replace("$trigger",_content)    template=template.replace("$desc",_content)    __save_name = _dst + "/" + _content + ".sublime-snippet"    f=open(__save_name, "w+")    f.write(template)    f.close()# 清空保存目录下的文件def deleteFiles(_path):    print "start deleteFiles path:"+_path    for name in os.listdir(_path):        full_path = _path + "/" + name        if os.path.isdir(full_path):            shutil.rmtree(full_path)        elif os.path.isfile(full_path):            try:                os.remove(full_path)            except Exception,e:                pass    print "deleteFiles end!!!"if __name__ == '__main__':    # 1.跳转到当前目录    os.chdir(sys.path[0])    # 2.清空生成目录    deleteFiles(GENERATE_DIR)    # 3.开始解析生成js文件    parseCpp(SOURCE_DIR,GENERATE_DIR)

三、售后

下载地址:
http://download.csdn.net/detail/wade333777/9544760

0 0
原创粉丝点击