docs: function(from, to){
          // it makes function useful with array iterate methods, i.e.
          // ['foo', 'bar'].map(basis.path.relative)
          if (typeof to != 'string')
          {
            to = from;
            from = baseURI;
          }
  
          from = utils.normalize(from);
          to = utils.normalize(to);
  
          if (from[0] == '/' && to[0] != '/')
            return from;
          if (to[0] == '/' && from[0] != '/')
            return to;
  
          var base = from.replace(/^\/$/, '').split(/\//);
          var path = to.replace(/^\/$/, '').split(/\//);
          var result = [];
          var i = 0;
  
          while (path[i] == base[i] && typeof base[i] == 'string')
            i++;
  
          for (var j = base.length - i; j > 0; j--)
            result.push('..');
  
          return result.concat(path.slice(i).filter(Boolean)).join('/');
        }