狐の王国


2007年02月28日(水) [過去の今日]

#4 HTMLコマンドがあればいいじゃないか

なんかいろいろコマンド作ってて虚しくなって来た。そもそもHTMLを直接張り付けられるコマンドがあればいいのだ。

というわけで、Command.pmとDiary.pmをRTコマンドの実装を参考にいじくってみた。

--- Diary.pm.orig	2007-03-01 05:46:43.000000000 +0900
+++ Diary.pm	2007-03-01 05:56:09.000000000 +0900
@@ -44,7 +44,7 @@
 use vars qw(%Head %Foot);
 use vars qw($BaseTemplate $NameTemplate $HrefTemplate
 	    %BaseTemplate %NameTemplate %HrefTemplate);	# HNS::Diary::Template
-use vars qw($RTMode @RTBuf);		
+use vars qw($RTMode @RTBuf $HTMLMode @HTMLBuf);		
 use vars qw($YoteiHead $YoteiVal $YoteiFoot);
 @ISA = qw(ObjectTemplate HNS::Diary::Template);
 
@@ -97,6 +97,9 @@
 $RTMode = 0;	# [0:Normal 1:Push 2:Convert]
 @RTBuf  = ();
 
+$HTMLMode = 0;
+@HTMLBuf  = ();
+
 
 $YoteiVal = "<li>%value</li>";
 $YoteiHead = "Schedule\n<ul>";
@@ -546,6 +549,23 @@
 		$RTMode = 0;
 	}
 
+	### HTML
+	if( $hnf_ =~ /^<\!--HTML START-->/ ) { $HTMLMode = 1; @HTMLBuf=(); return; }
+	if( $hnf_ =~ /^<\!--HTML END-->/ ) { $HTMLMode = 2; }
+	if( $HTMLMode == 1 ) {
+		push(@HTMLBuf, $hnf_);
+		return;
+	} elsif( $HTMLMode == 2 ){
+        $hnf_ = '<div class="html">';
+        $hnf_ .= join("", @HTMLBuf);
+        $hnf_ .= '</div>';
+        $hnf_ =~ s/&gt;/>/g;
+        $hnf_ =~ s/&lt;/</g;
+        $hnf_ =~ s/&amp;/&/g;
+		$HTMLMode = 0;
+	}
+
+
 	if ($HNS::System::Caching) {
 		print X $hnf_;
 	}
--- Command.pm.orig	2007-03-01 06:12:05.000000000 +0900
+++ Command.pm	2007-03-01 06:12:18.000000000 +0900
@@ -35,7 +35,7 @@
 			$Entities{'Image'}, $Entities{'Replace'},
 			$Entities{'Comment'}];
 
-$Entities{'Cite'} = ['CITE', 'PRE','INCLUDE','RT'];
+$Entities{'Cite'} = ['CITE', 'PRE','INCLUDE','RT','HTML'];
 $Entities{'List'} = ['UL', 'OL', 'DL'];
 $Entities{'Block'} = [$Entities{'Cite'}, $Entities{'List'}, 'P', 'DIV'];
 
@@ -472,6 +472,16 @@
 $Template = qq(<div class="%1">\n);
 $EndTemplate = "</div>\n";
 
+# HTML command
+package HNS::Hnf::Command::HTML;
+use vars qw(@ISA $Template $EndTemplate $NumAttr $IsOneline $AllowCommands
+$IsBeginSection $CountName $OmittableEnd);
+@ISA = qw(HNS::Hnf::Command::Cite);
+$AllowCommands = [''];
+$Template = "<!--HTML START-->\n";
+$EndTemplate = "<!--HTML END-->\n";
+$OmittableEnd = 1;
+
 ################################################################
 # Sub Entities
 package HNS::Hnf::Command::Sub;

うちは好みで<p>の補完も入れることにした。

+        $hnf_ = '</p><div class="html">';
+        $hnf_ .= join("", @HTMLBuf);
+        $hnf_ .= '</div><p>';

これで以下のようになる。

ほげほげ

うまくいってるかな。

(@876)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ