diff --git a/lib/jsduck/ast.rb b/lib/jsduck/ast.rb index 6f03a80b5f219133a8504c18ab5e16472a4cda37..053df19e2f8524bd04c12ae33b814a67c21a7ad6 100644 --- a/lib/jsduck/ast.rb +++ b/lib/jsduck/ast.rb @@ -196,12 +196,7 @@ module JsDuck # given cls Hash def detect_ext_define(cls, ast) # defaults - cls[:extends] = "Ext.Base" - cls[:requires] = [] - cls[:uses] = [] - cls[:alternateClassNames] = [] - cls[:mixins] = [] - cls[:aliases] = [] + cls.merge!(BuiltinsRegistry.ext_define_defaults) cls[:members] = [] cls[:code_type] = :ext_define diff --git a/lib/jsduck/builtins/alias.rb b/lib/jsduck/builtins/alias.rb index f4bacc29a4cb2d053ee4f98b8c1af1c318ae3604..e384a6177c5d765b7681b5cab8eca5b7b378c7bf 100644 --- a/lib/jsduck/builtins/alias.rb +++ b/lib/jsduck/builtins/alias.rb @@ -6,6 +6,7 @@ module JsDuck::Builtins def initialize @pattern = "alias" @ext_define_pattern = "alias" + @ext_define_default = {:aliases => []} end # For backwards compatibility decide whether the @alias was used diff --git a/lib/jsduck/builtins/alternate_class_names.rb b/lib/jsduck/builtins/alternate_class_names.rb index 221ea020f9f82d2e25d92f130c5bf128c6f22c94..2afd96588f4c28bb86491ee49d659bca8e647d0e 100644 --- a/lib/jsduck/builtins/alternate_class_names.rb +++ b/lib/jsduck/builtins/alternate_class_names.rb @@ -6,6 +6,7 @@ module JsDuck::Builtins def initialize @pattern = ["alternateClassName", "alternateClassNames"] @ext_define_pattern = "alternateClassName" + @ext_define_default = {:alternateClassNames => []} end # @alternateClassNames classname1 classname2 ... diff --git a/lib/jsduck/builtins/extends.rb b/lib/jsduck/builtins/extends.rb index de4668ce1cb8e4c038fa43802e1d8a9b3f699b17..37fb023050e15b6505e5f7786ee7127b0ae8cd8f 100644 --- a/lib/jsduck/builtins/extends.rb +++ b/lib/jsduck/builtins/extends.rb @@ -6,6 +6,7 @@ module JsDuck::Builtins def initialize @pattern = ["extend", "extends"] @ext_define_pattern = "extend" + @ext_define_default = {:extends => "Ext.Base"} end # @extends classname diff --git a/lib/jsduck/builtins/mixins.rb b/lib/jsduck/builtins/mixins.rb index 01f0c4255ac993c0bdca51671f66d6768f0d5f41..eabf824bb34e9983740f433462a89655449790d9 100644 --- a/lib/jsduck/builtins/mixins.rb +++ b/lib/jsduck/builtins/mixins.rb @@ -5,6 +5,7 @@ module JsDuck::Builtins def initialize @pattern = ["mixin", "mixins"] @ext_define_pattern = "mixins" + @ext_define_default = {:mixins => []} end # @mixins classname1 classname2 ... diff --git a/lib/jsduck/builtins/requires.rb b/lib/jsduck/builtins/requires.rb index 2dd4e4dd8bc225c72e34b99a4135cabc973bae7a..9cd4f23598d5819aed05b48eb0ee902be9ba267d 100644 --- a/lib/jsduck/builtins/requires.rb +++ b/lib/jsduck/builtins/requires.rb @@ -6,6 +6,7 @@ module JsDuck::Builtins def initialize @pattern = "requires" @ext_define_pattern = "requires" + @ext_define_default = {:requires => []} end # @requires classname1 classname2 ... diff --git a/lib/jsduck/builtins/tag.rb b/lib/jsduck/builtins/tag.rb index 9fa559ca73b11f6bdf8eca0bee5fdfa20ec2b14f..f2f5c1667945637d74f5b7b76689438fbb51c636 100644 --- a/lib/jsduck/builtins/tag.rb +++ b/lib/jsduck/builtins/tag.rb @@ -16,6 +16,11 @@ module JsDuck::Builtins # #parse_ext_define method to be invoked. attr_reader :ext_define_pattern + # The default value to use when Ext.define is encountered, but the + # key in the config object itself is not found. + # This must be a Hash defining the key and value. + attr_reader :ext_define_default + # Called by Ast class to parse a config in Ext.define(). # @param {Hash} cls A simple Hash representing a class on which # various properties can be set. diff --git a/lib/jsduck/builtins/uses.rb b/lib/jsduck/builtins/uses.rb index 75d6cb5de1d4c6beb409638718b75a6f68469d3b..fa767a1743877d700f0c34fdfed41e860c5dfacd 100644 --- a/lib/jsduck/builtins/uses.rb +++ b/lib/jsduck/builtins/uses.rb @@ -6,6 +6,7 @@ module JsDuck::Builtins def initialize @pattern = "uses" @ext_define_pattern = "uses" + @ext_define_default = {:uses => []} end # @uses classname1 classname2 ... diff --git a/lib/jsduck/builtins_registry.rb b/lib/jsduck/builtins_registry.rb index a988c764aaca90315198a96d7ec8272d21746249..f00934e21853c4957db139b8816cb7cc29d76e71 100644 --- a/lib/jsduck/builtins_registry.rb +++ b/lib/jsduck/builtins_registry.rb @@ -10,6 +10,7 @@ module JsDuck def initialize @patterns = {} @ext_define_patterns = {} + @ext_define_defaults = {} load_tag_classes(File.dirname(__FILE__) + "/builtins") instantiate_tags end @@ -29,6 +30,9 @@ module JsDuck Array(tag.ext_define_pattern).each do |pattern| @ext_define_patterns[pattern] = tag end + if tag.ext_define_default + @ext_define_defaults.merge!(tag.ext_define_default) + end end end @@ -42,6 +46,9 @@ module JsDuck @ext_define_patterns[name] end + # Default values for class config when Ext.define is encountered. + attr_reader :ext_define_defaults + end end