当Blogでも利用しております、MovableTypeではてな記法(やその他)を使えるようにするプラグイン、mt-sukeroku2 β3は、MovableType5では不具合があるようで、文の冒頭が全角空白で始まっている場合に整形されなくなってしまうようです(半角空白で始まっている場合に効かなくなるのは「整形済みテキスト」記法なので、仕様です)。
今回、対策用のパッチを作ってみましたのでおいておきます。内容は正規表現の中の「\s」を「 」(半角空白そのもの)に置き換えただけです。
以下のパッチをEUCで保存して当てて下さい。これくらいなら手動でもいい気がしますけれど。
=== modified file 'extlib/Text/Sukeroku/HatenaDiary.pm'
--- extlib/Text/Sukeroku/HatenaDiary.pm 2010-03-07 06:49:17 +0000
+++ extlib/Text/Sukeroku/HatenaDiary.pm 2010-03-07 07:32:46 +0000
@@ -174,7 +174,7 @@
# スタックを吐き出す
push(@result, splice(@saved));
# 空白文字ではじまり、整形テキスト出力でないなら<p></p>付加
- if (/^\s+/) {
+ if (/^ +/) {
($modeParagraph == 1 &&
$modePreLevel != 1) ? push(@result, $self->html->inlineElement('p', $_, ()))
: push(@result, ($_));
=== modified file 'extlib/Text/Sukeroku/PukiWiki.pm'
--- extlib/Text/Sukeroku/PukiWiki.pm 2010-03-07 06:49:17 +0000
+++ extlib/Text/Sukeroku/PukiWiki.pm 2010-03-07 07:34:16 +0000
@@ -129,7 +129,7 @@
push(@result, "<p>");
}
# 整形済みテキスト
- elsif (/^\s(.*)$/) {
+ elsif (/^ (.*)$/) {
$self->backPush('pre', 1, \@saved, \@result, ());
push(@result, $self->html->escape($1));
}
@@ -166,7 +166,7 @@
$self->backPush('table', 1, \@saved, \@result, ());
my $tmp = "$1,";
my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); # ";
- my @align = map {(s/^\s+//) ?1);
}
# 整形済みテキスト
- elsif (/^\s(.*)$/) {
+ elsif (/^ (.*)$/) {
$self->backPush('pre', 1, \@saved, \@result, ());
push(@result, $self->html->escape($1)); # Not &$func_inline, but &escape
}
@@ -103,7 +103,7 @@
$self->backPush('table', 1, \@saved, \@result, ());
my $tmp = "$1,";
my @value = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); # "
- my @align = map {(s/^\s+//) ? ((s/\s+$//) ? ' align="center"' : ' align="right"') : ''} @value;
+ my @align = map {(s/^ +//) ? ((s/ +$//) ? ' align="center"' : ' align="right"') : ''} @value;
my @colspan = map {($_ eq '==') ? 0 : 1} @value;
for (my $i = 0; $i < @value; $i++) {
if ($colspan[$i]) {
■「\s」に全角空白にヒットするか?
ネットでちまちま検索してみたところ、メタ文字「\s」に全角空白はヒットしないようですし、このプラグインを無理やりコマンドラインから叩いてみてもやっぱりヒットしませんでした。
が、なぜかMT5内から呼ばれると全角にもヒットするようになり、当Blogのように段落の冒頭に全角空白を入れてる場合、ほとんどのテキストが整形されなくなってしまうようです。
よくわかんないや。まあ動いたから良いや。
- s/\s+$//) ? ' align="center"' : ' align="right"') : ''} @value; + my @align = map {(s/^ +//) ? ((s/ +$//) ? ' align="center"' : ' align="right"') : ''} @value; my @colspan = map {($_ eq '==') ? 0 : 1} @value; for (my $i = 0; $i < @value; $i++) { if ($colspan[$i]) { === modified file 'extlib/Text/Sukeroku/YukiWiki.pm' --- extlib/Text/Sukeroku/YukiWiki.pm 2010-03-07 06:49:17 +0000 +++ extlib/Text/Sukeroku/YukiWiki.pm 2010-03-07 07:34:25 +0000 @@ -93,7 +93,7 @@ push(@result, $self->html->openElement('p',( [↩]