LoginSignup
0

More than 3 years have passed since last update.

JSのプログラムでincludeするコンパイラ的な何かをかいたお話

Posted at

どうも、フミです。
京都の上のほうから市内に向かう電車の中で書いているので、誤字はお許しください...

普段からC系の言語とJavascriptを二刀使いしている皆さん、皆さんはJavascriptをかいていて、あ~、include文使えたらいいのにな...
って思ったことありませんか?

いや、いやいや、シンキングフェイスをしたそこのあなた、あなたの気持ちはよ~くわかりますとも!ええ、ええ、そうでしょうね!importを使えばいいだろう!でしょうね!!

使いこなせるのであればいいのですが、importは少し書き方が特殊になる上に、スコープ的にめんどくさいんです(個人の感想です。)

そこで、JSでもinclude文が使えるようになるためのプログラムを作りました!!
5分くおりてぃなので悪しからず...

やったこと

Nodejsを使って既存のファイルを解析し、include文を適用したjsファイルをa.jsとしてカレントディレクトリに出力します。

多分コード読んだほうがわかるので...

cmp.js
const main_file=process.argv[2];
const fs = require('fs');
function include(fname){
    let code = String(fs.readFileSync(fname));
    console.log("include \n\n"+code);
    const analy=code.split("#include ");
    let program=analy[0];
    for(let i=1;i<analy.length;i++){
        program+="\n"+include(analy[i].split(/\r\n|\n|\r/)[0])+"\n";
    }
    program+=analy.pop().split(/\r\n|\n|\r/,2)[1];
    return program;
}
fs.writeFileSync("a.js", include(main_file));

以上!!

使い方

コンパイル()したいファイルとincludeしたいファイルの拡張子は何でもいいです。
コマンドラインで

node cmp.js [コンパイルしたいメインファイルのパス]

としてやるとa.jsに結果が出力されます。
includeしたいファイル内でさらにincludeしても大丈夫です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0