From 533b30fbe2cb9d057c5e1b27bbb322ec9550422f Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Tue, 18 Dec 2012 19:51:41 +0200 Subject: [PATCH] Move Ext.define() default values also to tag classes. --- lib/jsduck/ast.rb | 7 +------ lib/jsduck/builtins/alias.rb | 1 + lib/jsduck/builtins/alternate_class_names.rb | 1 + lib/jsduck/builtins/extends.rb | 1 + lib/jsduck/builtins/mixins.rb | 1 + lib/jsduck/builtins/requires.rb | 1 + lib/jsduck/builtins/tag.rb | 5 +++++ lib/jsduck/builtins/uses.rb | 1 + lib/jsduck/builtins_registry.rb | 7 +++++++ 9 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/jsduck/ast.rb b/lib/jsduck/ast.rb index 6f03a80b..053df19e 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 f4bacc29..e384a617 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 221ea020..2afd9658 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 de4668ce..37fb0230 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 01f0c425..eabf824b 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 2dd4e4dd..9cd4f235 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 9fa559ca..f2f5c166 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 75d6cb5d..fa767a17 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 a988c764..f00934e2 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 -- GitLab