Commit 644ca257 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Refactor the creation of member ID into one spot.

Each member now has an :id property which is created in Merger.

Allows us to get rid of a bunch of duplicated and fragile code for
creating the ID from :static, :tagname and :name properties.
parent 8a25ee65
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -202,17 +202,14 @@ module JsDuck
      # Use the canonical class name for link (not some alternateClassName)
      cls = @relations[cls].full_name
      # prepend type name to member name
      if member
        m_tag = get_member(cls, member, type)
        member = (m_tag[:static] ? "static-" : "") + m_tag[:tagname].to_s + "-" + member
      end
      member = member && get_member(cls, member, type)

      @link_tpl.gsub(/(%[\w#-])/) do
        case $1
        when '%c'
          cls
        when '%m'
          member ? member : ""
          member ? member[:id] : ""
        when '%#'
          member ? "#" : ""
        when '%-'
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ module JsDuck

    def compact_member(m)
      m_copy = {}
      [:name, :tagname, :owner, :protected, :static, :deprecated, :required, :template].each do |key|
      [:name, :tagname, :owner, :protected, :static, :deprecated, :required, :template, :id].each do |key|
        m_copy[key] = m[key]
      end
      m_copy
+7 −1
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ module JsDuck

    # Detects properties common for each doc-object and adds them
    def add_shared(hash, doc_map)
      return hash.merge({
      hash.merge!({
        :private => !!doc_map[:private],
        :protected => !!doc_map[:protected],
        :static => !!doc_map[:static],
@@ -217,6 +217,12 @@ module JsDuck
        :deprecated => detect_deprecated(doc_map),
        :alias => doc_map[:alias] ? doc_map[:alias].first : nil,
      })
      hash[:id] = create_member_id(hash)
      return hash
    end

    def create_member_id(m)
      "#{m[:static] ? 'static-' : ''}#{m[:tagname]}-#{m[:name]}"
    end

    def detect_name(tagname, doc_map, code, name_type = :last_name)
+2 −2
Original line number Diff line number Diff line
@@ -168,7 +168,7 @@ module JsDuck
      inherited = owner == @cls[:name] ? "not-inherited" : "inherited"

      return [
        "<div id='#{m[:static] ? 'static-' : ''}#{m[:tagname]}-#{m[:name]}' class='member #{first_child} #{inherited}'>",
        "<div id='#{m[:id]}' class='member #{first_child} #{inherited}'>",
          # leftmost column: expand button
          "<a href='#' class='side #{expandable}'>",
            "<span>&nbsp;</span>",
@@ -232,7 +232,7 @@ module JsDuck
        after += "<strong class='template-signature'>template</strong>"
      end

      uri = "#!/api/#{m[:owner]}#{m[:static]?'-static':''}-#{m[:tagname]}-#{m[:name]}"
      uri = "#!/api/#{m[:owner]}-#{m[:id]}"

      return [
        before,
+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ module JsDuck
      else
        # when creation of global class is skipped,
        # this owner property can be nil.
        (doc[:owner] || "global").gsub(/\./, '-') + (doc[:static] ? "-static" : "") + "-" + doc[:tagname].to_s + "-" + doc[:name]
        (doc[:owner] || "global").gsub(/\./, '-') + "-" + doc[:id]
      end
    end

Loading