Commit e2c64588 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Move aliases merging to Tag class.

parent f14b5154
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -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] || []) : []
+21 −0
Original line number Diff line number Diff line
@@ -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