Commit 76e041b3 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Split list of new members also into columns.

Use the Columns class to do the splitting in exactly the same way
as in Categories.
parent c823b0b7
Loading
Loading
Loading
Loading
+36 −18
Original line number Diff line number Diff line
require 'jsduck/util/null_object'
require 'jsduck/columns'

module JsDuck

@@ -16,6 +17,7 @@ module JsDuck
    # Generates list of new classes & members in this version.
    def initialize(relations, doc_formatter)
      @doc_formatter = doc_formatter
      @columns = Columns.new(:members)

      @classes = []
      relations.each do |cls|
@@ -31,20 +33,35 @@ module JsDuck

    # Returns the HTML
    def to_html(style="")
      html = @classes.map {|c| render_class(c) }.flatten.join("\n")
      return [
        "<div id='news-content' style='#{style}'>",
          "<h1>New in this version</h1>",
          "<div class='section'>",
            "<h1>New members</h1>",
            render_columns(@classes),
            "<div style='clear:both'></div>",
          "</div>",
        "</div>",
      ].flatten.join("\n")
    end

    private

      return <<-EOHTML
      <div id='news-content' style='#{style}'>
        <h1>New in this version</h1>
        <div class='section'>
          <h1>Members</h1>
          #{html}
        </div>
      </div>
      EOHTML
    def render_columns(classes)
      align = ["left-column", "middle-column", "right-column"]
      i = -1
      return @columns.split(classes, 3).map do |col|
        i += 1
        [
          "<div class='#{align[i]}'>",
          render_classes(col),
          "</div>",
        ]
      end
    end

    def render_class(cls)
    def render_classes(classes)
      return classes.map do |cls|
        [
          "<h3>#{cls[:name]}</h3>",
          "<ul class='links'>",
@@ -52,6 +69,7 @@ module JsDuck
          "</ul>",
        ]
      end
    end

    def link(m)
      @doc_formatter.link(m[:owner], m[:name], m[:name], m[:tagname], m[:meta][:static])