diff --git a/lib/jsduck/app_data.rb b/lib/jsduck/app_data.rb index f50cebc6e19f33da2b60f9d3cf310720ec91f85d..ec0361f634d702cf3dac660d53ef6fdf311af22f 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 9cdd657c7bca3f3e6624f5552df79bb441046246..4c51d914d4b804b4c4761dd5883a7f2cca178e3d 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 ef65db23471785151e22bba2dc73071801c933d4..f0c06876a1fad11b4d3b341a38693f173eed6229 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 47c23cb2d1637791ab1eda1c1138e68191c3e6ad..edea811c881c7ebef9b8afa83e578f0351598ca1 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 179cb4a4e2c822c939adde1e24d81fda9c081e65..f691fc22a80a9cff76a3f584f72ab13e954b0bb3 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 : {} }; },