VimでCocos2d-JSのコードを補完する
仕事がせわしなく、ざっと一月半更新が空いてしまいました…。
ここのところ必要に迫られて各種アプリフレームワークを調査しているのですが、いろいろ見ている中でもCocos2d-xは完成度が高く、オープンソースでもあるため本命感がただよっています。しかし例によってVimで補完が効かないため、コードを書くのがちょっと面倒です。
ということで、Vimの補完用にCocos2d-xのキーワード辞書を作ってみることにします。さしあたってはJavaScriptで手軽に実装するつもりなので、Cocos2d-xのJavaScript版であるCocos2d-JS向けの辞書を作成します。
Cocos2d-JSのキーワード抽出方法
Cocos2d-JSのキーワードは、最新版であるv3.6のAPIリファレンスページから抽出することにします。
具体的には、PythonでAPIリファレンスのHTMLをダウンロードし、左側のクラス一覧からクラス名と各クラスのページへのリンクを、各クラスのページからそれぞれのメンバ名を抜き出します。
キーワード抽出スクリプト
それほど難しいことはしていないので、いきなりスクリプト全文です。
SYMBOL_PATTERN
とMEMBER_PATTERN
の2種類の正規表現でそれぞれクラス名とメンバ名を検索しています。
import urllib.request import re BASE_URL = 'http://www.cocos2d-x.org/reference/html5-js/V3.6/' INDEX_URL = BASE_URL + 'index.html' SYMBOL_URL = BASE_URL + 'symbols/{0}.html' SYMBOL_PATTERN = r'href="symbols/(.*?)\.html"' MEMBER_PATTERN = r'id="(.*?)"' PREFIXES = ['.', 'cc.', 'ccs.', 'ccui.', 'jsb.', 'sp.'] EXCLUSIONS = ['MethodsList', 'MethodsListInherited', 'constructor', 'MethodDetail'] FILENAME = 'cocos2d-js.dict' def download_html(url): response = urllib.request.urlopen(url) html = response.read() return html.decode() def get_symbols(): html = download_html(INDEX_URL) symbols = re.findall(SYMBOL_PATTERN, html) return symbols def get_members(symbol): html = download_html(SYMBOL_URL.format(symbol)) members = re.findall(MEMBER_PATTERN, html) return members def trim_keyword(keyword): for prefix in PREFIXES: if keyword.startswith(prefix): return keyword[len(prefix):] return keyword def get_keywords(): keywords = set() symbols = get_symbols() for symbol in symbols: print('analyze:', symbol) keywords.add(trim_keyword(symbol)) members = get_members(symbol) for member in members: keywords.add(trim_keyword(member)) for exclusion in EXCLUSIONS: if exclusion in keywords: keywords.remove(exclusion) keywords = list(keywords) keywords.sort() return keywords def write_keywords(): keywords = get_keywords() with open(FILENAME, 'w') as file: for keyword in keywords: file.write(keyword) file.write('\n') if __name__ == '__main__': write_keywords()
余談ですが初めてPython3を使いました。まだ慣れないな。
Cocos2d-JS辞書ファイル
実際に作成した辞書ファイルはこちらに置いておきました。
(追記:その後Ruby版に切り替えたため、そちらへのリンクに変更しました) github.com
後はVimの補完設定に合わせて辞書ファイルを登録すれば作業完了です。
開発の準備ができたので、早速Cocos2d-JSを使ってみようと思います。