Commit 4b2a228c authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Group list of new members by classes.

parent 13f0e3e1
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -16,19 +16,22 @@ module JsDuck
    # Generates list of new classes & members in this version.
    def initialize(relations, doc_formatter)
      @doc_formatter = doc_formatter
      @new_members = []

      @classes = []
      relations.each do |cls|
        if !cls[:meta][:private]
          group = {:name => cls[:name], :members => []}
          cls.all_local_members.each do |m|
            @new_members << m if m[:meta][:new] && !m[:meta][:private] && !m[:meta][:hide]
            group[:members] << m if m[:meta][:new] && !m[:meta][:private] && !m[:meta][:hide]
          end
          @classes << group if group[:members].length > 0
        end
      end
    end

    # Returns the HTML
    def to_html(style="")
      html = "<ul>" + @new_members.map {|m| "<li>#{link(m)}</li>" }.join + "</ul>"
      html = @classes.map {|c| render_class(c) }.flatten.join("\n")

      return <<-EOHTML
      <div id='news-content' style='#{style}'>
@@ -41,8 +44,17 @@ module JsDuck
      EOHTML
    end

    def render_class(cls)
      [
        "<h3>#{cls[:name]}</h3>",
        "<ul class='links'>",
        cls[:members].map {|m| "<li>" + link(m) + "</li>" },
        "</ul>",
      ]
    end

    def link(m)
      @doc_formatter.link(m[:owner], m[:name], "#{m[:owner]}.#{m[:name]}", m[:tagname], m[:meta][:static])
      @doc_formatter.link(m[:owner], m[:name], m[:name], m[:tagname], m[:meta][:static])
    end

  end