Nucleusでは、編集画面で入力した改行は全て<br />タグに変換されます。
しかし、<pre>タグや<table>タグなどを使う場合には、間に<br />タグが入ってしまうと都合の悪いことも多々あります。
そんな時に役立つのが、NP_StripBRで、<%nobr%>と<%/nobr%>で囲った範囲に<br />タグを入れないようにしてくれます。
ところが、例えば<div>タグの前後に改行を入れたくない場合というのが結構あります。
前はいいのですが、特に後ろに改行が入ってしまうと、<div>のボックスと次の行の間に1行空いてしまうからです。
その場合、通常は次のように書きます。
This is a pen.</div>ふがふが
あるいは、NP_StripBRを使った場合は次のように書けます。
<%/nobr%><div class="english">What is this ?
This is a pen.</div><%nobr%>
<%/nobr%>ふがふが
しかしどちらも見づらく、あまり美しくありません。
そこで、<%nobr/%>というのを作ってみました。
これは、このタグの直後に現れる改行を消すというものです。
先ほどの例ですと、
<div class="english">What is this ?
This is a pen.</div><%nobr/%>
ふがふが
といったように書けるようになります。
これでどれくらい嬉しくなるのか、人によると思いますが、ひとまずソースを公開しますので、使いたい方は使ってみて下さい。
// plugin needs to work on Nucleus versions <=2.0 as well
if (!function_exists('sql_table')) {
function sql_table($name) {
return 'nucleus_' . $name;
}
}
class NP_StripBR extends NucleusPlugin {
function getName() { return 'StripBR'; }
function getAuthor() { return 'IWAMA Kazuhiko / yuuAn'; }
function getURL() { return 'https://www.yuuan.net/blog/index.php?itemid=622'; }
function getVersion() { return '0.011'; }
function getDescription() {
return 'Remove linebreaks';
}
function getEventList() {
return array('PreItem');
}
function supportsFeature($what) {
switch ($what) {
case 'SqlTablePrefix':
return 1;
default:
return 0;
}
}
function replaceCallback($matches) {
return removeBreaks($matches[1]);
}
function event_PreItem($data) {
$this->currentItem = &$data["item"];
// <%nobr%>-<%/nobr%>
$this->currentItem->body = preg_replace_callback(
'#<%nobr%>(.*?)<%/nobr%>#s',
array(&$this, 'replaceCallback'),
$this->currentItem->body
);
$this->currentItem->more = preg_replace_callback(
'#<%nobr%>(.*?)<%/nobr%>#s',
array(&$this, 'replaceCallback'),
$this->currentItem->more
);
// <%nobr/%>
$this->currentItem->body = preg_replace(
'#<%nobr/%>(:?<br />)?#s',
'',
$this->currentItem->body
);
$this->currentItem->more = preg_replace(
'#<%nobr/%>(:?<br />)?#s',
'',
$this->currentItem->more
);
}
}
?>
赤字の部分が今回改変した部分です。
割と簡単なコードなので、興味がある方は自己流にアレンジしてみるといいと思います。
■ 追記
GitHubで公開しました。