From e2c645883a0f837a6e070c67b051a0ac40c729ea Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Mon, 28 Jan 2013 16:09:19 +0200 Subject: [PATCH] Move aliases merging to Tag class. --- lib/jsduck/merger.rb | 18 ------------------ lib/jsduck/tag/alias.rb | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/jsduck/merger.rb b/lib/jsduck/merger.rb index e86b23ec..5d895648 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 28026262..3b64c639 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 -- GitLab