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 : {}
};
},