From 13f89f6c76bb49b3b61d5dcaf9c169d886e457e3 Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Fri, 13 May 2011 15:57:45 +0300 Subject: [PATCH] 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. --- bin/jsduck | 5 +++-- lib/jsduck/doc_formatter.rb | 15 +++++++++------ sdk.sh | 2 +- template/js/ClassLoader.js | 13 +++++++------ 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/bin/jsduck b/bin/jsduck index 6b766ce1..c831d128 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 0c016067..d4100cf8 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 28940f5e..b6d8f279 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 73454f47..6e659ed1 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); -- GitLab