2015-12-20 3 views
5

は、私はこのような機能を文書化することができますそれぞれの引数とその型)文書化REBOLのの方言

? f 
USAGE: 
    F arg1 

DESCRIPTION: 
    a description 
    F is a function value. 

ARGUMENTS: 
    arg1 -- a description of an argument 1 (Type: string) 

私はこのような方言を文書化することはできません。方言を文書化する自動方法がありますか(funcのように)?これは手動で行う必要がありますか?

答えて

4

あり、現在そのための何もないが、それは良い考えです。だから前もってsomeone has suggested itが良い。

:-)私は手動で行う必要がありますか?

"dialect spec"形式を定義する新しいジェネレータを手動で書き込むことができます。次に、HELPコマンドを与えるか、HELPを拡張して認識させるかのいずれかを行います。

make-dialect: function [spec [block!] body [block!]] [ 
    return function ['arg [block! word!]] compose/deep/only [ 
     case [ 
      arg = 'HELP [ 
       foreach keyword (spec/keywords) [ 
        print [keyword "-" {your help here}] 
       ] 
      ] 

      block? arg [ 
       do func [arg] (body) arg 
      ] 

      'default [ 
       print "Unrecognized command. Try HELP." 
      ] 
     ] 
    ] 
] 

そうあります:この(すべて期待できない柔軟性を示唆し、むしろ、明らかにされるように)ような何かを行う際に便利になるかもしれ技術のグループを実証する

非常に短い例あなたの関数は方言スペックをとり、関数を作ります。あなたはそれがあまり手動で行うことができます使用して、あなたの発電機を持ってたら:

mumble: make-dialect [keywords: [foo baz bar]] [ 
    print ["arg is" mold arg] 
] 

>> mumble help 
foo - your help here 
baz - your help here 
bar - your help here 

>> mumble [<some> [dialect] {stuff}] 
arg is [<some> [dialect] {stuff}] 

ここで使用される技術は、次のとおりです。

  • を引用ソフト - 通常あなたが引用符「にmumble 'helpを言わなければならないでしょう"ライトワードとしての助け!言葉を渡すためにそれを得るために! (デフォルトのHELPコマンドを実行するのとは対照的に) argは...それは「ソフトが引用された」'argとして生成された関数内で宣言されたので、しかし、これは言葉とパスが評価されないことを意味します。あなたが渡したい変数を持っていれば、と言う必要があります:varまたは(var)を引数に使用するという意味でトレードオフになります(括弧、get-words、およびget-pathsはまだあります)。だけではなくvar(方言を渡すためにブロックが変数である場合を想像)ので、あなたは、必ずしもそれを使用したくない...しかし、私はそれを点灯し、言葉もなくmumble help作品を作るための興味深いデモを考えました!

  • ディープ組成からspecmake-dialectに渡されるbody変数のみmake-dialect限り存在するが実行されています。終わったら、彼らはなくなるでしょう。だから、あなたが生成している機能の本体にこれらの言葉を残すことはできません。ファンクション・ジェネレータは、効果的に阻止するためにデータを抽出し、関数のボディ構造にそれらをステッチ、結果を作るために実行される前に、これが体内に括弧を評価するCOMPOSEは/ DEEP使用しています。

  • の再利用機能のバインディング作業 - 生成された関数はmake-dialectのコール・サイトに存在していなかったパラメータargとスペックを持っています。だから、議論は何かにリバウンドする必要がありますが、何ですか?それを手動で行うことも可能ですが、簡単な方法の1つはFUNCにあなたのために仕事をさせることです。

者は、文書の方言だけではないのを目指していますが、自分のREBOLのシステムが設定されている場合、そのキーワードは、例えば(再マッピングされるかもしれないことにより、簡単な方法を提供する提案されたソリューションで使用される技術のいくつかであります別の話し言葉のために)。