Commit 6f514707 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Rename @alias to @inheritdoc.

parent c500589d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ require 'jsduck/class'
require 'jsduck/icons'
require 'jsduck/search_data'
require 'jsduck/relations'
require 'jsduck/aliases'
require 'jsduck/inherit_doc'
require 'jsduck/exporter'
require 'jsduck/renderer'
require 'jsduck/parallel_wrap'
@@ -42,7 +42,7 @@ module JsDuck
      parsed_files = parallel_parse(@opts.input_files)
      result = aggregate(parsed_files)
      @relations = filter_classes(result)
      Aliases.new(@relations).resolve_all
      InheritDoc.new(@relations).resolve_all
      Lint.new(@relations).run

      @images = Images.new(@opts.images)
+6 −6
Original line number Diff line number Diff line
@@ -120,8 +120,8 @@ module JsDuck
          at_ftype
        elsif look(/@member\b/)
          at_member
        elsif look(/@alias\b/)
          at_alias
        elsif look(/@inheritdoc\b/)
          at_inheritdoc
        elsif look(/@deprecated\b/)
          at_deprecated
        elsif look(/@var\b/)
@@ -326,10 +326,10 @@ module JsDuck
      skip_white
    end

    # matches @alias class.name#type-member
    def at_alias
      match(/@alias/)
      add_tag(:alias)
    # matches @inheritdoc class.name#type-member
    def at_inheritdoc
      match(/@inheritdoc/)
      add_tag(:inheritdoc)
      skip_horiz_white
      if look(@ident_chain_pattern)
        @current_tag[:cls] = ident_chain
+54 −0
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ require 'jsduck/logger'

module JsDuck

  class Aliases
  class InheritDoc
    def initialize(relations)
      @relations = relations
    end
@@ -10,45 +10,45 @@ module JsDuck
    def resolve_all
      @relations.each do |cls|
        cls.each_member do |member|
          if member[:alias]
          if member[:inheritdoc]
            resolve(member)
          end
        end
      end
    end

    # Copy over doc/params/return from original member to alias.
    def resolve(al)
      orig = find_original(al)
      al[:doc] = al[:doc] + "\n\n" + orig[:doc]
      al[:params] = orig[:params] if orig[:params]
      al[:return] = orig[:return] if orig[:return]
    # Copy over doc/params/return from original member to new one.
    def resolve(m)
      orig = find_original(m)
      m[:doc] = m[:doc] + "\n\n" + orig[:doc]
      m[:params] = orig[:params] if orig[:params]
      m[:return] = orig[:return] if orig[:return]
    end

    # Given aliased member, finds the original member.
    # If the original also happens to be an alias, continue recursively.
    def find_original(al)
      context = al[:files][0]
      al_def = al[:alias]
    # Finds the member to which inheritdoc refers to.
    # If the original also happens to alos have @inheritdoc, continue recursively.
    def find_original(m)
      context = m[:files][0]
      inherit = m[:inheritdoc]

      orig = @relations[al_def[:cls]]
      orig = @relations[inherit[:cls]]
      unless orig
        Logger.instance.warn(:alias, "Class #{al_def[:cls]} not found", context[:filename], context[:linenr])
        return al
        Logger.instance.warn(:inheritdoc, "Class #{inherit[:cls]} not found", context[:filename], context[:linenr])
        return m
      end
      orig = orig.get_member(al_def[:member], al_def[:type] || al[:tagname])
      orig = orig.get_member(inherit[:member], inherit[:type] || m[:tagname])
      unless orig
        Logger.instance.warn(:alias, "Member #{al_def[:cls]}##{al_def[:member]} not found", context[:filename], context[:linenr])
        return al
        Logger.instance.warn(:inheritdoc, "Member #{inherit[:cls]}##{inherit[:member]} not found", context[:filename], context[:linenr])
        return m
      end

      if orig[:alias]
      if orig[:inheritdoc]
        find_original(orig)
      else
        orig
      end

    end

  end

end
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ module JsDuck
      @verbose = false
      @warning_docs = [
        [:global, "Member doesn't belong to any class"],
        [:alias, "@alias referring to unknown class or member"],
        [:inheritdoc, "@inheritdoc referring to unknown class or member"],
        [:extend, "@extend or @mixin referring to unknown class"],
        [:link, "{@link} to unknown class or member"],

+1 −1
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ module JsDuck
        :static => !!doc_map[:static],
        :inheritable => !!doc_map[:inheritable],
        :deprecated => detect_deprecated(doc_map),
        :alias => doc_map[:alias] ? doc_map[:alias].first : nil,
        :inheritdoc => doc_map[:inheritdoc] ? doc_map[:inheritdoc].first : nil,
        :meta => detect_meta(doc_map),
      })
      hash[:id] = create_member_id(hash)
Loading