05/25

XPath検索バー (for Mozilla/Firefox)

XPath 式エディタを見た僕は、 時代はXPath(邦訳)だと直感し(遅い)、とは言ってもXPathのことはほとんど知らないので勉強もかねて、HTMLドキュメント内のノードをXPathで検索するスクリプトを作ってみました。Mozilla/Firefox用です。

XPath Finder Screenshot

ソースはこちら: XPathFinder.js

呼び出し方は30秒ほど考えた挙句、bookmarkletによるサーバからのスクリプト読み込みにしてみました。これが一番簡単に試せるので。

bookmarklet: XPath Finder

bookmarkletを起動するとページ上部に検索バーが表示されます。ページの内容と被りますが気にしないでください。 テキスト入力欄にXPath式を入れてEnterか"XPath Search"ボタンを押すと、XPath式に適合するノードを検索してハイライト(背景色を黄色にする)します。

コンテキストノードの初期値はHTMLドキュメント自身になりますが、"use the found node as context node"をクリックするとハイライトされているノードを以降コンテキストノードにします。"always"チェックボックスをチェックすると、ノードが検索されるたびにコンテキストノードにセットされます。つまり".."というXPath式で、階層を上っていくようなことができるわけです。バーの空いた部分(ボタンや入力欄以外)をクリックするか、入力欄でESCを押せばバーは消えます。

結局ほとんどXPathの勉強にはならなかったとか。

03:54 | 8 writeback(s) | (19), (37), (2) | ?B

05/22

プラグインを完全に無効にするプラグイン

blosxomのプラグインは$plugin_dirからファイルを消去する以外にも、ファイル名の後に"_"(アンダーバー)をつけることで無効にできます(ドキュメント)が、何故かstart()だけは必ず実行されるので完全に息の根を止めることができません(例えばwikieditishだったら投稿ができる)。そこでプラグインディレクトリにファイルを入れたままプラグインを無効にするプラグインを書いてみました。ええい、しつこい

000exclude_plugins

これを応用すれば階層別にプラグインを有効・無効にできそう(誰かやってるかな)。

23:51 | 0 writeback(s) | (13), (7) | ?B

05/18

やっぱりXULDocument中ではクッキーにアクセスできないっぽい

そうそう。XULドキュメントだとCookieを保存できないっぽい(DOM Inspectorで覗いてみただけだけど)に関して。

Priority 3

<snip>

Also, provide access to cookies within XUL. (NeilRashbook) Move document.cookie to nsIDOMDocument perhaps? (XUL:Axel Hecht) vlad is going to post something about this, just want to note that we need a good privacy/security story here, if this is supposed to be used widely.

XUL:Neils Wishlist - wiki.mozilla.org

とのことだった。ざーんねん。

03:09 | 0 writeback(s) | (37), (3) | ?B

マークアップabbr

風邪こじらせた。

<abbr>を使ってるサイトがかっこよくて真似してたけど、Markdownに慣れてしまったのか<abbr title="...">...</abbr>と打つのも面倒。Markdownにabbr記法つかねーかなーとか思ってたけど、作ればいいんじゃん。ってことで超簡単なabbrマークアッププラグイン。最初は自動abbrにしてたけどうざいのでやめ。

直感的に
XML(=eXtensible Markup Language) → XML て感じにしてみた。

# Blosxom Plugin: abbr
# Author(s): motormean
# Blosxom Home/Docs/Licensing: http://www.blosxom.com/

package abbr;

use strict;

# --- Configurable variables -----------

my $hack_for_ie  = 0;   # <abbr title=".."><span class="abbr" title="..">abbr</span></abbr>

# --- Plug-in package variables --------

# --------------------------------------

sub start
{
    1;
}

sub story
{
    my($pkg, $path, $fn, $story_ref, $title_ref, $body_ref) = @_;

    $$body_ref =~ s/([A-Za-z0-9]+)\(=([^)]+)\)/do_markup($1, $2)/eg;
    1;
}

sub do_markup
{
    my ($abbr, $title) = @_;

    return qq(<abbr title="$title"><span title="$title" class="abbr">$abbr</span></abbr>) if $hack_for_ie;
    return qq(<abbr title="$title">$abbr</abbr>);
}

1;

IE対策はPiece of a Puzzle - Weblog - IEでabbr要素に対応させるには?を参照ですわー。これが重要なのです。(ほんとかよー)ついでに言うとこのサイトではIE対策してません。

02:00 | 0 writeback(s) | (13), (7) | ?B

05/08

マークアップ済みプレビュー

うちではBlosxom Starter Kitのwikieditishフレーバーを流用してて、これにJavaScriptでのプレビューってのが付いてます。即座にプレビューが見られるので結構便利ぽいんですが、Markdownみたいなマークアッププラグインを使ってる身としてはソースが見えるだけなのでせっかくの便利機能も恩恵を受けることができません。

じゃあ使うな、じゃなくてマークアップ後のプレビューを見るため、プラグインを書いてみました。というかstoryフレーバー適用後の様子をどかっと持ってきます。Ajaxですよ!!(って言うの恥ずかしいな)

preview

bsk使ってる人は、head.wikieditishのスクリプト部分を以下のように書き換えればOKです。

function doPreview() {
$preview::script
}

bsk使ってない人も、id="preview"<DIV>要素作ってやれば動くはずです。Firefox 1.0.3とIE6で確認済み。OperaはsetRequestHeader()に対応してないっぽ。

本家に書いてある通りとんでもない穴を抱えてそうでblosxom本体にアクセスするのでさらにヤバイです。気を付けてください。$passwordに値を設定することでパスワードをかけられるはず。うわあ適当だ。というか、何か恐ろしい副作用がありそうで怖いです。気を付けてください。(適当すぎ)

/test/wiki/(blosxomでwikiっぽくしようとして面倒になってやめた)に設置してるので試したい方はこちらでどうぞ。

23:32 | 2 writeback(s) | (5), (13), (37), (7) | ?B

05/01

Bloglines Sidebar in XUL

Bloglines Sidebar in XUL Screenshot

気が付けば五月に。あまり何もしないのも体が鈍りそう。kyoさんの作ったBloglines SidebarXUL化してみたので置いときますね。

listsubs_xul.cgi

本当はフォルダの開閉をCookieで云々したかったんだけど、どうやらXULドキュメントだとCookieを保存できないっぽい(DOM Inspectorで覗いてみただけだけど)。てことでフォルダ全部開きっぱなしなのは手抜きじゃありません・・よ。

あとサイドバーから新しいタブを開く方法が分かりません。目下捜索中(情報求む)

エラーを吐いてたので修正しました(ひでぇ・・・)。公開するならもっとデバッグしておけ、ですね。はい。他に不具合があったらこっそり教えてください。

21:32 | 4 writeback(s) | (2), (3), (18), (3) | ?B

recent entries

tags

syndication

powered by