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

Auto-detect methods like SomeClass.method

Quite often this form is used in text instead of SomeClass#method.
parent e26e01aa
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -231,9 +231,14 @@ module JsDuck
      elsif cls && cls =~ /\./
        if @relations[cls]
          return link(cls, nil, cls)
        else
          cls2, member2 = split_to_cls_and_member(cls)
          if @relations[cls2] && get_matching_member(cls2, member2)
            return link(cls2, member2, cls2+"."+member2)
          else
            warn_magic_link("#{cls} links to non-existing class")
          end
        end
      elsif !cls && member
        if get_matching_member(@class_context, member)
          return link(@class_context, member, member)
@@ -245,6 +250,11 @@ module JsDuck
      return "#{cls}#{member ? '#' : ''}#{member}"
    end

    def split_to_cls_and_member(str)
      parts = str.split(/\./)
      return [parts.slice(0, parts.length-1).join("."), parts.last]
    end

    def warn_magic_link(msg)
      Logger.instance.warn(:link_auto, msg, @doc_context[:filename], @doc_context[:linenr])
    end
+5 −0
Original line number Diff line number Diff line
@@ -212,6 +212,11 @@ describe JsDuck::DocFormatter do
          'Look at <a href="Ext.form.Field#method-getValues">Ext.form.Field.getValues</a>'
      end

      it "converts Ext.encode to method link" do
        @formatter.replace("Look at Ext.encode").should ==
          'Look at <a href="Ext#method-encode">Ext.encode</a>'
      end

      it "converts #bar to link to current class method" do
        @formatter.replace("Look at #bar method").should ==
          'Look at <a href="Context#method-bar">bar</a> method'