diff --git a/lib/jsduck/merger.rb b/lib/jsduck/merger.rb index e86b23ec45de3f52b821c7aca6d8f4465f8c8db7..5d8956483d7cea86e7c8449cfe149c24d3116d76 100644 --- a/lib/jsduck/merger.rb +++ b/lib/jsduck/merger.rb @@ -41,8 +41,6 @@ module JsDuck :singleton => false, }) - h[:aliases] = build_aliases_hash(h[:aliases] || []) - h[:enum] = merge_enum(docs, code) if docs[:enum] h[:members] = [] @@ -94,22 +92,6 @@ module JsDuck h end - # Given array of full alias names like "foo.bar", "foo.baz" - # build hash like {"foo" => ["bar", "baz"]} - def build_aliases_hash(aliases) - hash={} - aliases.each do |a| - if a =~ /^([^.]+)\.(.+)$/ - if hash[$1] - hash[$1] << $2 - else - hash[$1] = [$2] - end - end - end - hash - end - def merge_params(docs, code) explicit = docs[:params] || [] implicit = code_matches_doc?(docs, code) ? (code[:params] || []) : [] diff --git a/lib/jsduck/tag/alias.rb b/lib/jsduck/tag/alias.rb index 28026262ad782d5d40d656e9b948b626d12e1d30..3b64c639eb0577f6e023c524dc1949221c23c290 100644 --- a/lib/jsduck/tag/alias.rb +++ b/lib/jsduck/tag/alias.rb @@ -8,6 +8,7 @@ module JsDuck::Tag @key = :aliases @ext_define_pattern = "alias" @ext_define_default = {:aliases => []} + @merge_context = :class end # For backwards compatibility decide whether the @alias was used @@ -36,5 +37,25 @@ module JsDuck::Tag def parse_ext_define(cls, ast) cls[:aliases] += JsDuck::Js::Utils.make_string_list(ast) end + + def merge(h, docs, code) + h[:aliases] = build_aliases_hash(docs[:aliases] || code[:aliases] || []) + end + + # Given array of full alias names like "foo.bar", "foo.baz" + # build hash like {"foo" => ["bar", "baz"]} + def build_aliases_hash(aliases) + hash={} + aliases.each do |a| + if a =~ /^([^.]+)\.(.+)$/ + if hash[$1] + hash[$1] << $2 + else + hash[$1] = [$2] + end + end + end + hash + end end end