nDiki

2010年11月11日 (木)

Evernote 上で reStructuredText で書いてクリップボード経由で HTML

Evernote の書式機能はしょぼい。 Evernote 上でちょっとした文書を書く場合は reStructuredText 形式で書いておいて必要な時に HTML 形式などに変換したいのだが、ノートの内容に対してコマンドを実行する機能などがないのでクリップボード経由で rst2html を呼ぶようにしてみた。

Evernote for Windows 4 のノート上で全文選択して[コピー]後、以下の Perl スクリプトを実行するとクリップボードの内容に対して rst2html を実行して HTML ファイル生成後、デフォルトブラウザで開いてくれる。

 #!/usr/bin/perl
 
 use warnings;
 use strict;

 use Encode;
 use Win32::Clipboard;
 use File::Temp;

 my $clip = Win32::Clipboard();
 exit 0 unless $clip->IsText();
 my $text = $clip->GetAs(CF_UNICODETEXT);
 $text = Encode::decode("UTF16-LE", $text);
 $text =~ s/\015\012\015\012/\015\012/g;
 $text =~ s/\x{00a0}/ /g;                  # U+0020

 my $tmp_file = File::Temp->new(SUFFIX => '.rst');
 binmode($tmp_file, ":encoding(utf8)");
 print $tmp_file $text;
 system "rst2html", $tmp_file, $tmp_file . '.html';
 system "start", $tmp_file . '.html';

まずは的 Perl スクリプトなので、ファイルは一時ファイルとして作成していて削除もしていない。なお rst2html は設定ファイルで [general] input_encoding: utf-8 に設定してある。

Evernote のクリップボードテキストを処理するのに、ちょっと工夫がいる点は以下。

  • 現在の Windows 版では空行が増殖するので削除してあげる必要がある。
  • 一部空白が U+0020 (NO-BREAK SPACE) になる。

どちらもそのままだと reStructuredText 文法的におかしくなるので、変換してあげる必要あり。

HTML 版のプレビュー

  1. 全文選択
  2. コピー
  3. Perl スクリプトの実行

と3アクションあるので若干手数が必要だが、そこそこ便利。 Perl スクリプトの方は Win32::Clipboard::WaitForChange() あたりを監視するようにするともう1操作減らせるはず。

スポンサード リンク
[ 11月11日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.239983s / load averages: 0.38, 0.50, 0.52
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker