[xyzzy]outline-tree2用のJavaScript関数(Class, Method)一覧表示する正規表現
Emacsに乗り換えたいなーと思いながら、やっぱりWindows環境はxyzzyが一番やりやすい。
最近Google Closure Libraryを触っていて、Source Codeを眺めるのが多いので、Object指向っぽいJavaScriptをClass, Methodに分けて階層表示する正規表現を登録してみた。
outline-tree2がInstallされていることが前提。Downloadはこちらから。
試すときはMenuの
Outline-Tree → 「アウトラインツリー設定」で「正規表現リスト」
に登録。その後、階層表示したいFileを
右Click → 正規表現(ダイアログ設定有)
を選択。
思い通りに正規表現が出来たら、
アウトライン作成関数の生成 → 「正規表現」設定から
を選択して、Fileに書き出しておく。xyzzy\.outline-tree\autoloadに出力される。
ちなみに正規表現は下記Siteを参考に。
・・・で、標題のObject指向で書かれたJavaScriptのClassとMethodを表示するための正規表現はこれ。
\(\.[A-Z]+?[a-zA-Z]+\) = function
\(\.prototype\.\)\([_a-zA-Z]+\) = function
ちなみに階層表示できないけど、この正規表現も使う
\([_a-zA-Z]+\) = function
生成されたFileは下記。
;;; -*- Mode: Lisp; Package: OUTLINE-TREE2 -*-
;;; cr-user-regexp-outline-javascript.l --- outline-tree;; Generator: outline-tree-gen-cr-user-regexp
;; Time-stamp: <2011/09/13 23:00:09 +0800>;;; Code:
(require "outline-tree/outline-tree")
(require "outline-tree/cr-regexp-internal")(in-package "outline-tree2")
;; definition
(defun outline-tree-create-outline-user-regexp-outline-javascript (root-node)
(outline-tree-create-outline-regexp-internal
:root-node root-node
:layer-regexp-list-order :non-miss
:layer-regexp-list '("\\(\\.[A-Z]+?[a-zA-Z]+\\) = function" "\\(\\.prototype\\.\\)\\([_a-zA-Z]+\\) = function")
:layer-regexp-list-case-fold nil
:sub-type :heading-node
:line-oriented nil
:title-converter nil))
;; register
(outline-tree-add-create-outline-function
'outline-tree-create-outline-user-regexp-outline-javascript "* user : javascript-oo" '(:user :sequential)
"Class, Method list for Object Oriented Javascript");;; cr-user-regexp-outline-javascript.l ends here
このように表示されるようになる。
ちなみにGoogleのCoding規約に従って書いているつもり。
Google JavaScript Style Guide (日本語版)
< Related Posts >