mt-sukeroku2 β3のMT5における不具合を修正する

Posted on

 当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のように段落の冒頭に全角空白を入れてる場合、ほとんどのテキストが整形されなくなってしまうようです。

 よくわかんないや。まあ動いたから良いや。

  1. 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',( []

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください