html-table 1.3.5 → 1.3.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ == 1.3.6 - 19-Sep-2011
2
+ * Fixes header.rb, data.rb and caption.rb for Ruby 1.9.
3
+
1
4
  == 1.3.5 - 1-Sep-2011
2
5
  * Refactored the Rakefile. Removed an old install task, reworked the
3
6
  gem tasks and added a default task.
data/html-table.gemspec CHANGED
@@ -1,27 +1,27 @@
1
1
  require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |gem|
4
- gem.name = 'html-table'
5
- gem.version = '1.3.5'
6
- gem.author = 'Daniel J. Berger'
7
- gem.license = 'Artistic 2.0'
8
- gem.email = 'djberg96@gmail.com'
9
- gem.homepage = 'http://shards.rubyforge.org'
10
- gem.summary = 'A Ruby interface for generating HTML tables'
11
- gem.test_files = Dir['test/*.rb']
12
- gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
4
+ gem.name = 'html-table'
5
+ gem.version = '1.3.6'
6
+ gem.author = 'Daniel J. Berger'
7
+ gem.license = 'Artistic 2.0'
8
+ gem.email = 'djberg96@gmail.com'
9
+ gem.homepage = 'http://shards.rubyforge.org'
10
+ gem.summary = 'A Ruby interface for generating HTML tables'
11
+ gem.test_files = Dir['test/*.rb']
12
+ gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
13
13
 
14
- gem.rubyforge_project = 'shards'
15
- gem.extra_rdoc_files = ['README', 'CHANGES'] + Dir['doc/*.rdoc']
14
+ gem.rubyforge_project = 'shards'
15
+ gem.extra_rdoc_files = ['README', 'CHANGES'] + Dir['doc/*.rdoc']
16
16
 
17
- gem.add_dependency('strongtyping')
18
- gem.add_dependency('structured_warnings')
17
+ gem.add_dependency('strongtyping')
18
+ gem.add_dependency('structured_warnings')
19
19
 
20
- gem.add_development_dependency('test-unit')
20
+ gem.add_development_dependency('test-unit')
21
21
 
22
- gem.description = <<-EOF
23
- The html-table library provides an interface for generating HTML tables
24
- in a syntax comfortable to Ruby programmers, but with some enforcement
25
- of where certain elements can be placed.
26
- EOF
22
+ gem.description = <<-EOF
23
+ The html-table library provides an interface for generating HTML tables
24
+ in a syntax comfortable to Ruby programmers, but with some enforcement
25
+ of where certain elements can be placed.
26
+ EOF
27
27
  end
data/lib/html/body.rb CHANGED
@@ -1,38 +1,37 @@
1
1
  module HTML
2
2
 
3
- # This class represents an HTML table body (<tbody>). It is a
4
- # subclass of Table::TableSection.
5
- #
6
- class Table::Body < Table::TableSection
7
- @indent_level = 3
8
- @end_tags = true
3
+ # This class represents an HTML table body (<tbody>). It is a
4
+ # subclass of Table::TableSection.
5
+ #
6
+ class Table::Body < Table::TableSection
7
+ @indent_level = 3
8
+ @end_tags = true
9
9
 
10
- # Returns a new Table::Body object. Optionally takes a block. If
11
- # an argument is provided, it is treated as content.
12
- #
13
- def initialize(arg = nil, &block)
14
- @html_begin = "<tbody"
15
- @html_end = "</tbody>"
16
- instance_eval(&block) if block_given?
17
- self.content = arg if arg
18
- end
10
+ # Returns a new Table::Body object. Optionally takes a block. If
11
+ # an argument is provided, it is treated as content.
12
+ #
13
+ def initialize(arg = nil, &block)
14
+ @html_begin = "<tbody"
15
+ @html_end = "</tbody>"
16
+ instance_eval(&block) if block_given?
17
+ self.content = arg if arg
18
+ end
19
19
 
20
- # Returns a boolean indicating whether or not end tags, </tbody>, are
21
- # included for each Body object in the final HTML output. The
22
- # default is true.
23
- #
24
- def self.end_tags?
25
- @end_tags
26
- end
20
+ # Returns a boolean indicating whether or not end tags, </tbody>, are
21
+ # included for each Body object in the final HTML output. The
22
+ # default is true.
23
+ #
24
+ def self.end_tags?
25
+ @end_tags
26
+ end
27
27
 
28
- # Sets whether or not end tags are included for each Body object in
29
- # the final HTML output. The default is true. Only true or false are
30
- # valid arguments.
31
- #
32
- def self.end_tags=(bool)
33
- expect(bool,[TrueClass,FalseClass])
34
- @end_tags = bool
35
- end
36
- end
37
-
28
+ # Sets whether or not end tags are included for each Body object in
29
+ # the final HTML output. The default is true. Only true or false are
30
+ # valid arguments.
31
+ #
32
+ def self.end_tags=(bool)
33
+ expect(bool,[TrueClass, FalseClass])
34
+ @end_tags = bool
35
+ end
36
+ end
38
37
  end
data/lib/html/caption.rb CHANGED
@@ -1,48 +1,49 @@
1
1
  module HTML
2
2
 
3
- # This class represents an HTML Caption. Despite the name, it is not
4
- # a subclass of Table. Note that end tags for this class are mandatory.
5
- #
6
- class Table::Caption
7
- include AttributeHandler
8
- include HtmlHandler
3
+ # This class represents an HTML Caption. Despite the name, it is not
4
+ # a subclass of Table. Note that end tags for this class are mandatory.
5
+ #
6
+ class Table::Caption
7
+ include AttributeHandler
8
+ include HtmlHandler
9
9
 
10
- undef_method :configure
11
- @indent_level = 3
10
+ undef_method :configure
11
+ @indent_level = 3
12
12
 
13
- # Returns a new Table::Caption object. Optionally takes a block. If
14
- # an argument is provided it is treated as content.
15
- #
16
- def initialize(arg = nil, &block)
17
- @html_begin = '<caption'
18
- @html_body = ''
19
- @html_end = '</caption>'
20
- instance_eval(&block) if block_given?
21
- self.content = arg if arg
22
- end
23
-
24
- # Adds content to the Table::Caption object.
25
- #
26
- def content=(arg)
27
- @html_body = Table::Content.new(arg.to_s)
28
- end
29
-
30
- # Returns the number of spaces that tags for this class are indented.
31
- # For the Table::Caption class, the indention level defaults to 3.
32
- #
33
- def self.indent_level
34
- @indent_level
35
- end
13
+ # Returns a new Table::Caption object. Optionally takes a block. If
14
+ # an argument is provided it is treated as content.
15
+ #
16
+ def initialize(arg = nil, &block)
17
+ @html_begin = '<caption'
18
+ @html_body = ''
19
+ @html_end = '</caption>'
20
+ instance_eval(&block) if block_given?
21
+ self.content = arg if arg
22
+ end
36
23
 
37
- # Sets the number of spaces that tags for this class are indented.
38
- #
39
- def self.indent_level=(num)
40
- expect(num,Integer)
41
- raise ArgumentError, "indent level must be >= 0" if num < 0
42
- @indent_level = num
43
- end
24
+ # Adds content to the Table::Caption object.
25
+ #
26
+ def content=(arg)
27
+ arg = arg.is_a?(Array) ? arg.join : arg.to_s
28
+ @html_body = Table::Content.new(arg)
29
+ end
44
30
 
45
- alias to_s html
46
- alias to_str html
47
- end
31
+ # Returns the number of spaces that tags for this class are indented.
32
+ # For the Table::Caption class, the indention level defaults to 3.
33
+ #
34
+ def self.indent_level
35
+ @indent_level
36
+ end
37
+
38
+ # Sets the number of spaces that tags for this class are indented.
39
+ #
40
+ def self.indent_level=(num)
41
+ expect(num,Integer)
42
+ raise ArgumentError, "indent level must be >= 0" if num < 0
43
+ @indent_level = num
44
+ end
45
+
46
+ alias to_s html
47
+ alias to_str html
48
+ end
48
49
  end
data/lib/html/content.rb CHANGED
@@ -7,12 +7,12 @@
7
7
  require File.join(File.dirname(__FILE__), 'tag_handler')
8
8
 
9
9
  module HTML
10
- class Table::Content < String
11
- include TagHandler
10
+ class Table::Content < String
11
+ include TagHandler
12
12
 
13
- def initialize(string, &block)
14
- super(string)
15
- instance_eval(&block) if block_given?
16
- end
17
- end
13
+ def initialize(string, &block)
14
+ super(string)
15
+ instance_eval(&block) if block_given?
16
+ end
17
+ end
18
18
  end
data/lib/html/data.rb CHANGED
@@ -1,68 +1,69 @@
1
1
  module HTML
2
2
 
3
- # This class represents HTML table data, <td>. Despite the name
4
- # it is not a subclass of Table::Row or Table.
5
- #
6
- class Table::Row::Data
7
- include AttributeHandler
8
- include HtmlHandler
3
+ # This class represents HTML table data, <td>. Despite the name
4
+ # it is not a subclass of Table::Row or Table.
5
+ #
6
+ class Table::Row::Data
7
+ include AttributeHandler
8
+ include HtmlHandler
9
9
 
10
- undef_method :configure
10
+ undef_method :configure
11
11
 
12
- @indent_level = 6
13
- @end_tags = true
12
+ @indent_level = 6
13
+ @end_tags = true
14
14
 
15
- # Creates and returns a Data object. Optionally takes a block. If
16
- # an argument is provided, it is treated as content.
17
- #
18
- def initialize(arg = nil, &block)
19
- @html_begin = '<td'
20
- @html_body = ''
21
- @html_end = '</td>'
22
- instance_eval(&block) if block_given?
23
- self.content = arg if arg
24
- end
15
+ # Creates and returns a Data object. Optionally takes a block. If
16
+ # an argument is provided, it is treated as content.
17
+ #
18
+ def initialize(arg = nil, &block)
19
+ @html_begin = '<td'
20
+ @html_body = ''
21
+ @html_end = '</td>'
22
+ instance_eval(&block) if block_given?
23
+ self.content = arg if arg
24
+ end
25
25
 
26
- # Adds content to the Table::Row::Data object.
27
- #
28
- def content=(arg)
29
- @html_body = Table::Content.new(arg.to_s)
30
- end
26
+ # Adds content to the Table::Row::Data object.
27
+ #
28
+ def content=(arg)
29
+ arg = arg.is_a?(Array) ? arg.join : arg.to_s
30
+ @html_body = Table::Content.new(arg)
31
+ end
31
32
 
32
- # Returns the indentation level for the tags of this class. The
33
- # default is 6.
34
- #
35
- def self.indent_level
36
- @indent_level
37
- end
33
+ # Returns the indentation level for the tags of this class. The
34
+ # default is 6.
35
+ #
36
+ def self.indent_level
37
+ @indent_level
38
+ end
38
39
 
39
- # Sets the indentation level for the tags of this class. The default
40
- # is 6.
41
- #
42
- def self.indent_level=(num)
43
- expect(num,Integer)
44
- raise ArgumentError,"indent_level must be >= 0" if num < 0
45
- @indent_level = num
46
- end
40
+ # Sets the indentation level for the tags of this class. The default
41
+ # is 6.
42
+ #
43
+ def self.indent_level=(num)
44
+ expect(num, Integer)
45
+ raise ArgumentError,"indent_level must be >= 0" if num < 0
46
+ @indent_level = num
47
+ end
47
48
 
48
- # Returns a boolean indicating whether or not end tags, </td>, are
49
- # included for each Data object in the final HTML output. The
50
- # default is true.
51
- #
52
- def self.end_tags?
53
- @end_tags
54
- end
49
+ # Returns a boolean indicating whether or not end tags, </td>, are
50
+ # included for each Data object in the final HTML output. The
51
+ # default is true.
52
+ #
53
+ def self.end_tags?
54
+ @end_tags
55
+ end
55
56
 
56
- # Sets whether or not end tags are included for each Data object in
57
- # the final HTML output. The default is true. Only true or false are
58
- # valid arguments.
59
- #
60
- def self.end_tags=(bool)
61
- expect(bool,[TrueClass,FalseClass])
62
- @end_tags = bool
63
- end
57
+ # Sets whether or not end tags are included for each Data object in
58
+ # the final HTML output. The default is true. Only true or false are
59
+ # valid arguments.
60
+ #
61
+ def self.end_tags=(bool)
62
+ expect(bool, [TrueClass, FalseClass])
63
+ @end_tags = bool
64
+ end
64
65
 
65
- alias to_s html
66
- alias to_str html
67
- end
66
+ alias to_s html
67
+ alias to_str html
68
+ end
68
69
  end
data/lib/html/header.rb CHANGED
@@ -1,65 +1,65 @@
1
1
  module HTML
2
2
 
3
- # This class represents an HTML table header (<th>). Despite the name
4
- # it is not a subclass of Table or Table::Row.
5
- #
6
- class Table::Row::Header
7
- include AttributeHandler
8
- include HtmlHandler
3
+ # This class represents an HTML table header (<th>). Despite the name
4
+ # it is not a subclass of Table or Table::Row.
5
+ #
6
+ class Table::Row::Header
7
+ include AttributeHandler
8
+ include HtmlHandler
9
9
 
10
- undef_method :configure
10
+ undef_method :configure
11
11
 
12
- @indent_level = 6
13
- @end_tags = true
12
+ @indent_level = 6
13
+ @end_tags = true
14
14
 
15
- # Creates and returns a new Header object. Optionally takes a block.
16
- # If an argument is provided, it is treated as content.
17
- #
18
- def initialize(arg = nil, &block)
19
- @html_begin = '<th'
20
- @html_body = ''
21
- @html_end = '</th>'
22
- instance_eval(&block) if block_given?
23
- self.content = arg if arg
24
- end
25
-
26
- # Adds content to the Table::Row::Header object.
27
- #
28
- def content=(arg)
29
- @html_body = Table::Content.new(arg.to_s)
30
- end
15
+ # Creates and returns a new Header object. Optionally takes a block.
16
+ # If an argument is provided, it is treated as content.
17
+ #
18
+ def initialize(arg = nil, &block)
19
+ @html_begin = '<th'
20
+ @html_body = ''
21
+ @html_end = '</th>'
22
+ instance_eval(&block) if block_given?
23
+ self.content = arg if arg
24
+ end
31
25
 
32
- # Returns the indentation level for the tags of this class. The
33
- # default is 6.
34
- #
35
- def self.indent_level
36
- @indent_level
37
- end
26
+ # Adds content to the Table::Row::Header object.
27
+ #
28
+ def content=(arg)
29
+ arg = arg.is_a?(Array) ? arg.join : arg.to_s
30
+ @html_body = Table::Content.new(arg)
31
+ end
38
32
 
39
- # Sets the indentation level for the tags of this class. The default
40
- # is 6.
41
- #
42
- def self.indent_level=(num)
43
- expect(num,Integer)
44
- raise ArgumentError,"indent_level must be >= 0" if num < 0
45
- @indent_level = num
46
- end
33
+ # Returns the indentation level for the tags of this class. The
34
+ # default is 6.
35
+ #
36
+ def self.indent_level
37
+ @indent_level
38
+ end
47
39
 
48
- # Returns a boolean indicating whether or not end tags are included for
49
- # each Header object in the final HTML output. The default is true.
50
- #
51
- def self.end_tags?
52
- @end_tags
53
- end
40
+ # Sets the indentation level for the tags of this class. The default
41
+ # is 6.
42
+ #
43
+ def self.indent_level=(num)
44
+ expect(num,Integer)
45
+ raise ArgumentError,"indent_level must be >= 0" if num < 0
46
+ @indent_level = num
47
+ end
54
48
 
55
- # Sets whether or not end tags are included for each Header object in
56
- # the final HTML output. The default is true. Only true or false are
57
- # valid arguments.
58
- #
59
- def self.end_tags=(bool)
60
- expect(bool,[TrueClass,FalseClass])
61
- @end_tags = bool
62
- end
63
- end
49
+ # Returns a boolean indicating whether or not end tags are included for
50
+ # each Header object in the final HTML output. The default is true.
51
+ #
52
+ def self.end_tags?
53
+ @end_tags
54
+ end
64
55
 
56
+ # Sets whether or not end tags are included for each Header object in
57
+ # the final HTML output. The default is true. Only true or false are
58
+ # valid arguments.
59
+ #
60
+ def self.end_tags=(bool)
61
+ expect(bool,[TrueClass,FalseClass])
62
+ @end_tags = bool
63
+ end
64
+ end
65
65
  end
@@ -1,120 +1,120 @@
1
1
  module HtmlHandler
2
2
 
3
- $upper = false
4
-
5
- # Used on HTML attributes. It creates proper HTML text based on the argument
6
- # type. A string looks like "attr='text'", a number looks like "attr=1",
7
- # while a true value simply looks like "attr" (no equal sign).
8
- #--
9
- # This is private method.
10
- #
11
- def modify_html(attribute,arg=nil)
12
- if @html_begin.scan(/\b#{attribute}\b/).empty?
13
- if arg.kind_of?(Fixnum)
14
- @html_begin << " #{attribute}=#{arg}"
15
- elsif arg.kind_of?(TrueClass)
16
- @html_begin << " #{attribute}"
17
- else
18
- @html_begin << " #{attribute}='#{arg}'"
19
- end
20
- else
21
- if arg.kind_of?(Fixnum)
22
- @html_begin.gsub!(/#{attribute}=\d+/,"#{attribute}=#{arg}")
23
- elsif arg.kind_of?(FalseClass)
24
- @html_begin.gsub!(/#{attribute}/,'')
25
- else
26
- @html_begin.gsub!(/#{attribute}=['\w\.]+/,"#{attribute}='#{arg}'")
27
- end
28
- end
29
- end
3
+ $upper = false
30
4
 
31
- # Returns the HTML text for the current object. Indentation and end tag
32
- # options are optional, based on the settings of the classes themselves.
33
- #
34
- # If +formatting+ is false, then formatting and whitespace is not applied
35
- # and you will get a single, very long string. Note that case is still
36
- # honored.
37
- #
38
- def html(formatting = true)
39
- if self.class.respond_to?(:html_case)
40
- $upper = true if self.class.html_case == "upper"
41
- end
42
-
43
- if $upper
44
- @html_begin.upcase!
45
- @html_end.upcase!
5
+ # Used on HTML attributes. It creates proper HTML text based on the argument
6
+ # type. A string looks like "attr='text'", a number looks like "attr=1",
7
+ # while a true value simply looks like "attr" (no equal sign).
8
+ #--
9
+ # This is private method.
10
+ #
11
+ def modify_html(attribute,arg=nil)
12
+ if @html_begin.scan(/\b#{attribute}\b/).empty?
13
+ if arg.kind_of?(Fixnum)
14
+ @html_begin << " #{attribute}=#{arg}"
15
+ elsif arg.kind_of?(TrueClass)
16
+ @html_begin << " #{attribute}"
17
+ else
18
+ @html_begin << " #{attribute}='#{arg}'"
46
19
  end
47
-
48
- ilevel = 0
49
-
50
- if formatting && self.class.respond_to?(:indent_level)
51
- ilevel = self.class.indent_level
20
+ else
21
+ if arg.kind_of?(Fixnum)
22
+ @html_begin.gsub!(/#{attribute}=\d+/,"#{attribute}=#{arg}")
23
+ elsif arg.kind_of?(FalseClass)
24
+ @html_begin.gsub!(/#{attribute}/,'')
25
+ else
26
+ @html_begin.gsub!(/#{attribute}=['\w\.]+/,"#{attribute}='#{arg}'")
52
27
  end
28
+ end
29
+ end
30
+
31
+ # Returns the HTML text for the current object. Indentation and end tag
32
+ # options are optional, based on the settings of the classes themselves.
33
+ #
34
+ # If +formatting+ is false, then formatting and whitespace is not applied
35
+ # and you will get a single, very long string. Note that case is still
36
+ # honored.
37
+ #
38
+ def html(formatting = true)
39
+ if self.class.respond_to?(:html_case)
40
+ $upper = true if self.class.html_case == "upper"
41
+ end
42
+
43
+ if $upper
44
+ @html_begin.upcase!
45
+ @html_end.upcase!
46
+ end
47
+
48
+ ilevel = 0
53
49
 
54
- html = ' ' * ilevel + @html_begin[0..-1]
55
- len = html.length
56
- html[len,len] = '>'
50
+ if formatting && self.class.respond_to?(:indent_level)
51
+ ilevel = self.class.indent_level
52
+ end
57
53
 
58
- if self.kind_of?(Array)
59
- if formatting
60
- html << self.map{ |e| "\n" + e.html(formatting).to_s }.join
61
- else
62
- html << self.map{ |e| e.html(formatting).to_s }.join
63
- end
54
+ html = ' ' * ilevel + @html_begin[0..-1]
55
+ len = html.length
56
+ html[len,len] = '>'
57
+
58
+ if self.kind_of?(Array)
59
+ if formatting
60
+ html << self.map{ |e| "\n" + e.html(formatting).to_s }.join
64
61
  else
65
- html << @html_body
62
+ html << self.map{ |e| e.html(formatting).to_s }.join
66
63
  end
64
+ else
65
+ html << @html_body
66
+ end
67
67
 
68
- #####################################################################
69
- # Add end tags, or not, depending on whether the class supports the
70
- # end_tags class method. Those that don't have an end_tags class
71
- # method necessarily means that the end tag must be included.
72
- #
73
- # The Table.global_end_tags method overrides the individual class
74
- # preferences with regards to end tags.
75
- #####################################################################
76
- if self.kind_of?(Array)
77
- if HTML::Table.global_end_tags?
78
- if self.class.respond_to?(:end_tags?)
79
- if formatting
80
- if self.class.end_tags?
81
- html << "\n" + (' ' * ilevel) + @html_end
82
- end
83
- else
84
- html << (' ' * ilevel) + @html_end if self.class.end_tags?
85
- end
86
- else
87
- if formatting
88
- html << "\n" + (' ' * ilevel) + @html_end
89
- else
90
- html << (' ' * ilevel) + @html_end
91
- end
92
- end
93
- else
94
- unless self.class.respond_to?(:end_tags?)
95
- if formatting
96
- html << "\n" + (' ' * ilevel) + @html_end
97
- else
98
- html << (' ' * ilevel) + @html_end
99
- end
68
+ #####################################################################
69
+ # Add end tags, or not, depending on whether the class supports the
70
+ # end_tags class method. Those that don't have an end_tags class
71
+ # method necessarily means that the end tag must be included.
72
+ #
73
+ # The Table.global_end_tags method overrides the individual class
74
+ # preferences with regards to end tags.
75
+ #####################################################################
76
+ if self.kind_of?(Array)
77
+ if HTML::Table.global_end_tags?
78
+ if self.class.respond_to?(:end_tags?)
79
+ if formatting
80
+ if self.class.end_tags?
81
+ html << "\n" + (' ' * ilevel) + @html_end
100
82
  end
101
- end
83
+ else
84
+ html << (' ' * ilevel) + @html_end if self.class.end_tags?
85
+ end
86
+ else
87
+ if formatting
88
+ html << "\n" + (' ' * ilevel) + @html_end
89
+ else
90
+ html << (' ' * ilevel) + @html_end
91
+ end
92
+ end
102
93
  else
103
- if HTML::Table.global_end_tags?
104
- if self.class.respond_to?(:end_tags?)
105
- html << @html_end if self.class.end_tags?
106
- else
107
- html << @html_end
108
- end
109
- else
110
- unless self.class.respond_to?(:end_tags?)
111
- html << @html_end
112
- end
113
- end
94
+ unless self.class.respond_to?(:end_tags?)
95
+ if formatting
96
+ html << "\n" + (' ' * ilevel) + @html_end
97
+ else
98
+ html << (' ' * ilevel) + @html_end
99
+ end
100
+ end
114
101
  end
102
+ else
103
+ if HTML::Table.global_end_tags?
104
+ if self.class.respond_to?(:end_tags?)
105
+ html << @html_end if self.class.end_tags?
106
+ else
107
+ html << @html_end
108
+ end
109
+ else
110
+ unless self.class.respond_to?(:end_tags?)
111
+ html << @html_end
112
+ end
113
+ end
114
+ end
115
+
116
+ return html
117
+ end
115
118
 
116
- return html
117
- end
118
-
119
- private :modify_html
119
+ private :modify_html
120
120
  end
data/lib/html/table.rb CHANGED
@@ -20,7 +20,7 @@ module HTML
20
20
  include HtmlHandler
21
21
 
22
22
  # The version of the html-table library
23
- VERSION = '1.3.5'
23
+ VERSION = '1.3.6'
24
24
 
25
25
  # The indentation level for the <table> and </table> tags
26
26
  @indent_level = 0
@@ -2,120 +2,120 @@
2
2
  # tag_handler.rb
3
3
  #
4
4
  # Module for handling standard html physical tags (<b>, <i>, etc).
5
- # Only used for Table::Content objects, which are in turn used by
5
+ # Only used for Table::Content objects, which are in turn used by
6
6
  # Table::Row::Data, Table::Row::Header and Table::Caption.
7
7
  ###################################################################
8
8
  module TagHandler
9
- def bold(bool = nil)
10
- @bold ||= nil
11
- self.bold = bool if bool
12
- @bold
13
- end
14
-
15
- def bold=(bool)
16
- handle_physical_tag('b', bool)
17
- @bold = bool
18
- end
19
-
20
- def big(bool = nil)
21
- @big ||= nil
22
- self.big = bool if bool
23
- @big
24
- end
25
-
26
- def big=(bool)
27
- handle_physical_tag('big', bool)
28
- @big = bool
29
- end
30
-
31
- def blink(bool = nil)
32
- @blink ||= nil
33
- self.blink = bool if bool
34
- @blink
35
- end
36
-
37
- def blink=(bool)
38
- warn BlinkWarning, "The 'blink' tag is very annoying. Please reconsider."
39
- handle_physical_tag('blink', bool)
40
- @blink = bool
41
- end
42
-
43
- def italic(bool = nil)
44
- @italic ||= nil
45
- self.italic = bool if bool
46
- @italic
47
- end
48
-
49
- def italic=(bool)
50
- handle_physical_tag('i', bool)
51
- @italic = bool
52
- end
53
-
54
- def strike(bool = nil)
55
- @strike ||= nil
56
- self.strike = bool if bool
57
- @strike
58
- end
59
-
60
- def strike=(bool)
61
- handle_physical_tag('strike', bool)
62
- @strike = bool
63
- end
64
-
65
- def sub(bool = nil)
66
- @sub ||= nil
67
- self.sub = bool if bool
68
- @sub
69
- end
70
-
71
- def sub=(bool)
72
- handle_physical_tag('sub', bool)
73
- @sub = bool
74
- end
75
-
76
- def sup(bool = nil)
77
- @sup ||= nil
78
- self.sup = bool if bool
79
- @sup
80
- end
81
-
82
- def sup=(bool)
83
- handle_physical_tag('sup', bool)
84
- @sup = bool
85
- end
86
-
87
- def tt(bool = nil)
88
- @tt ||= nil
89
- self.tt = bool if bool
90
- @tt
91
- end
92
-
93
- def tt=(bool)
94
- handle_physical_tag('tt', bool)
95
- @tt = bool
96
- end
97
-
98
- def underline(bool = nil)
99
- @underline ||= nil
100
- self.underline = bool if bool
101
- @underline
102
- end
103
-
104
- def underline=(bool)
105
- handle_physical_tag('u', bool)
106
- @bool = bool
107
- end
108
-
109
- private
110
-
111
- def handle_physical_tag(tag, bool)
112
- begin_tag = "<#{tag}>"
113
- end_tag = "</#{tag}>"
114
-
115
- if bool
116
- self.replace(begin_tag << self << end_tag)
117
- else
118
- self.replace(self.gsub(/#{begin_tag}|#{end_tag}/,''))
119
- end
120
- end
9
+ def bold(bool = nil)
10
+ @bold ||= nil
11
+ self.bold = bool if bool
12
+ @bold
13
+ end
14
+
15
+ def bold=(bool)
16
+ handle_physical_tag('b', bool)
17
+ @bold = bool
18
+ end
19
+
20
+ def big(bool = nil)
21
+ @big ||= nil
22
+ self.big = bool if bool
23
+ @big
24
+ end
25
+
26
+ def big=(bool)
27
+ handle_physical_tag('big', bool)
28
+ @big = bool
29
+ end
30
+
31
+ def blink(bool = nil)
32
+ @blink ||= nil
33
+ self.blink = bool if bool
34
+ @blink
35
+ end
36
+
37
+ def blink=(bool)
38
+ warn BlinkWarning, "The 'blink' tag is very annoying. Please reconsider."
39
+ handle_physical_tag('blink', bool)
40
+ @blink = bool
41
+ end
42
+
43
+ def italic(bool = nil)
44
+ @italic ||= nil
45
+ self.italic = bool if bool
46
+ @italic
47
+ end
48
+
49
+ def italic=(bool)
50
+ handle_physical_tag('i', bool)
51
+ @italic = bool
52
+ end
53
+
54
+ def strike(bool = nil)
55
+ @strike ||= nil
56
+ self.strike = bool if bool
57
+ @strike
58
+ end
59
+
60
+ def strike=(bool)
61
+ handle_physical_tag('strike', bool)
62
+ @strike = bool
63
+ end
64
+
65
+ def sub(bool = nil)
66
+ @sub ||= nil
67
+ self.sub = bool if bool
68
+ @sub
69
+ end
70
+
71
+ def sub=(bool)
72
+ handle_physical_tag('sub', bool)
73
+ @sub = bool
74
+ end
75
+
76
+ def sup(bool = nil)
77
+ @sup ||= nil
78
+ self.sup = bool if bool
79
+ @sup
80
+ end
81
+
82
+ def sup=(bool)
83
+ handle_physical_tag('sup', bool)
84
+ @sup = bool
85
+ end
86
+
87
+ def tt(bool = nil)
88
+ @tt ||= nil
89
+ self.tt = bool if bool
90
+ @tt
91
+ end
92
+
93
+ def tt=(bool)
94
+ handle_physical_tag('tt', bool)
95
+ @tt = bool
96
+ end
97
+
98
+ def underline(bool = nil)
99
+ @underline ||= nil
100
+ self.underline = bool if bool
101
+ @underline
102
+ end
103
+
104
+ def underline=(bool)
105
+ handle_physical_tag('u', bool)
106
+ @bool = bool
107
+ end
108
+
109
+ private
110
+
111
+ def handle_physical_tag(tag, bool)
112
+ begin_tag = "<#{tag}>"
113
+ end_tag = "</#{tag}>"
114
+
115
+ if bool
116
+ self.replace(begin_tag << self << end_tag)
117
+ else
118
+ self.replace(self.gsub(/#{begin_tag}|#{end_tag}/,''))
119
+ end
120
+ end
121
121
  end
data/test/test_caption.rb CHANGED
@@ -11,73 +11,73 @@ require 'html/table'
11
11
  include HTML
12
12
 
13
13
  class TC_HTML_Table_Caption < Test::Unit::TestCase
14
- def setup
15
- @table = Table.new
16
- @tcaption = Table::Caption.new
17
- end
14
+ def setup
15
+ @table = Table.new
16
+ @tcaption = Table::Caption.new
17
+ end
18
18
 
19
- def test_constructor
20
- assert_nothing_raised{ Table::Caption.new }
21
- assert_nothing_raised{ Table::Caption.new("foo") }
22
- assert_nothing_raised{ Table::Caption.new(1) }
23
- assert_nothing_raised{ Table::Caption.new(%w/foo bar baz/) }
24
- assert_nothing_raised{ Table::Caption.new([1,2,3]) }
25
- assert_nothing_raised{ Table::Caption.new([[1,2,3],["foo","bar"]]) }
26
- end
27
-
28
- def test_basic
29
- html = "<caption></caption>"
30
- assert_equal(html, @tcaption.html.gsub(/\s+/,''))
31
- end
32
-
33
- def test_with_attributes
34
- html = "<caption align='left' valign='top'></caption>"
35
- @tcaption.align = "left"
36
- @tcaption.valign = "top"
37
- assert_equal(html, @tcaption.html.gsub(/\s{2,}|\n+/,''))
38
- end
39
-
40
- def test_configure_not_allowed
41
- assert_raises(NoMethodError){ @tcaption.configure }
42
- end
43
-
44
- def test_add_content
45
- html = "<caption>hello world</caption>"
46
- @tcaption.content = "hello world"
47
- assert_equal(html,@tcaption.html.gsub(/\s{2,}/,''))
48
- end
49
-
50
- def test_add_multiple_content_items
51
- html = "<caption>hello world</caption>"
52
- @tcaption.content = "hello"," world"
53
- assert_equal(html,@tcaption.html.gsub(/\s{2,}/,''))
54
- end
19
+ def test_constructor
20
+ assert_nothing_raised{ Table::Caption.new }
21
+ assert_nothing_raised{ Table::Caption.new("foo") }
22
+ assert_nothing_raised{ Table::Caption.new(1) }
23
+ assert_nothing_raised{ Table::Caption.new(%w/foo bar baz/) }
24
+ assert_nothing_raised{ Table::Caption.new([1,2,3]) }
25
+ assert_nothing_raised{ Table::Caption.new([[1,2,3],["foo","bar"]]) }
26
+ end
55
27
 
56
- def test_add_content_in_constructor
57
- html = "<caption>hello world</caption>"
58
- @tcaption = Table::Caption.new("hello world")
59
- assert_equal(html, @tcaption.html.gsub(/\s{2,}/,''))
60
- end
28
+ def test_basic
29
+ html = "<caption></caption>"
30
+ assert_equal(html, @tcaption.html.gsub(/\s+/,''))
31
+ end
61
32
 
62
- def test_indent_level
63
- assert_respond_to(Table::Caption,:indent_level)
64
- assert_respond_to(Table::Caption,:indent_level=)
65
- assert_raises(ArgumentTypeError){ Table::Caption.indent_level = "foo" }
66
- assert_nothing_raised{ Table::Caption.indent_level = 3 }
67
- end
68
-
69
- def test_only_row_zero_allowed
70
- assert_raises(ArgumentError){ @table[1] = @tcaption }
71
- end
72
-
73
- def test_automatically_set_to_row_zero
74
- @table.content = "hello","world"
75
- @table.push(@tcaption)
76
- assert_equal(true, @table[0].kind_of?(Table::Caption))
77
- end
78
-
79
- def teardown
80
- @table = nil
81
- @tcaption = nil
82
- end
33
+ def test_with_attributes
34
+ html = "<caption align='left' valign='top'></caption>"
35
+ @tcaption.align = "left"
36
+ @tcaption.valign = "top"
37
+ assert_equal(html, @tcaption.html.gsub(/\s{2,}|\n+/,''))
38
+ end
39
+
40
+ def test_configure_not_allowed
41
+ assert_raises(NoMethodError){ @tcaption.configure }
42
+ end
43
+
44
+ def test_add_content
45
+ html = "<caption>hello world</caption>"
46
+ @tcaption.content = "hello world"
47
+ assert_equal(html,@tcaption.html.gsub(/\s{2,}/,''))
48
+ end
49
+
50
+ def test_add_multiple_content_items
51
+ html = "<caption>hello world</caption>"
52
+ @tcaption.content = "hello"," world"
53
+ assert_equal(html,@tcaption.html.gsub(/\s{2,}/,''))
54
+ end
55
+
56
+ def test_add_content_in_constructor
57
+ html = "<caption>hello world</caption>"
58
+ @tcaption = Table::Caption.new("hello world")
59
+ assert_equal(html, @tcaption.html.gsub(/\s{2,}/,''))
60
+ end
61
+
62
+ def test_indent_level
63
+ assert_respond_to(Table::Caption,:indent_level)
64
+ assert_respond_to(Table::Caption,:indent_level=)
65
+ assert_raises(ArgumentTypeError){ Table::Caption.indent_level = "foo" }
66
+ assert_nothing_raised{ Table::Caption.indent_level = 3 }
67
+ end
68
+
69
+ def test_only_row_zero_allowed
70
+ assert_raises(ArgumentError){ @table[1] = @tcaption }
71
+ end
72
+
73
+ def test_automatically_set_to_row_zero
74
+ @table.content = "hello","world"
75
+ @table.push(@tcaption)
76
+ assert_equal(true, @table[0].kind_of?(Table::Caption))
77
+ end
78
+
79
+ def teardown
80
+ @table = nil
81
+ @tcaption = nil
82
+ end
83
83
  end
data/test/test_table.rb CHANGED
@@ -19,7 +19,7 @@ class TC_HTML_Table < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_version
22
- assert_equal('1.3.5', Table::VERSION)
22
+ assert_equal('1.3.6', Table::VERSION)
23
23
  end
24
24
 
25
25
  def test_constructor
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-table
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 5
10
- version: 1.3.5
9
+ - 6
10
+ version: 1.3.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel J. Berger
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-01 00:00:00 Z
18
+ date: 2011-09-19 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: strongtyping
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: "0"
60
60
  type: :development
61
61
  version_requirements: *id003
62
- description: " The html-table library provides an interface for generating HTML tables\n in a syntax comfortable to Ruby programmers, but with some enforcement\n of where certain elements can be placed.\n"
62
+ description: " The html-table library provides an interface for generating HTML tables\n in a syntax comfortable to Ruby programmers, but with some enforcement\n of where certain elements can be placed.\n"
63
63
  email: djberg96@gmail.com
64
64
  executables: []
65
65