[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 → 正規表現(ダイアログ設定有)
を選択。

image

image

思い通りに正規表現が出来たら、
アウトライン作成関数の生成 → 「正規表現」設定から
を選択して、Fileに書き出しておく。xyzzy\.outline-tree\autoloadに出力される。

ちなみに正規表現は下記Siteを参考に。

正規表現の表記 - refwiki

・・・で、標題の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

 

このように表示されるようになる。

image

ちなみにGoogleのCoding規約に従って書いているつもり。

Google JavaScript Style Guide日本語版

 

< Related Posts >

【xyzzy】【outline-tree2】PHP用マクロ