Commit 13f89f6c authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

New --link template placeholders: %# and %-

These two replace the previous %M, allowing a bit more flexibility.
Now we can choose whether to use "-" or "#" as separator between
classname and member name.  Still, even more flexible solution would
probably be in order.

Used the new syntax for SDK and made inline links in documentation
finally work.
parent cb4a4da9
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -47,8 +47,9 @@ opts = OptionParser.new do | opts |
  opts.on('--link=TPL', "HTML template for replacing {@link}.",
    "Possible placeholders:",
    "%c - full class name (e.g. 'Ext.Panel')",
    "%m - class member name (e.g. 'urlEncode')",
    "%M - class member name, prefixed with hash (e.g. '#urlEncode')",
    "%m - class member name prefixed with member type (e.g. 'method-urlEncode')",
    "%# - inserts '#' if member name present",
    "%- - inserts '-' if member name present",
    "%a - anchor text for link",
    "Default value in export: '<a href=\"%c%M\">%a</a>'") do |tpl|
    app.link_tpl = tpl
+9 −6
Original line number Diff line number Diff line
@@ -11,8 +11,9 @@ module JsDuck
    # Can contain placeholders:
    #
    # %c - full class name (e.g. "Ext.Panel")
    # %m - class member name (e.g. "urlEncode")
    # %M - class member name, prefixed with hash (e.g. "#urlEncode")
    # %m - class member name prefixed with member type (e.g. "method-urlEncode")
    # %# - inserts "#" if member name present
    # %- - inserts "-" if member name present
    # %a - anchor text for link
    #
    # Default value: '<a href="%c%M">%a</a>'
@@ -46,7 +47,7 @@ module JsDuck
      @context = ""
      @max_length = 120
      @relations = {}
      @link_tpl = '<a href="%c%M">%a</a>'
      @link_tpl = '<a href="%c%#%m">%a</a>'
      @img_tpl = '<img src="%u" alt="%a"/>'
      @link_re = /\{@link\s+(\S*?)(?:\s+(.+?))?\}/m
      @img_re = /\{@img\s+(\S*?)(?:\s+(.+?))?\}/m
@@ -145,14 +146,16 @@ module JsDuck
      # prepend type name to member name
      member = member && (get_member_type(cls, member).to_s + "-" + member)

      @link_tpl.gsub(/(%\w)/) do
      @link_tpl.gsub(/(%[\w#-])/) do
        case $1
        when '%c'
          cls
        when '%m'
          member ? member : ""
        when '%M'
          member ? "#"+member : ""
        when '%#'
          member ? "#" : ""
        when '%-'
          member ? "-" : ""
        when '%a'
          CGI.escapeHTML(anchor_text||"")
        else
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ OUT_DIR=~/public_html/docs
ruby bin/jsduck \
     --template-links \
     --external=Error \
     --link='<a href="#/api/%c" rel="%c%M" class="docClass">%a</a>' \
     --link='<a href="#/api/%c%-%m" rel="%c%#%m" class="docClass">%a</a>' \
     --img='<p><img src="doc-resources/%u" alt="%a"></p>' \
     --output=$OUT_DIR \
     $SDK_DIR/extjs/src $SDK_DIR/platform/src $SDK_DIR/platform/core/src
+7 −6
Original line number Diff line number Diff line
@@ -12,12 +12,13 @@ Ext.define("Docs.ClassLoader", {
     * @param {Boolean} noHistory  true to disable adding entry to browser history
     */
    load: function(cls, noHistory) {
        var member,
            hashIdx = cls.indexOf('#');
        var member;

        if (hashIdx > 0) {
            member = cls.substr(hashIdx + 1);
            cls = cls.substr(0, hashIdx);
        // separate class and member name
        var matches = cls.match(/^(.*?)(?:#(.*))?$/);
        if (matches) {
            cls = matches[1];
            member = matches[2];
        }

        if (!noHistory) {
@@ -71,7 +72,7 @@ Ext.define("Docs.ClassLoader", {
        docOverviewTab.setLoading(false);

        if (anchor) {
            Ext.getCmp('doc-overview').scrollToEl("a[name=" + anchor + "]");
            Ext.getCmp('doc-overview').scrollToEl("#" + anchor);
        } else {
            var docContent = Ext.get(Ext.query('#doc-overview .x-panel-body')[0]);
            docContent.scrollTo('top', 0);