2017-04-23 15 views
1

私は最近、構文チェッカーと呼ばれるNPMパッケージ(https://www.npmjs.com/package/syntax-checkerNodeJS固有言語の構文チェッカー

を発見したと私は私のjsのスクリプトにこれを統合したいと思います。私はコードブロックとコーディング言語のメッセージをチェックするDiscordチャットボットを使用しています。 Syntaxチェッカーの説明によれば、Ruby、PHP、Perl、Lua、C/CPP、Bash、Javascript、Pythonをサポートしています。これをボットにどのように統合すればよいでしょうか?私は現在、JSは(出力なしで)コードをコンパイルするために使用され、コンピュータ上のプログラムを実行することによって、このスクリプトを

if (message.content.includes("```js")) 
    { 

    let code = message.content.substring('```js '.length); 
    var codebegin = code.split("```js").pop(); 

    var n = codebegin.indexOf('```'); 
    var codeend = codebegin.substring(0, n != -1 ? n : codebegin.length); 

    var check = require('syntax-error'); 

    var err = check(codeend); 

    if (err) 
    { 

     message.reply("Your code contains errors! ```" + err + "```"); 
    } 
    else 
    { 
message.reply("No Errors!"); 
    } 

    } 
+0

ほんの少しのノート、誰かが '\' \その後、 何かを書くとしたら、\ 'jsの //コード ' \ '\ \' が、それはあなたの文字列の抽出コードを破ります。 – macdja38

答えて

1

構文チェッカーの作品をチェックし、エラーがあるかどうかをチェックするために使用します。これは、渡されたディレクトリ内のすべてのファイルを分析してファイルに出力することによって実行されます。要求ごとに一時ファイルを作成し、シェルを使ってプログラムを実行する必要があります(child_processまたはexecを見てください)。

すべてのモジュールは、コードがファイル拡張子からどの言語であるかを最終的に判断し、exec('php -l file/path/here.php', callbackFunctionHere)のようなものを実行します。これはPHP用に実行され、その他はruby -c,python -m py_compile,perl -c,luac -p,bash -nです。 gcc -fsyntax_onlyおよびuglifyjs -o /dev/null

その知識のなかで、ファイルシステムをいじるのはまったく意味がありません。ちょうどexec("echo '" + codeStr + "' | php -l', callbackFunctionHere);のようなものを使用してください。 php -lを必要な箇所に交換してください。それ以外の場合は奇妙なエラーに終わるので、codeStrにある可能性のあるescape any single quotesを確認してください。この上

+0

ああ、情報をありがとう、受け入れられたとマークされています。 – Select

関連する問題