ホーム >> 左脳Script >> Movable Type >> Plugin開発 >> Tag 整形 コード表示用 Plugin

Tag 整形 コード表示用 Plugin


マークアップコードを構築時に整形するタグを作ってみました。

Movable Type で、記事を書く際に、マークアップのコード(HTMLやXML等)は整形しないと表示が消えたり、おかしくなったりします。コードの仕様上どうしようもない事でもありますが。

また、ブログのエディタにはコレを整形する機能がありますが、整形後のテキストは見れた物ではありません。むしろ、見る気を萎えさせるナニかを持っています。

そこで「記事の編集&メンテ時に、マークアップのままで管理が出来るような物がアレば、楽になるだろう」と考えた訳です。


easyTag for "easy maintenance of mark up code"
pt0.PNG
<MTPreTag>~</MTPreTag> で括られた部分は、"<"、">"を主に整形して、<pre>タグで括った形に変換されます。tab に対応し、<MTPreTag tab="~" >でタブ幅を指定できます。デフォルトは4文字。1を指定すれば、tab が単なるスペース扱いになります。

<textarea> でコードを表示していた場合は、そのまま<MTPreTag>に置き換える事が出来ます。


以下、作ったプラグインにて早速コード表示。


package MT::Plugin::PreTag;

use strict;
use MT;

use MT::Template::Context;

use vars qw($VERSION @ISA);

@ISA = qw(MT::Plugin);
$VERSION = '0.01';

my $plugin = new MT::Plugin::PreTag({
  name => 'easyTag for "easy maintenance of mark up code"',
  version => $VERSION,
  description => 'easyTag for "easy maintenance of mark up code"',
  author_name => 'N-yagi',
  author_link => 'http://n-yagi.0r2.net/script/',
#  doc_link => 'http://www.example.com/docs/',
});
MT->add_plugin($plugin);

MT::Template::Context->add_container_tag(PreTag => \&pretag);

sub pretag
{
    my  ($ctx,$args,$cond)  =   @_;
    my  $builder    =   $ctx->stash('builder');
    my  $tokens     =   $ctx->stash('tokens');
    #   tab parameter
    my  $tabWidth   =   4;
    if( $args->{'tab'})
    {
        $tabWidth   =   $args->{'tab'};
    }
    #
    my  $out    =   $builder->build($ctx,$tokens,$cond);
    #
    return $ctx->error ($builder->errstr) if !defined $out;
    #   tab
    my  @lines  =   ();
    @lines  =   split(/\x0D\x0A|[\x0D\x0A]/,$out);
    $out    =   '';
    foreach my $line (@lines)
    {
        my  $res    =   '';
        my  $top    =   0;
        foreach my $ch (split /\t/, $line)
        {
            if( $top>0  )
            {
                my  $l  =   $tabWidth -(length($res) % $tabWidth);
                while(  $l--    )
                {
                    $res    .=  ' ';
                }
            }
            $top    =   1;
            $res    .=  $ch;
        }
        $out    .=  $res."\n";
    }
    #   for HTML
    $out    =~ s/&/&amp;/g;
    #   for TAG
    $out    =~ s/</&lt;/g;
    $out    =~ s/>/&gt;/g;
    '<div class="PreTag"><pre><code>'.$out.'</code></pre></div>';
}

1;


簡単に、スタイルなど。

div.PreTag{
background-color:#e0f0f0;
color:black;
overflow:auto;
border: 1px black solid;
}


注意)このタグは HTMLモードのみで使用して下さい。Movable Type のエディタの仕様上、一度でもリッチテキスト等にすると、マークアップコードの部分が勝手に整形されてしまいます。



トラックバック(1)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/22

マークアップコードは、そのまま<pre><code>で括っても、正しく表示されません。それを、">ソースをそのままに mtプラグイ... 続きを読む

コメント(1)

コメントする

ホーム >> 左脳Script >> Movable Type >> Plugin開発 >> Tag 整形 コード表示用 Plugin

アーカイブ

このブログ記事について

このページは、n-yagiが2009年4月24日 22:09に書いたブログ記事です。

ひとつ前のブログ記事は「Perl 嵌りメモ」です。

次のブログ記事は「404 Not Found! ページ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。