diff --git a/bin/jsduck b/bin/jsduck index 6b766ce19b4140beda5ef60d85d2c017e9bab27f..c831d128b0dc4f0d9a670c63166efed29daa4ace 100755 --- a/bin/jsduck +++ b/bin/jsduck @@ -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'") do |tpl| app.link_tpl = tpl diff --git a/lib/jsduck/doc_formatter.rb b/lib/jsduck/doc_formatter.rb index 0c016067090deebfdb50a8fa9797cc80d085cb27..d4100cf8922e2d989c73e32266647de56817d64e 100644 --- a/lib/jsduck/doc_formatter.rb +++ b/lib/jsduck/doc_formatter.rb @@ -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' @@ -46,7 +47,7 @@ module JsDuck @context = "" @max_length = 120 @relations = {} - @link_tpl = '%a' + @link_tpl = '%a' @img_tpl = '%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 diff --git a/sdk.sh b/sdk.sh index 28940f5e5e8f15d8ac81181bed3aba929b83bc84..b6d8f2799b7de9ed189d18d7dff847e0d264b030 100755 --- a/sdk.sh +++ b/sdk.sh @@ -10,7 +10,7 @@ OUT_DIR=~/public_html/docs ruby bin/jsduck \ --template-links \ --external=Error \ - --link='%a' \ + --link='%a' \ --img='

%a

' \ --output=$OUT_DIR \ $SDK_DIR/extjs/src $SDK_DIR/platform/src $SDK_DIR/platform/core/src diff --git a/template/js/ClassLoader.js b/template/js/ClassLoader.js index 73454f47aa04e45d050c5bafaa0b08b6a8519b70..6e659ed12b76563a3cd9d8e840a4641fd7c951f7 100644 --- a/template/js/ClassLoader.js +++ b/template/js/ClassLoader.js @@ -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);