code: function link(obj, short, classes) {
      if (typeof obj === 'string') obj = list[obj] || { id: obj };
  
      // broken link. `options.brokenLinks` define action
      if (!obj.path) {
        return obj.id;
        /*if (options.brokenLinks === 'throw') {
          throw 'Link is broken: ' + obj.id;
        }
        return options.brokenLinks === 'show' ? '[[' + obj.id + ']]' : obj.id;*/
      }
      //
      let r = `<a href="#${obj.path}" ` +
              `class="${(classes || []).join(' ')}" ` +
              'title="' + obj.id + (obj.type ? ` (${obj.type})` : '') + '" ' +
              `data-id="${obj.id.toLowerCase()}">`;
      r += typeof short === 'string' ? short : short ? obj.name : obj.id;
      r += '</a>';
      return r;
    }
docs: render link N.B. logic is way tricky to move to templates. beside, this function is used as parameter in some Array#map() operations