相対パスのファイルを EmEditor で開くマクロ

説明

このマクロは、選択状態にある相対パスを EmEditor で開くマクロです。実行する際に、それが相対パスかどうかを判断しません。まあ実際にそのファイルが無くても、 EmEditer がその名前のファイルを作り出し、そのファイルを開いてしまうだけです。

一応きちんと動いてますが、文法的におかしい所などがありましたら、指摘していただけるとありがたいです。

マクロ

//openfile.jsee
//相対パスを選択しこのマクロを実行すると、そのファイルを EmEditor で開きます。

var base = document.FullName;
var pathn = document.selection.text;

var r = new RegExp("/","g");
pathn = pathn.replace(r, "\\");//"/"を"\"に変換

var re = /#(.*)/g;
var idfind = pathn.match(re);//IDがあるか検索
if (idfind != null){
  pathn = pathn.replace(re, "");//#以降を消す
}

var rep = /^\.\\/g;
var headslash = pathn.match(rep);//行頭の"./"を探す
if (headslash != null){
  pathn = pathn.replace(rep, "");//あったら消す
}

function joinPath(base,pathn){//相対パスを絶対パスに変換
  if(base.substr(base.length-1) != '\\'){
    base = base.split('\\');
    base.length--;
    base = base.join('\\');
  }else{
    base = base.substr(0,base.length-1);
  }
  base = base.split('\\');
  while(0 == pathn.indexOf('..\\')){
    base.length--;
    pathn = pathn.substr(3);
  }
  base = base.join('\\');
  base = base + '\\' + pathn;
  return base;
}

var AbsolutePath = joinPath(base,pathn);
var baselength = AbsolutePath.length;//選択したパスの長さを計測
var slashpos = AbsolutePath.lastIndexOf("\\");//\を後ろから検索
if (slashpos + 1 == baselength){//パスが\で終わっていたら
  AbsolutePath = AbsolutePath + "index.html";//ケツに\index.htmlを足す
}

editor.OpenFile( AbsolutePath, eeEncodingSystemDefault, eeOpenAllowNewWindow );