2012-02-28 4 views
1

でユーザー定義関数にヘルプを追加しますテストや手続きはTCL_shellにありますか?私は何を記述するためにどのように 、RUNTEST {IP_ADDRESSのtest_time}関数を呼び出した場合は仮にTCL</p> <p>でユーザー定義関数への援助のいくつかの種類を追加することができますどのようにTCL

TCLシェルでfunction_name --helpをタイプすると、ユーザーが情報を指定できるようになります。ユーザーは、関数が何をしているのか、パラメータとは何かを知ることができます。

どうすればいいですか?

答えて

1

言語の一部ではありませんが、この機能を既存の機能に追加するものを実装するのはかなり簡単です。唯一注意しなければならないことは、関数が有効な引数として文字列--helpを受け取ることができないことです。その引数はその機能をトリガーします。これはありませんが(名前を変更し、同じ名前の別の関数を宣言することによって)関数をオーバーライドし、関数は、引数--helpで呼び出されたかどうかを確認することです

# Lets call the feature "document". As in, add documentation: 
proc document {procname text} { 
    rename $procname __$procname 
    proc $procname args [string map [list %TEXT% $text %PROC% $procname] { 
    if {$args == "--help"} { 
     puts {%TEXT%} 
    } else { 
     set script [linsert $args 0 __%PROC%] 
     return [uplevel 1 $script] 
    } 
    }] 
} 

は、ここに1つの単純な実装です。それがそうでなければ、それは元の関数を実行します。これを同じ関数で2回呼び出さないように注意してください(それは動作するように変更することができます)。

ですから、のようなものを行うことができます:あなたが呼び出す場合

proc foo {} {puts 2} 
document foo {Prints the number 2.} 

:今すぐ

foo --help 

、それだろう出力:

Prints the number 2. 
+0

このコードは実際には機能しませんでした。 – amateur

+0

作業する必要があります。ここに投稿する前に私のマシンでテストしました。どのようなtclのバージョンを使用していますか? – slebetman

+2

procがラップされていないと思うように 'return [uplevel 1 [list __%PROC%{*} $ args]]'にする方が良いでしょう。また、8.6の ''%CORCES''の ''%args'は ''%\ 'を呼び出すだけです。 –

0

procコマンドを再定義せずにはできません。つまり、その機能は言語に組み込まれていませんが、望むなら追加することが可能です。

可能であれば、自分自身で機能を追加することは、特に言語に精通していない人にとっては、やりがいのある難点を超えている可能性があることに注意してください。つまり、既存の実装であるtclers wikiを確認することができます。

0

私が助けを置くことを好む傾向にあります私は別のウィンドウでそれを閲覧させる別のファイル(HTMLなど)です。 doxygenなどのように、コードを書類に入れたままでもそれを行うことができる方法はたくさんあります。

対話形式のドキュメントを作成する方法はいくつかあります。そのいくつかはthe Tcler's Wikiに記載されています。そのページ(@ slebetmanの回答とともに)に記載されているテクニックのいくつかは、あなたが望むものを与えるだろうと私には思われます。 (私はそれが助け構文は、コマンドと干渉するのを避けるだろうと、別のhelpコマンドを持つことが容易になるだろうと思いますが、それはあなたの呼び出しです。)

1

あなたは既存の手順タッチする必要はありません。

proc help {procname} { 
    puts $::helptext($procname) 
} 

proc addhelp {procname text} { 
    set ::helptext($procname) $text 
} 

addhelp foo "this is the help text for procedure foo" 

help foo 
+0

+1これは、よりクリーンな実装であり、我々が職場で使用するものに近い。 –

+0

プロシージャが実際に存在しているかどうかを確認したり、procの引数リストを引き出すなどの改善が見られます。 –

関連する問題