File: TableOfContents.rb

package info (click to toggle)
tj3 3.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,048 kB
  • sloc: ruby: 36,481; javascript: 1,113; sh: 19; makefile: 17
file content (52 lines) | stat: -rw-r--r-- 1,442 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env ruby -w
# encoding: UTF-8
#
# = TableOfContents.rb -- The TaskJuggler III Project Management Software
#
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
#               by Chris Schlaeger <cs@taskjuggler.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#

require 'taskjuggler/XMLElement'
require 'taskjuggler/RichText/TOCEntry'

class TaskJuggler

  # This class can be used to store a table of contents. It's just an Array of
  # TOCEntry objects. Each TOCEntry objects represents the title of a section.
  class TableOfContents

    # Create an empty TableOfContents object.
    def initialize
      @entries = []
    end

    # This method must be used to add new TOCEntry objects to the
    # TableOfContents. _entry_ must be a TOCEntry object reference.
    def addEntry(entry)
      @entries << entry
    end

    def each
      @entries.each { |e| yield e }
    end

    # Return HTML elements that represent the content of the TableOfContents
    # object. The result is a tree of XMLElement objects.
    def to_html
      div = XMLElement.new('div',
                           'style' => 'margin-left:15%; margin-right:15%;')
      div << (table = XMLElement.new('table'))
      @entries.each { |e| table << e.to_html }

      div
    end

  end

end