これを抽出して一覧で出力するスクリプトを作った。
こんな感じ。
$ list-stickynotes
2011年04月20日 猫の餌を買う
2011年04月21日 4/23 食事会 大宮 12:00
1つの付箋が"タイトル<タブ文字>内容"の1行で出力される。
付箋の内容に改行がある場合はスペースに変換。エンコーディングはUTF8。
"付箋紙"は内容を記述してから10秒ぐらいしないと、ファイルに保存されないことに注意。
list-stickynotes:
#!/usr/bin/perl
package StickyNotesHandler;
use base qw(XML::SAX::Base);
my $elm;
sub start_element {
my ($self, $data) = @_;
$elm = $data->{Name};
return if ($elm ne 'note');
my $na = $data->{Attributes};
my $t = $na->{'{}title'}->{Value};
print "${t}\t";
}
sub end_element {
return if ($elm ne 'note');
print "\n";
$elm = undef;
}
sub characters {
my ($self, $data) = @_;
return if ($elm ne 'note');
my $c = $data->{Data};
if ($c eq "\n") { $c = ' '; }
print "$c";
}
#-----------------------------------
package main;
use HTML::Entities;
use XML::SAX;
use Env qw(HOME);
binmode STDOUT => "utf8";
my $fi = "${HOME}/.gnome2/stickynotes_applet";
my $p = XML::SAX::ParserFactory->parser(
Handler => StickyNotesHandler->new);
$p->parse_uri($fi);
0 件のコメント:
コメントを投稿