ひまつぶし雑記帖

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

xyzzyとperlの連携でテキスト処理最強環境

2015/9/6 [23:59:56] (日) 天気

こないだからごそごそいじってるxyzzyのマクロとそこから連携するperlのスクリプト。
xyzzyのあまりの便利さ、ラクチンさ、フロントとしての有能さに今さらながら驚いた。もう15年ぐらい使ってるっちゅーのに。

エディタはxyzzy一択だろう(主語:おれ)

自分環境・自分作業内容に特化したマクロなので、誰にとっても有用・便利に使えるものではないけど、備忘録としてメモしておこう。
lispは手強い、というか他とは別モノなので、今回ごそごそ作ってるようなわずか数行のものでもネットで検索しまくり、デフォルトのlispフォルダをgrepしまくってやっと。明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

てことで、先日までのマクロの振り返り。。

1)編集中のバッファの内容をtempファイルに書き出して
2)perlのスクリプトで処理して
3)処理された内容をバッファに読み込む

てところがキモ。

(2)のところ。
今日までは、処理してほしい内容について
(interactive "s[D]elSpace [T]ab4Space [M]akeEPUB [C]heck")
などと、マクロを起動したらperlでどういう処理をして欲しいのか、ユーザー入力を取得してperlに引数として渡すようにしていた。
でも、このユーザー入力のひと手間がけっこう面倒くさい。

面倒くさいものは続かない。そのうち使わなくなるのが目に見えている。
20分ぐらい考えて、macのCotEditorが外部スクリプトの引数に編集中のファイル名(フルパスで)を渡すことを思い出した。この動作をそのままxyzzyのマクロでも使うことにした。

そもそも、マクロを起動したらば。
編集中のファイルの拡張子が.plとか.pmだったらperlのシンタックスチェックをして欲しいし、編集中のファイルがeasy_epubフォルダ以下の.txtファイルだったらeasy_epub.plでEPUB電子書籍を作ってくれ。自分としては、いちいちユーザー入力を待って判定する必要はない。
ファイルと結びつかない新規バッファや*scratch*バッファで作業しているものに関しては、空白の削除やタブを空白4つに変換するなど、その時その場の小ネタ処理で決めうちできないので、ここはユーザー入力で動作を振り分けてもらいたい。

・フルパスのファイル名がわかっているものに関しては、パス・ファイル名を処理・動作の判断にしてくれ。
・ファイル名がわからないものに関しては、指示するからちょっと待てよ。

という自分リクエストを満たしたxyzzyのマクロがこの10行。


やってることは。
01:関数
02:この関数はマクロで呼び出せますよ
03:バッファを書き出すためのtempファイル名の設定
04:編集中のバッファがファイルと結びついてなければどんな処理をするのかユーザー入力待ち
05:tempファイルの削除
06:編集中のバッファをtempファイルに書き出し
07:perlに渡すためのバッチファイル(WINDOWSのダセエところだ)
引数としてフルパスのファイル名と、04の場合の入力された文字。標準入力経由でtemp-file、perlが処理した内容を受けとるところとして「*scratch*」バッファを設定。
08:バッファ全体をマークして
09:バッファをクリップボードにコピー

受けとるperl側は以下。長いのでpackageについては端折るけど。
・フルパスファイル名がわかっているものは、ファイルを読み込んで処理。
・ファイル名がないものは、一行ずつ処理したり、全部読み込んでから処理したり。
(第一引数はファイル名。第二引数がマクロの04で入力した文字)


いやもうほんと滅茶苦茶最強のテキスト処理環境のできあがりだ。
どのぐらい最強かというと、今日まさに立川で観てきた爆音「マッドマックス FR」のお婆ちゃんズぐらい最強だ(実写版ジブリだったなあ)

image 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/4/25 00:49

だめだ。PDFをWordで開いたらレイアウトが微妙にくずれて行数が正しくない。かえって間違いのもとだ。

2024/4/24 13:43

pdfをWordで開いてみる手もあるか。空行、1ページの行数とか、pdfのまんまだったら行数表示で問題解決。だけど、実際どうだろ。帰ったら試す

2024/4/24 12:58

空行は目視しか確認方法がない…
windowsで半透明にするフリーソフトを見つけたので、各ページの幅で検知する。
全ページの行数を数えてたんじゃ絶対漏らす。そんな集中力はないわ

検索
<<2024/4>>
 123456
78910111213
14151617181920
21222324252627
282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版