LoginSignup
1
1

More than 5 years have passed since last update.

Coffee ScriptでRubyの`basename`や`dirname`みたいな関数を使う

Posted at

ありそうだと思ったのに、意外となかったので半分ぐらいコピペで作りました。

basename = (path,ext="") ->
  base = new String(path).substring(path.lastIndexOf('/') + 1)
  base.replace(new RegExp(ext+'$','g'),"")

dirname = (path) -> path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '')

basename("foo/bar.txt",".txt")みたいに使います。ただbasename("foo/bar.txt","xt") #-> bar.t のように第二引数が拡張子でなくても反応するのでちょっと注意。

一応Javascriptも

やっぱりCoffee使ってる人よりもJSで書いてる人の方が多いのでJavascriptのコードも載せておきます。
自動生成されたコードだけどまあやってることは同じです。こうしてみると無駄に長いですね。

  var basename, dirname;

  basename = function(path, ext) {
    var base;
    if (ext == null) {
      ext = "";
    }
    base = new String(path).substring(path.lastIndexOf('/') + 1);
    return base.replace(new RegExp(ext + '$', 'g'), "");
  };

  dirname = function(path) {
    return path.replace(/\\/g, '/').replace(/\/[^\/]*$/, '');
  };

参考

string - Need a basename function in Javascript - Stack Overflow
http://stackoverflow.com/questions/3820381/need-a-basename-function-in-javascript

Javascript basename() and dirname() « planetOzh
http://planetozh.com/blog/2008/04/javascript-basename-and-dirname/

coffeescript - How to rewrite a javascript replace code to coffee script - Stack Overflow
http://stackoverflow.com/questions/19417726/how-to-rewrite-a-javascript-replace-code-to-coffee-script/19417765?noredirect=1#19417765

1
1
0

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
1
1