2011-06 / 2011-06-13

前のエントリ: 日記内の見出しに対応してみた [chalow]
次のエントリ: SyntaxHighlighter用の書式で開始行数指定とハイライトを有効にしてみた [chalow]

日記内のリスト対応(割と適当)してみた
2011-06-13-1 / カテゴリ: [chalow] / [permlink]

リスト表記してみた
- 項目
- 項目
-- 項目2段階目
--- 項目3段階目
---- 項目4段階目
- てへ
こんな感じ
  • 項目
  • 項目
    • 項目2段階目
      • 項目3段階目
        • 項目4段階目
  • てへ


----
なら罫線

ソースの変更点はこんな感じ。
標準だとハイフン4文字のみで罫線になってしまうので、^----$ に制限を追加。あとはちょっと適当です。
--- chalow	(revision 1840)
+++ chalow	(working copy)
@@ -517,7 +518,7 @@
     s!'''(.+?)'''!<strong>$1</strong>!gms;
     s!''(.+?)''!<em>$1</em>!gms;
     s!==(\S.+?)==!<s>$1</s>!gms;
-    s!^\-{4}!<hr />!gms;
+    s!^\-{4}$!<hr />!gms;
 
     ### URL。Hiki の記法を採用。
     s!\[\[(.+?)\s*\|\s*(.+?)\]\]!get_link_str($1, $2)!gmse;
@@ -544,6 +545,10 @@
     ### ヘッダ(Heading): "^= string" <h3>から</h3>
     s!^(=+)\s*(.*)!my $a=2+length $1; $a=($a<7)?$a:7; "<h$a>".$2."</h$a>"!gme;
 
+    ### リスト
+    # ^\t-+\s に反応。
+    $_ = listing($_);
+
     ### 日付で参照リンク
     # date ref : [YYYY-MM-DD]
     $_ = datestr2anchor($_);
@@ -577,11 +582,30 @@
 
     s!</pre><br />!</pre>!g;	# ad hoc
     s!</h(\d)><br />!</h$1>!g;
-
+    s!<ul><br />!<ul>!g;    # ad hoc
+    s!</li><br />!</li>!g;  # ad hoc
+    s!</ul><br />!</ul>!g;  # ad hoc
     return $_;
 }
 
+### リスト変換
+sub listing {
+  my $str = shift;
+  $str =~ s!(?:^(-+\s+.*))!<li>$1</li>!gm;
+  $str =~ s!((?:<li>.*</li>\n)+)!listing_f($1)!egm;
+  return $str;
+}
+sub listing_f {
+  my $str = shift;
 
+  $str =~ s!<li>-!<li>!gm;
+  $str = "<ul>".$str."</ul>";
+  $str =~ s!((<li>-.*\n)+)!listing_f($1)!egm;
+
+  return $str;
+}
+
+
 ### アイテムをHTMLに変換
 sub make_item_html {
     my ($e, $ymd, $i) = @_;

あと、ようやくsvnに突っ込んだ(笑)
Referrer (Inside): [2010-01-05-1]
前のエントリ: 日記内の見出しに対応してみた [chalow]
次のエントリ: SyntaxHighlighter用の書式で開始行数指定とハイライトを有効にしてみた [chalow]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12