Home > Perl Archive
[ << < 14 15 16 17 18 19 20 21 22 23 24 > >> ]
Perl Archive
HikiDoc.pm は命名を失敗したかも
HikiDoc ではなくて、Perl 的には Text::HikiDoc とかの方がいいんではないかと思った。いや、何となく。今ならまだ間に合うなぁ、きっと。
- Comments: 0
- TrackBack (Close): 0
PersistentPerl 試験中
http://daemoninc.com/PersistentPerl/
昔 SpeedyCGI と呼ばれていたもの。現在は SpeedyCGI と PersistentPerl は全く同じもので、将来は PersistentPerl になるらしい。。。といいながら、最近更新されていないっぽいけど。まぁ、今のところ快適だ。FSWiki は、目に見えて速度が変わった。
- Comments: 0
- TrackBack (Close): 0
HikiDoc.pm 公開
HikiDoc.pm を公開しました。「B's Soft」のコーナーにおいてあります。
ついでに日記に「HikiDoc」というカテゴリを作った。これで多少はまじめにメンテする。。。かもしれない。
ともあれ、オリジナルの作者、かずひこ氏に感謝。
NAME
Text::HikiDoc - 「テキスト→HTML」変換ツール 'HikiDoc' の Perl による実装
SYNOPSIS
use Text::HikiDoc;
# $text = '!Title';
# $html = '<h1>Title</h1>';
$obj = Text::HikiDoc->new();
$html = $obj->to_html($text);
or
$obj = Text::HikiDoc->new($text);
$html = $obj->to_html();
# $text = "!Title¥n----¥n!!SubTitle";
# $html = "<h2>Title</h2>¥n<hr />¥n<h3>SubTitle</h3>";
$obj = Text::HikiDoc->new({
string => $text,
level => 2,
empty_element_suffix => ' />',
br_mode => 'true',
table_border => 'false',
});
or
$obj = Text::HikiDoc->new($text, 2, ' />', 'true', 'false');
$html = $obj->to_html();
# $text = "!Title¥n----¥n!!SubTitle¥nhogehoge{{br}}fugafuga";
# $html = "<h1>Title</h1>¥n<hr />¥n<h2>SubTitle</h2>¥n<p>hogehoge<br />fugafuga</p>¥n";
$obj = Text::HikiDoc->new();
$obj->enable_plugin('br');
$html = $obj->to_html($text);
$obj->enable_plugin('br','ins');
@plugins = $obj->plugin_list; # br, ins
$obj->is_enabled('br'); # 1
$obj->is_enabled('pr'); # 0
DESCRIPTION
'HikiDoc' は「テキスト→ HTML」変換ツールです。書きやすく読みやすい
文法の テキストをまともな HTML (や XHTML) に変換します。
オリジナルの 'HikiDoc' は Ruby による実装です。
本ライブラリは、Pure Perl による 'HikiDoc' の実装です。オリジナルの
'HikiDoc' と互換性を保っています。
Methods
new
HikiDoc オブジェクトを生成します。下記のパラメータを指定できます。
string
変換するテキストデータです。
level
<h1>〜<h6> タグに変換する際のレベル指定です。デフォルトは 1 です。
2 を設定すれば、HTML変換時 <h2> から始めます。
empty_element_suffix
閉タグがないタグ (<hr> や <br>など) の閉じ方を指定します。デフォ
ルトは「 />」です。<hr />のようになります。<hr> としたい場合は
「>」を設定してください。
br_mode
br_mode を「true」にすると、<p></p> 内の改行を <br> に変換します。
デフォルトは「false」です。
このパラメータは、本ライブラリ独自の拡張です。
table_border
table_border を「true」にすると <table border="1"> に、「false」
にすると <table> に変換します。デフォルトは「true」です。
このパラメータは、本ライブラリ独自の拡張です。
to_html
HTML に変換します。
string
変換するテキストデータです。もし new と to_html の両方で string
を設定した場合は、to_html の方が優先されます。
enable_plugin(@args)
プラグインを有効にします。「@args」はプラグインの名前リストです
plugin_list
有効になっているプラグインの名前リストを返します
is_enabled($str)
プラグイン $str が有効かどうか 1 か 0 で返します。有効なら 1 を返し
ます
Plugin
Text::HikiDoc はプラグインによる拡張が可能です。enable_plugin() を
使って、プラグインを有効にできます
Text::HikiDoc::Plugin::aa
{{aa "
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
"}}
を下記のように変換します
<pre class="ascii-art">
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
</pre>
Text::HikiDoc::Plugin::texthighlight か Text::HikiDoc::Plugin::vimcolor
が有効なら、下記のように書く事もできます
<<< aa
(__)
(oo)
/-------¥/
/ | ||
* ||----||
‾‾ ‾‾
>>>
Text::HikiDoc::Plugin::br
{{br}}
を下記のように変換します
<br />
Text::HikiDoc::Plugin::e
{{e('hearts')}} {{e('9829')}}
を下記のように変換します
♥ ♥
Text::HikiDoc::Plugin::ins
{{ins 'insert part'}}
を下記のように変換します
<ins>insert part</ins>
Text::HikiDoc::Plugin::sub
H{{sub('2')}}O
を下記のように変換します
H<sub>2</sub>O
Text::HikiDoc::Plugin::sup
2{{sup(3)}}=8
を下記のように変換します
2<sup>3</sup>=8
Text::HikiDoc::Plugin::texthighlight
pre に、Text::Highlight を使ったシンタックスハイライトを追加します
下記の表記は、Perl のソースコードとしてハイライトされます。
「<<< Perl」のかわりに「<<<」と記述すれば、ハイライトされない通常
の pre になります
<<< Perl
sub dummy {
$string = shift;
$string =‾ /$PLUGIN_RE/;
print "s:$string¥tm:$1¥ta:$2¥n";
$a = $2;
$a =‾ s/^¥s*(.*)¥s*$/$1/;
if ( $a =‾ /($PLUGIN_RE)/ ) {
&hoge($a);
}
return $string;
}
>>>
NOTE: このプラグインの実装方法は将来変わるかもしれません
Text::HikiDoc::Plugin::vimcolor
pre に、Text::VimColor を使ったシンタックスハイライトを追加します
NOTE: このプラグインの実装方法は将来変わるかもしれません
SEE ALSO
本家 'HikiDoc' サイト
http://http://projects.netlab.jp/hikidoc/
Text::HikiDoc::Plugin
Text::HikiDoc::Plugin::aa
Text::HikiDoc::Plugin::br
Text::HikiDoc::Plugin::e
Text::HikiDoc::Plugin::ins
Text::HikiDoc::Plugin::sub
Text::HikiDoc::Plugin::sup
Text::HikiDoc::Plugin::texthighlight
Text::HikiDoc::Plugin::vimcolor
AUTHORS
オリジナルの 'HikiDoc' はかずひこ氏 <kazuhiko@fdiary.net> によって
作られました。
本ライブラリの本リリースは、川端 一道 (Higemaru) <oneroad@mac.com>
によって作られました。
http://haro.jp/
COPYRIGHT AND LICENSE
This library 'HikiDoc.pm' is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
Copyright (C) 2006- Kawabata, Kazumichi (Higemaru) <oneroad@mac.com>
- Comments: 0
- TrackBack (Close): 0
HikiDoc.pm その後
結果オーライじゃなくてロジックもできるだけ本家と同じような感じにする (本家のバージョンアップに追随しやすくするため) ことを心がけ、目標は今月中リリースってことで。
などと言っていた HikiDoc.pm だが、とりあえず test_hikidoc.rb は全て ok になったし、TextFormattinRules.ja の parse 結果は hikidoc.rb と同じになった。目標よりも早くできたので、ちょっとコード見直して、せっかくだから Makefile.PL とかも準備して、それから後悔しよう。
- 後悔するのかよ orz - 髭。 (2006年05月23日 10時24分47秒)
- 月刊カメラマンの大谷です。初めまして。弊誌7月号(6月20日)にて、「デジタルフォトライフに役立つフリーウェア」を企画しております。 - 大谷惠基 (2006年05月23日 14時34分45秒)
- つきましては、OneRenamerを紹介させていただきたくメールいたしました。何卒ご了承のほど、お願い申し上げます。 - 大谷惠基 (2006年05月23日 14時35分47秒)
- 了解しました。ありがとうございます。 - 髭。 (2006年05月23日 17時42分46秒)
- Comments: 0
- TrackBack (Close): 0
HikiDoc.pm
元々電算写植屋だったからかもしれないが、ワープロが嫌いだ。レポートとかをどうやって書いてるかというと、最近はFreeStyleWiki上で書いてて、その前はrdtoolを使っていた。
特に不満もなかったのだが、先日「rdtool みたいにコマンドラインで使いたいときも結構あるよなぁ」と感じ、「最近 Wiki とか流行ったし、いろんな書式があるだろう」と、ちょっと調べてみた。あんまりいろんなことができる必要はない。機能的にちょうどよくても、書式が自分の感性と合わないとダメ。
結果、一番良さげだったのがHikiDoc。では移行しようと思ったが、一つ難点が。ruby がはいってなくて自分で勝手にインストールとかできない環境がある。。。Perl 版誰か作ってないかな。。。なさそうだな。。。自分で作るか。
結果オーライじゃなくてロジックもできるだけ本家と同じような感じにする (本家のバージョンアップに追随しやすくするため) ことを心がけ、目標は今月中リリースってことで。
- Comments: 0
- TrackBack (Close): 0
perl の split で、パターンも含めた配列を返す
例えば、
my @tmps = split(/,/, 'hello, world');
の場合は
@tmps = ('hello',' world');
だが、
my @tmps = split(/(,)/, 'hello, world');
の場合は
@tmps = ('hello',',',' world');
となり、「,」も含まれる。
どういうときに便利かというと、
for my $str ( split(/({{|}})/, 'aa{{plugin arg}}bb') ) {
if ($str eq '{{') {
}
elsif ($str eq '}}') {
}
else {
}
}
というような感じで使う。
。。。というようなことに、ruby の Regexp.union 関連を見ててたどりついたわけだが、
perldoc -f split
するとちゃんと書いてある。やっぱり基本は重要。
- Comments: 0
- TrackBack (Close): 0
au 携帯電話と GPS と ALPSLAB slide と - ロジック編 -
- 2006年4月12日 19:59
- Perl | 地図 | 携帯電話
http://www.alpslab.jp/slide.html
先日「プログラム作ってる時にはまりどころがあったのだが、それは別項目で。」と言って放置してたので、そろそろ書いておく。
au の携帯電話を使った位置取得方法については、「ここギコ!」の「EZナビでの位置取得方法」が詳しいのでそちらを参照されたし。
GPSに位置情報取得依頼するためには「device:gpsone?hogehoge」にアクセスするわけだが、これは直接 URL 入力しようとしてもブックマークに登録しようとしても「http:// で始めなされ」と断られてしまう。なのでまずやったのがこれ。
Phase.1 単発取得
- 携帯電話から wml ファイルにアクセス。リンクをクリックする
- gpsone リンク。返り先は、返り値を表示したり保存したりする CGI にしておく
- CGI で、受け取った値を表示したり保存したり
手動トラックロガーとしてはこれで成功。でも、自動取得したいので、Phase.2 にすすむ
Phase.2 連続取得
- 携帯電話から wmlファイルにアクセス。リンクをクリックする
- gpsone リンク。返り先は、返り値を表示したり保存したりする CGI にしておく
- CGI で、受け取った値を表示したり保存したり。60秒後、2. に redirect
これでいけると思っていたのだが、3. で redirect するまではよくて、2. で情報取得するのもよくて。。。でも、3. に戻ってきたら CGI に処理が移らずに再度 2. を繰り返してしまうのだ。ブラウザのキャッシュとかかなぁ、とも思ったが、そもそも 3. で CGI にアクセスしている記録も残らない。仕方ないので色々試すことにする
Phase.3 返り先をかえて連続取得
- 携帯電話から wml ファイルにアクセス。5 秒後、2. に redirect
- gpsone リンク。返り先は、返り値を表示したり保存したりする CGI にしておく
- CGI で、受け取った値を表示したり保存したり。60秒後、1. に redirect
これでうまくいった。でも、もう一つ謎が残っていて、wml 5秒+CGI 60秒ではなくて wml 60秒+CGI 5秒にすると、Phase. 2 と同じ状態になるのだ。何故?
まぁ、結果的に動くものはできてるので、いろんなことの究明はそのうち気が向いたら。
最後に。wml にしている理由は、html だと携帯電話はで refresh 効かないから。wml だと大丈夫 (^^)v
- Comments: 0
- TrackBack (Close): 0
au 携帯電話と GPS と Google マップと
- 2006年4月10日 19:58
- FreeStyleWiki | Perl | 地図 | 携帯電話
昨日散歩したルートを、Google マップで表示してみた。見ることが目的ならこっちの方が見やすいような。ALPSLAB slide を短い距離でも楽しむためには、もっと短い間隔でトラッキングすればいいのかな?
IE では多分見れません。ごめんね。回避方法はわかってるので、そのうちなんとかする。
- Comments: 0
- TrackBack (Close): 0
au 携帯電話と GPS と ALPSLAB slide と - 実行編その2・徒歩 -
- 2006年4月 9日 20:02
- Perl | 地図 | 携帯電話
今日は徒歩で 1 時間ほどプラプラ。1 分間隔で情報取得。
当たり前なのに今日気づいたこと。携帯電話は「圏外」になることがある。圏外になると GPS も使えない。で、何が困るかというと、ブラウザが「通信できませんでした」のエラーを出して、キー操作するまでその状態で止まってしまうのだ。今日もそのせいで、半分しか情報取得できていなかった。
1分間隔で取得というのは、徒歩でプラプラするにはいい感じだとは思ったが、地図のアニメーションが速すぎるなぁ。
- Comments: 0
- TrackBack (Close): 0
au 携帯電話と GPS と ALPSLAB slide と - 実行編 -
- 2006年4月 8日 20:01
- FreeStyleWiki | Perl | ポタ | 地図 | 携帯電話
http://www.alpslab.jp/slide.html
昨日 alpsmap plugin を APLS slide 対応したので、有効活用するために「au 携帯電話でブラウザ自動リロードしながら GPS 情報を保存していく CGI」というものを作ってみた。
作ってみたからには有効活用しないといけないので、自転車でプラプラしてみた。地図を2段階くらい縮小してから再生すると見やすいかと。
↓猪名川沿いの農業公園から豊中方面に向かって、3 分間隔で情報取得
↓服部緑地あたりからオープンしたばかりのミドリ電化まで往復を、1分間隔で情報取得
今日の時点の感想。
- 1分間隔で 50km 以上情報とったら楽しめそう
- 1分間隔だと、電話着信できないと思うので、もはや携帯「電話」ではないな
- パケ代かかりそうだな。Win 端末じゃないとつらいかも
プログラム作ってる時にはまりどころがあったのだが、それは別項目で。
- Comments: 0
- TrackBack (Close): 0
[ << < 14 15 16 17 18 19 20 21 22 23 24 > >> ]
Home > Perl Archive