javascriptもよく分からず LDRize を読むという横暴
ちゃんとやってなかったけど、グレモン関係でちょこっと調べたいので autopager/ldrize を読んでみる:
クラス定義
http://d.hatena.ne.jp/amachang/20060516/1147778600
ふむ、いろいろやり方があるらしいが、
function Test() {} Test.prototype.hello = function(){ alert("hoge");};
ってなかんじでクラスを作っていけばいいらしい。コンストラクタを使うときは、
function Test() { this.initialize.apply(this, arguments); } Test.prototype.initialize = function(v){ this.v = v; }; Test.prototype.hello = function(){ alert(this.v);}; var t = new Test("asdf"); t.hello();
あるいは JSON 的に、
function Test() { this.initialize.apply(this, arguments); }; Test.prototype = { initialize: function(v) { this.v = v;}, hello: function() { alert(this.v);} };
ldrize
このぐらいの知識で読もうとするとはなんたる横暴。
設定
まず const:
- SITEINFO = []; 個々のサイトの情報:パラグラフ認識とか
- KEYBIND = {'j': 'Next'....} キーアサイン
- SITEINFO_URLS = [] siteinfo を読んでくる url たち
LDRize
var LDRize = new Class(); LDRize.prototype = { ...: ...
Class はすぐ上で initialize.apply() をやるように定義してある。
JSON 式に paragraphes: {}, siteinfo_all: , keybinds: , html: {} などを宣言。
LDRize::initialize()
コンストラクタ。
- 最初に this.siteinfo_all に arguments[0] を代入?
- window.LDRize に get/setSiteinfo, get/setinfoByName をセット。外から呼べるようにするため?
- initSiteinfo(), initParagraph(), initLDRize(), initShortcutkey() などで初期化
- initShortcutkey(): KEYBIND{} に従い window.Minibuffer.addShortcutkey({key: key, command: cmd, description: de}) でminibuffer のショートカットに登録
- initMinibuffer(): pinned-link, current-node などのコマンドを window.Minibuffer.addCommand に登録。
- initParagraph: xpath を this.getSiteinfo()['paragraph'] でとってきてthis.paragraphs[xpath].setContext(pages).collect() する。。。。このところがよく分からん。どうやら xpath に対応するParagraphsインスタンスが入っている(入る)らしい
- initHTML: ...$N() って何?
commands
- bindNext, bindPrev, bindPin, bindOpen
Paragraphes class
-
- collect
- setContext
- select
- getNext/Prev
Paragraph class
-
- set/getOffset
- XPath