class JsDuck::Categories::Factory
Reads in categories and outputs them as HTML div
Public Class Methods
create(filename, doc_formatter, relations)
click to toggle source
# File lib/jsduck/categories/factory.rb, line 12 def self.create(filename, doc_formatter, relations) if filename categories = Categories::File.new(filename, relations) else categories = Categories::Auto.new(relations) end Categories::Factory.new(categories.generate, doc_formatter, relations) end
new(categories, doc_formatter, relations={})
click to toggle source
# File lib/jsduck/categories/factory.rb, line 21 def initialize(categories, doc_formatter, relations={}) @categories = categories @class_name = Categories::ClassName.new(doc_formatter, relations) @columns = Columns.new("classes") end
Public Instance Methods
to_html(style="")
click to toggle source
Returns HTML listing of classes divided into categories
# File lib/jsduck/categories/factory.rb, line 28 def to_html(style="") html = @categories.map do |category| [ "<div class='section'>", "<h1>#{category['name']}</h1>", render_columns(category['groups']), "<div style='clear:both'></div>", "</div>", ] end.flatten.join("\n") return <<-EOHTML <div id='categories-content' style='#{style}'> #{html} </div> EOHTML end
Private Instance Methods
render_columns(groups)
click to toggle source
# File lib/jsduck/categories/factory.rb, line 48 def render_columns(groups) align = ["left-column", "middle-column", "right-column"] i = -1 return @columns.split(groups, 3).map do |col| i += 1 [ "<div class='#{align[i]}'>", render_groups(col), "</div>", ] end end
render_groups(groups)
click to toggle source
# File lib/jsduck/categories/factory.rb, line 61 def render_groups(groups) return groups.map do |g| [ "<h3>#{g['name']}</h3>", "<ul class='links'>", g["classes"].map {|cls| "<li>" + @class_name.render(cls) + "</li>" }, "</ul>", ] end end