次の日 / 最新

bills.flipflap.net

2004-05-08 Sat

* インデックスでの見出し表示 [chalow]

 うっ、いじってる内に日をまたいでしまった…それはともかく。

 ↓のエントリが長くなってしまったのでMovableTypeなどで見られるようなエントリの途中まで表示して残りはリンク先、という「見出しモード」を仕込んでみました。

sub write_day_page {
:
  $content =~ s|<h2>.+?</h2>||sm;
  ## 2004-05-08 bills : 見出し
  $content = remove_heading($content);
:
sub write_month_page {
:
  my $content = join('', map {$month_page{$ym}{$_}} @cont);
  ## 2004-05-08 bills : 見出し
  $content = remove_heading($content);
:
sub write_index_page {
:
## 2004-05-08 bills : 見出し化
## $top_n_str .= $month_page{$ym}{$ymd};
    $top_n_str .= make_heading($month_page{$ym}{$ymd}, $ymd);
:
## 2004-05-08 bills : 見出し
sub make_heading {
  my ($str, $ymd) = @_;
  return $str if ($heading_mode == 0);
  my $url = datestr2url($ymd);
  $str =~ s!\[\[\[heading\]\]\].+?</p>![<a href="${url}">全部読む</a>]</p>!gsm;
  return $str;
}
:
## 2004-05-08 bills : 見出し
sub remove_heading {
  my ($str) = @_;
  return $str if ($heading_mode == 0);
  $str =~ s!\[\[\[heading\]\]\]!!gsm;
  return $str
}
(別途$heading_modeをコンフィグ対象変数として定義)

 ChangeLogテキストの区切りたい場所に\[\[\[heading\]\]\](実際には\を抜いたものです)と記述すると、それ以降はインデックスでは[全部読む]というリンクに置き換えられます。ロジックの都合上(手抜きともいう)、日単位にしか飛べません(^^;

Referrer (Inside): [2004-05-10-3] [2004-05-09-1]

* 改行とレイアウト [chalow]

 chalow ではChangeLog形式テキストからエントリを生成しますが、テキストの改行毎に<br>タグを生成します。

 エディタで論理改行(折り返し)を使わない派の自分は、適当な文節や桁数で改行を入れてテキストを作成するのですが、その改行でレイアウトに影響が出てしまうのが個人的にあまりうれしくないと感じました。

 そこでまず、ちょっと chalow をいじって、改行のみの空行の時だけ<br>タグを付けるようにしました。YukiWiki等のように、空行があらわれるまではひとつの行として見た目の改行をせず、同一行に連結するものです。

#print "1[$_]\n";
## 2004-05-08 bills : 空行のみ<br>を付ける
## s!$!<br>!gsm;
## s!<br>$!!;
    s!^$!<br>!gsm;
#print "2[$_]\n";

 元テキストとWeb上の表記に乖離が生じますしChangeLog的にも、あまりうれしくないのかなぁ?
 と思ったら引用部分まで連結してしまったので修正を試みたのですが、折り返したい部分と折り返したくない部分の切り分けが難しく、chalow でいろいろ機能を使い出すと結局元テキストにマークアップが入るので、同一行連結もマークアップでいいや、と以下に落ち着きました。

#print "1[$_]\n";
## 2004-05-08 bills : 単一行モード
    if ($single_line_mode != 0) {
      s!^ (.+?)(^$|\z)!make_single_line($1)!gsme;
    }
    s!$!<br>!gsm;
    s!<br>$!!;
#print "2[$_]\n";

(略)

## 2004-05-08 bills : 単一行
sub make_single_line {
  my ($line) = @_;
  $line =~ s!\n!!gsm;
  return " ${line}\n";
}
(別途$single_line_modeをコンフィグ対象変数として定義)

 連結したい複数行の先頭行冒頭にアンダースコア2個を入れると空行までをあらかじめ物理的に1行にするようにしてみました。

Referrer (Inside): [2004-05-10-2] [2004-05-09-1]

* スタート

 いわゆるblog的なことを始めてみることにしました。

 Web日記、weblog等の類、そしてこの雑記のシステムとしている chalow は扱ったことが無いので徐々に慣れていこうと思います。

 内容的にはくだらないことばかり書いて行く気がしますが、ローカルで無く公開しているからには、誰かに役立ったり、blog的な(良い)相互作用が生まれるとうれしい。

2004-05 /
2004-05
SMTWTFS
1
2345678
9101112131415
16171819202122
23242526272829
3031

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

最終更新時間: 2006-06-05 00:56