ruby, perl and bash scripts
Select Japanese EUC if the characters are not shown properly.

ruby, perl and bash scripts

Date: 2005-09-20

このディレクトリには、perl や ruby, bash などの script を置いて います。

CONTENTS


[Top] [Last]


[Contents]

1 bak backup を取る

bak 1.2 updated on 2005/09/16

creates a backup file which has a time string as its extension part

  $ bak foo.txt

will creates foo.txt.XXXX, where XXXX is the current date.


[Contents]

2 cutcom 説明文を切り出す

cutcom updated on 2005-09-11

$Lastupdate: 2005-09-15 19:40:53 $

● 機能

cutcom は、script の説明文を切り出して、標準出力に書き出します。 現在のところ、ruby, perl, sh, bash, csh, elisp に対応しています。

script がどの言語のものかは、ファイルの拡張子とファイルの第1行を 読取って判断しています。

● ruby

ruby script では、行頭から書いた =begin, =end の間が説明文として 抽出されます。

● perl

perl script では、行頭から書いた =英字列、=cut の間が説明文とし て抽出されます。

● sh, bash, csh

shell script では、行頭から書いた #begin, #end の間が説明文とし て抽出されます。

  #begin
  #
  # ここに説明を書く
  #
  #end

#begin がある行と #end がある行の間の註釈行は、行頭に # を置き、 その # の後に半角空白を1個置いて、説明文を書くものとします。 cutcom は、整形するときに、その行頭の '# ' をとり除きます。

● elisp

elisp program では、行頭から書いた ;begin, ;end の間が説明文とし て抽出されます。

  ;begin
  ;
    ここに説明を書く
  ;
  ;end

;begin がある行と ;end がある行の間の註釈行は、行頭に ; を置き、 その ; の後に半角空白を1個置いて、説明文を書くものとします。 cutcom は、整形するときに、その行頭の '; ' をとり除きます。

● 使用方法

  $ cutcom [options] fileName [FileName ...]

出力を整形するためのいくつかのオプションが用意されています。

-t, --title
出力する outline 文書の総合タイトルを出力します。 --title "sample script" と指定すると、

  ;;; @(#) sample scipt

という行を最初に出力します。

-x, --except
処理対象から除外するスクリプトを指定します。

  --except '\.rb$'

とすると、拡張子 rb を持つスクリプトを処理対象から除外します。

-o, --outline
出力の形式の一つを指定。default では、comment 文だけを出力します。 そのため、複数のスクリプトファイルを引数に指定したときは、コメン トとコメントの間の境目がわからなくなる恐れがあります。このオプショ ンを指定すると

  ---------------------------------------------------
  * sample

  ここにコメント

のような形式で出力します。

-e, --euc
出力の漢字コードを euc にします。行末コードを、unix type にし ます。

-j, --japanesetag
japanese タグを残します。default では、japanese 開始タグと終了 タグは取り除きます。

-s, --sjis
出力の漢字コードを shift_jis にします。行末コードを windows type にします。

-h, --help
help を表示。

-v, --version
version を表示。

-u
拡張子が txt であるファイルも対象にする。default では、拡張子 が txt であるファイルは対象としません。

(注意) 何も指定しないと、環境変数 OS を調べて、出力の漢字コード と行末コードを windows では sjis, crlf に、unix では euc, lf に します。-s を指定すると、、sjis, crlf に、-e を指定すると、euc, lf にします。

● 例

  $ cutcom -t "Script files" -o * | o2hf > index.html

とすると、カレントディレクトリにあるスクリプトファイルを一覧する html ファイル index.html が生成されます。

  $ cutcom -t "script files " -o * > 00readme.txt

とすると、カレントディレクトリにあるスクリプトファイルを一覧する 文書を 00readme.txt に保存します。

説明文中にある japanese タグがある行は、default では取り除かれま す。-j オプションを指定すると、japanese タグを残します。


[Contents]

3 latex2gif.sh latexソース断片をgifに

latex2gif.sh updated on 2005-09-16

標準入力から、latex ソースの断片を得て、プリアンブルと begin{document} 文を前に置き end{document} を後に置いて、latex 文書にしてコンパイルして得られる dvi ファイルを gif ファイルに変 換します。

生成する gif ファイルのファイル名は、ユーザが引数で指定します。 gif ファイルのファイル名を指定しなくても構いません。gif ファイル のファイル名を指定しない場合は、latex2gif-$$.gif の形のファイル 名を持つgifファイルが生成されます。

生成される gif ファイルは透明化 gif です。元図の白い部分が透明化 されます。

使用例

   $ echo "$ y = ax + b$" | latex2gif.sh foo.gif

o2h の中で、latex2gif.sh を利用しています。


[Contents]

4 lstcmnt.rb

lstcmnt.rb 1.2 updated on 2005/09/10

カレントディレクトリにあるファイルからテキストファイルだけを選ん でファイル名とコメントを標準出力に書き出します。ファイルにコメン ト行(注)があれば,最初に見付かったコメント行を書き出します。

出力の例を示します。

~/script> lstcmnt.rb
00readme.txt         script files
ChangeLog           
* NaturalDisaster/ 
addhydrosys          hydrosys-ML に登録します
addmail              add mails to ~/PastMail/2001
addspace             行頭に一定の数の空白文字を入れます。

(注) ^[ #;\/*%]*\@\(#\)[ ]*(.*)$ にマッチする行をコメント行と見 なします。言葉でいうと,行頭から半角空白または #;/ のいずれかの 文字の繰り返しの後に,@(#) がある行をコメント行と見なします。

処理スピードをあげるために,最初の $searchlines 行までに,コメン ト行がなければ,そのファイルにはコメント行が無いものとして処理し ます。

さらに処理スピードをあげるために、一度実行した結果をカレントディ レクトリの lstcmnt.ltf という名前のファイルに収録しておいて、こ のファイルよりも新しいファイルがなければ、収録しておいた lstcmnt.ltf を表示するようにしました。

このプログラムが呼ばれたときに、カレントディレクトリに lstcmnt.ltf という名前のファイルが無いか、あっても

場合には、このプログラムが lstcmnt.ltf を自動的に生成・更新しま す。

当該ディレクトリに書込み権限がないとエラーになります。

標準出力に出力するとき、及びファイルに書き込むときの漢字コードは、 default では、euc ですが、環境変数 OS が定義されていて、その値の 文字列が windows を含んでいれば、生成されるファイルの漢字コード は、shift_jis になります。

標準出力に出力するとき、及びファイルに書き込むときの漢字コードを オプションで指定することもできます。


[Contents]

5 lastupdate Lastupdate を表示

lastupdate updated on 2005-09-09

$Lastupdate: 2005-09-15 19:40:53 $

● 機能

引数を一つとります。引数にファイル名を指定します。引数に指定され たファイルの中に

  $Lastupdate: 2005-06-28 15:37:01 $

のような記述があるとして、日付欄 (この例だと 2005-06-28) を読取っ て、標準出力に書き出します。ただし、上記の例では、ドル記号を全角 文字で書きましたが、実際には半角のドル記号 $ を使用してあるとし ます。

● 使用例

  $ lastupdate cutcom


[Contents]

6 rmenglish 英語コメントを削除

rmenglish unpdated on 2005-08-29

rmenglish - remove english comments

使用方法: rmenglish fileName

引数に指定したファイルの英語のコメント (ただし、後述する形式のも の) を削除して、標準出力に書き出します。

  $ rmenglish foo-j.cc > foo-e.cc

現在の版は、c++ プログラム (拡張子が .h, .cc, .cpp のプログラム)、 java プログラム、perl プログラム、ruby プログラム、shell プログ ラム、emacs lisp プログラム、LaTex ソースに対応しています。

目的は、doxygen などのドキュメント生成プログラムで拾われる部分の 英語コメントを取り除くことにあります。すべての英語のコメントを除 くわけではありません。

● つぎのような英語のコメントを削除します。

  1. /* <english> で始まる英語コメント

    /* <english>
      english comments ...
      ...
       </englih>
    */
    

    この形のコメントで、/* <english> がある行を読み込んだ後は、*/ がある行までを削除します。コメント全体が削除されます。

    このような形のコメント文があると想定するのは、C, C++, Java のプログラムだけです。

  2. <english> がある行から </english> がある行までの間の英語コ メント

    // This part is not removed.
    //
    // <english>
    //  English comments included here will be removed.
    //  ...
    // </english>
    

    /*
      This part is not removed.
    
     <english>
      English comments included here will be removed.
      ...
     </english>
    */
    

    # <english>
    # English comments included here will be removed.
    # ....
    # </english>
    

    このような english comments は削除されます。

● つぎのような <japanese> ... </japanese> タグを削除します。

  1. /* <japanese> で始まる日本語コメント

    /* <japanese>
      ここに日本語のコメント
      ...
       </japanese>
    */
    

    これは、つぎのようになります。

    /* 
      ここに日本語のコメント
      ...
    */
    

  2. <japanese> がある行から </japanese> がある行まで

    // This part is not removed.
    //
    // <japanese>
    //  ここの日本語コメントは削除されます。
    //  ...
    // </japanese>
    

    /*
      This part is not removed.
    
     <japanese>
      ここの日本語コメントは削除されます。
      ...
     </japanese>
    */
    

    # <japanese> # ここの日本語コメントは削除されます。 # .... # </japanese>

    このような日本語コメントは、つぎのようになります。

    // This part is not removed.
    //
    //  ここの日本語コメントは削除されます。
    //  ...
    

    /*
      This part is not removed.
    
      ここの日本語コメントは削除されます。
      ...
    */
    

    # ここの日本語コメントは削除されます。
    # ....
    


[Contents]

7 rmjapanese 日本語コメントを削除

rmjapanese unpdated on 2005-09-12

rmjapanese - remove japanese comments

使用方法: rmjapanese fileName

引数に指定したファイルの日本語コメントを削除して、標準出力に書き 出します。

  $ rmjapanese foo-j.cc > foo-e.cc

現在の版は、c++ プログラム (拡張子が .h, .cc, .cpp のプログラム)、 java プログラム、perl プログラム、ruby プログラム、shell プログ ラム、emacs lisp プログラム、LaTex ソースに対応しています。

● つぎのような日本語のコメントを削除します。

  1. /* <japanese> で始まる日本語コメント

    /* <japanese>
      ここに日本語のコメント
      ...
       </japanese>
    */
    

    この形のコメントで、/* <japanese> がある行を読み込んだ後は、*/ がある行までを削除します。コメント全体が削除されます。

    このような形のコメント文があると想定するのは、C, C++, Java のプログラムだけです。

  2. <japanese> がある行から </japanese> がある行までの間の日本語 コメント

    // This part is not removed.
    //
    // <japanese>
    //  ここの日本語コメントは削除されます。
    //  ...
    // </japanese>
    

    /*
      This part is not removed.
    
     <japanese>
      ここの日本語コメントは削除されます。
      ...
     </japanese>
    */
    

    # <japanese>
    # ここの日本語コメントは削除されます。
    # ....
    # </japanese>
    

    このような日本語コメントは削除されます。

  3. 文の途中に、//; がある行の日本語コメント

    a = 5; //; このコメントは削除されます。 print line #; このコメントは削除されます。 \Section{title} %; このコメントは削除されます。

● つぎのような <english> ... </english> タグを削除します。

  1. /* で始まる <english> コメント

    /* <english>
      Here are english comments.
      ...
       </english>
    */
    

    この形のコメントを

    /*
      Here are english comments.
      ...
    */
    

    に変更します。ただタグが削除されるだけです。

  2. <english> がある行と </english> がある行

    // This part is not removed.
    //
    // <english>
    //  Here are english comments.
    //  ...
    // </english>
    

    /*
      This part is not removed.
    
     <englih>
      Here are english comments.
      ...
     </english>
    */
    

    # <english>
    # ここの日本語コメントは削除されます。
    # ....
    # </english>
    


[Contents]

8 o2h outline文書をhtmlに

o2h updated on 2005-09-19

一定の約束にしたがって記述された outline 文書を html 文書に変換 する ruby script です。unix だけでなく、cygwin や X on Windows 2 をインストールした windows 環境でも動作します。

  $ o2h foo.txt > foo.html

のようにして、outline 文書 foo.txt を html 文書 foo.html に変換 します。

元のテキスト文書に

@begin{latexbox} -----------------------------------------------
\begin{equation*}
F(x) = \int_{-\infty}^x f(t)\;dt
\end{equation*}
@end{latexbox} -------------------------------------------------

のように書いておくと、o2h によって、つぎのように整形されます。

このように数式を表示することもできます。この機能を実現するために、 latex2gif.sh を o2h の内部で呼んでいます。

元になる outline 文書の漢字コードは、euc でなくても構いませんが、 生成される html ファイルの漢字コードは euc です。

このディレクトリに、outline 文書 foddp.txt と、それを o2h によって変換した html 文書 foddp.html を置いていま す。foddp.txt は outline 文書を記述するときの約束を 記述しています。

foddp で使用する emacs 関数 File, xv, Net, fiber を定義する kh-foddpfunc.el、foddp に従うアウトライン文書を編集するときに使 用すると便利な関数を定義している kh-foddp.el を http://hywr.kuciv.kyoto-u.ac.jp/~shiiba/programs/windows/elisp/ に置いています。


[Contents]

9 o2l outline文書をlatex文書に

o2l updated on 2005-09-17

一定の約束にしたがって記述された outline文書を latex 文書に変換 する ruby script です。unix だけでなく、cygwin や X on Windows 2 をインストールした windows 環境でも動作します。

  $ o2l foo.txt > foo.tex

のようにして、outline 文書 foo.txt を latex 文書 foo.tex に変換 します。

このディレクトリに、outline 文書 foddp.txt と、 それを o2l によって変換した latex 文書 foddp.tex, これをコンパイルして得た pdf 文書 foddp.pdf を置いています。 foddp.txt はoutline 文書を記述するときの約束を記 述しています。


[Contents]

10 o2t outline文書をtext整形

o2t updated on 2005-09-14

一定の約束にしたがって記述された outline文書を outline 文書に変 換する ruby script です。unix だけでなく、cygwin や X on Windows 2 をインストールした windows 環境でも動作します。

  $ o2t foo.txt > fooa.txt

のようにして、outline 文書 foo.txt を outline 文書 fooa.txt に変 換します。

元々 outline 文書である元の文書を別の outline 文書に変換する意義 は、変換するときに、* で始まる項目見出しから目次を生成して、それ を付加できることにあります。

このディレクトリに、outline 文書 foddp.txtと、 それを o2t によって変換した latex 文書 foddpa.txt を置いています。 foddp.txt はoutline 文書を記述するときの約束を記 述しています。

項目見だしで、見出しが出現するページを記載するものと、行数を記載 するもののいずれかを選択することができます。

  # -i n  本文の行頭を n 文字字下げ
  # -p n  1ページ n 行とする。
  # -w n  本文の横幅を n カラムとして整形する
  # -l    ページを表示せずに行数を表示する
  # -s    見出しは元のまま。* を採用。
  # -b    目次はなし

生成するファイルの漢字コードは、default では、euc ですが、環境変 数 OS が定義されていて、その値の文字列が windows を含んでいれば、 生成されるファイルの漢字コードは、shift_jis になります。

内部で、w3m を呼んでいるので、w3m をインストールする必要がありま す。


[Contents]

11 tohaba font

tohaba.html

等幅フォントを使用する方法を解説します。


[Contents] [Top] .