From 61311a01508312a9a6029b6a8b65596b7a28b43a Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Wed, 23 Nov 2011 18:08:24 +0200 Subject: [PATCH] Remove hard-coding of signature attributes. List of attributes to show in signature is now kept in Class and used by both front- and backend. --- lib/jsduck/app_data.rb | 2 ++ lib/jsduck/class.rb | 14 ++++++++++++++ lib/jsduck/renderer.rb | 23 +++-------------------- template/app/view/HoverMenu.js | 4 ++-- template/app/view/cls/Toolbar.js | 10 ++-------- 5 files changed, 23 insertions(+), 30 deletions(-) diff --git a/lib/jsduck/app_data.rb b/lib/jsduck/app_data.rb index f50cebc6..ec0361f6 100644 --- a/lib/jsduck/app_data.rb +++ b/lib/jsduck/app_data.rb @@ -2,6 +2,7 @@ require 'jsduck/json_duck' require 'jsduck/icons' require 'jsduck/search_data' require 'jsduck/stats' +require 'jsduck/class' module JsDuck @@ -25,6 +26,7 @@ module JsDuck :examples => @examples.to_array, :search => SearchData.new.create(@relations.classes), :stats => @opts.stats ? Stats.new.create(@relations.classes) : [], + :signatureAttributes => Class.signature_attributes, }) + ";\n" File.open(filename, 'w') {|f| f.write(js) } end diff --git a/lib/jsduck/class.rb b/lib/jsduck/class.rb index 9cdd657c..4c51d914 100644 --- a/lib/jsduck/class.rb +++ b/lib/jsduck/class.rb @@ -255,6 +255,20 @@ module JsDuck :css_mixin => [], } end + + # Returns array of attributes to be shown in member signatures + # (and in order they should be shown in). + def self.signature_attributes + return [ + :static, + :protected, + :deprecated, + :required, + :template, + :abstract, + :readonly, + ] + end end end diff --git a/lib/jsduck/renderer.rb b/lib/jsduck/renderer.rb index ef65db23..f0c06876 100644 --- a/lib/jsduck/renderer.rb +++ b/lib/jsduck/renderer.rb @@ -1,3 +1,4 @@ +require 'jsduck/class' require 'cgi' module JsDuck @@ -221,26 +222,8 @@ module JsDuck end after = "" - if m[:attributes][:protected] - after += "protected" - end - if m[:attributes][:static] - after += "static" - end - if m[:attributes][:deprecated] - after += "deprecated" - end - if m[:attributes][:required] - after += "required" - end - if m[:attributes][:template] - after += "template" - end - if m[:attributes][:abstract] - after += "abstract" - end - if m[:attributes][:readonly] - after += "readonly" + Class.signature_attributes.each do |attr| + after += "#{attr}" if m[:attributes][attr] end uri = "#!/api/#{m[:owner]}-#{m[:id]}" diff --git a/template/app/view/HoverMenu.js b/template/app/view/HoverMenu.js index 47c23cb2..edea811c 100644 --- a/template/app/view/HoverMenu.js +++ b/template/app/view/HoverMenu.js @@ -49,8 +49,8 @@ Ext.define('Docs.view.HoverMenu', { renderLink: function(values) { var url = values.url || values.cls; var label = values.label || values.cls; - var tags = Ext.Array.map(['static', 'protected', 'deprecated', 'template', 'required', 'abstract', 'readonly'], function(tag) { - return values[tag] ? ''+tag+'' : ''; + var tags = Ext.Array.map(Docs.data.signatureAttributes, function(tag) { + return values.attributes[tag] ? ''+tag+'' : ''; }).join(' '); return Ext.String.format('{1} {2}', url, label, tags); } diff --git a/template/app/view/cls/Toolbar.js b/template/app/view/cls/Toolbar.js index 179cb4a4..f691fc22 100644 --- a/template/app/view/cls/Toolbar.js +++ b/template/app/view/cls/Toolbar.js @@ -167,7 +167,7 @@ Ext.define('Docs.view.cls.Toolbar', { // creates store tha holds link records createStore: function(records) { var store = Ext.create('Ext.data.Store', { - fields: ['id', 'cls', 'url', 'label', 'inherited', 'static', 'deprecated', 'protected', 'abstract', 'template', 'readonly', 'required'] + fields: ['id', 'cls', 'url', 'label', 'inherited', 'attributes'] }); store.add(records); return store; @@ -180,13 +180,7 @@ Ext.define('Docs.view.cls.Toolbar', { url: member ? (cls + "-" + member.id) : cls, label: member ? ((member.tagname === "method" && member.name === "constructor") ? "new "+cls : member.name) : cls, inherited: member ? member.owner !== cls : false, - 'static': member ? member.attributes['static'] : false, - deprecated: member ? member.attributes['deprecated'] : false, - 'protected': member ? member.attributes['protected'] : false, - 'abstract': member ? member.attributes['abstract'] : false, - template: member ? member.attributes['template'] : false, - readonly: member ? member.attributes['readonly'] : false, - required: member ? member.attributes['required'] : false + attributes: member ? member.attributes : {} }; }, -- GitLab