Spreadsheet-HTML 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changes +4 -0
- data/README +8 -0
- data/lib/Spreadsheet/HTML.rb +57 -27
- data/lib/Spreadsheet/HTML/version.rb +1 -1
- data/readme.md +1 -1
- data/t/13-caption.rb +44 -0
- data/t/14-colgroup.rb +99 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 193027f607dd3ef04e4265fd03be81f3bdf75d86
|
4
|
+
data.tar.gz: a519f019fc77f3fca13384e64acb69d9b9231d99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1712621904d70a3938d4d257e3839bc2b085df25d0aeb9d20d9bc6b7ec903892005b509b873d1c17da7658c35286721ae52c67b879b19a77fe399d2c5b6b87f
|
7
|
+
data.tar.gz: 2c2035633f4d03f4cdbfbba0d23d515de0adc751f1d53c89fb6def0521766b02450e360db17a769fd7a451cf4402da8eae9236c688fea2cc83ba8500ea3cf49f
|
data/Changes
CHANGED
data/README
CHANGED
@@ -140,6 +140,14 @@ fill
|
|
140
140
|
|
141
141
|
'fill' => '8x12' # 8 rows, 12 columns
|
142
142
|
|
143
|
+
caption
|
144
|
+
Caption is special in that you can either pass a string to be used as CDATA or a hash whose only
|
145
|
+
key is the string to be used as CDATA.
|
146
|
+
|
147
|
+
'caption' => 'Just Another Title'
|
148
|
+
|
149
|
+
'caption' => { 'A Title With Attributes' => { 'align' => 'bottom' } }
|
150
|
+
|
143
151
|
== Dynamic Parameters
|
144
152
|
Dynamic parameters provide a means to control the micro elements of the table,
|
145
153
|
such as modifying headings by their name and rows and columns by their indices.
|
data/lib/Spreadsheet/HTML.rb
CHANGED
@@ -14,33 +14,15 @@ end
|
|
14
14
|
module Spreadsheet
|
15
15
|
class HTML
|
16
16
|
|
17
|
-
def self.gen( *args )
|
18
|
-
self.new.generate( *args )
|
19
|
-
end
|
20
|
-
|
21
|
-
def north( *args )
|
22
|
-
generate( *args, 'theta' => 0 )
|
23
|
-
end
|
17
|
+
def self.gen ( *args ) self.new.generate( *args ) end
|
24
18
|
|
25
|
-
def portrait( *args )
|
26
|
-
|
27
|
-
end
|
19
|
+
def portrait ( *args ) generate( *args, 'theta' => 0 ) end
|
20
|
+
def landscape ( *args ) generate( *args, 'theta' => -270, 'tgroups' => 0 ) end
|
28
21
|
|
29
|
-
def
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
def landscape( *args )
|
34
|
-
generate( *args, 'theta' => -270, 'tgroups' => 0 )
|
35
|
-
end
|
36
|
-
|
37
|
-
def east( *args )
|
38
|
-
generate( *args, 'theta' => 90, 'tgroups' => 0, 'pinhead' => 1 )
|
39
|
-
end
|
40
|
-
|
41
|
-
def south( *args )
|
42
|
-
generate( *args, 'theta' => -180, 'tgroups' => 0, 'pinhead' => 1 )
|
43
|
-
end
|
22
|
+
def north ( *args ) generate( *args, 'theta' => 0 ) end
|
23
|
+
def west ( *args ) generate( *args, 'theta' => -270, 'tgroups' => 0 ) end
|
24
|
+
def east ( *args ) generate( *args, 'theta' => 90, 'tgroups' => 0, 'pinhead' => 1 ) end
|
25
|
+
def south ( *args ) generate( *args, 'theta' => -180, 'tgroups' => 0, 'pinhead' => 1 ) end
|
44
26
|
|
45
27
|
def generate( *args )
|
46
28
|
params = _process( args )
|
@@ -101,7 +83,15 @@ module Spreadsheet
|
|
101
83
|
end
|
102
84
|
|
103
85
|
def _make_table( params )
|
104
|
-
cdata = []
|
86
|
+
cdata = Array[]
|
87
|
+
|
88
|
+
if params.has_key?( 'caption' )
|
89
|
+
cdata.push( _tag( 'caption', params['caption'] ) )
|
90
|
+
end
|
91
|
+
|
92
|
+
if params.has_key?( 'colgroup' ) or params.has_key?( 'col' )
|
93
|
+
cdata.concat( _colgroup( params ) )
|
94
|
+
end
|
105
95
|
|
106
96
|
if params['tgroups'] && params['tgroups'] > 0
|
107
97
|
|
@@ -118,7 +108,7 @@ module Spreadsheet
|
|
118
108
|
cdata.push({ 'tag' => 'tbody', 'attr' => params['tbody'], 'cdata' => body_rows })
|
119
109
|
|
120
110
|
else
|
121
|
-
cdata.
|
111
|
+
cdata.concat( params['data'].map { |c| { 'tag' => 'tr', 'attr' => params['tr'], 'cdata' => c } } )
|
122
112
|
end
|
123
113
|
|
124
114
|
return params['auto'].tag( 'tag' => 'table', 'attr' => params['table'], 'cdata' => cdata )
|
@@ -260,6 +250,46 @@ module Spreadsheet
|
|
260
250
|
return [ cdata, attr ]
|
261
251
|
end
|
262
252
|
|
253
|
+
def _colgroup( params )
|
254
|
+
colgroup = Array[]
|
255
|
+
params['col'] = Array[ params['col'] ] if params['col'].kind_of?(Hash)
|
256
|
+
|
257
|
+
if params['col'].kind_of?(Array)
|
258
|
+
if params['colgroup'].kind_of?(Array)
|
259
|
+
colgroup = params['colgroup'].map{ |cg|
|
260
|
+
{
|
261
|
+
'tag' => 'colgroup',
|
262
|
+
'attr' => cg,
|
263
|
+
'cdata' => params['col'].map{ |attr| { 'tag' => 'col', 'attr' => attr } }
|
264
|
+
}
|
265
|
+
}
|
266
|
+
else
|
267
|
+
colgroup = {
|
268
|
+
'tag' => 'colgroup',
|
269
|
+
'attr' => params['colgroup'],
|
270
|
+
'cdata' => params['col'].map{ |attr| { 'tag' => 'col', 'attr' => attr } }
|
271
|
+
}
|
272
|
+
end
|
273
|
+
else
|
274
|
+
params['colgroup'] = Array[ params['colgroup'] ] if params['colgroup'].kind_of?(Hash)
|
275
|
+
if params['colgroup'].kind_of?(Array)
|
276
|
+
colgroup = params['colgroup'].map{ |attr| { 'tag' => 'colgroup', 'attr' => attr } }
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
colgroup = Array[colgroup] if colgroup.kind_of?(Hash)
|
281
|
+
return colgroup
|
282
|
+
end
|
283
|
+
|
284
|
+
def _tag( tag, cdata )
|
285
|
+
tag = { 'tag' => tag, 'cdata' => cdata }
|
286
|
+
if cdata.kind_of?( Hash )
|
287
|
+
tag['cdata'] = cdata.keys[0]
|
288
|
+
tag['attr'] = cdata.values[0]
|
289
|
+
end
|
290
|
+
return tag
|
291
|
+
end
|
292
|
+
|
263
293
|
end
|
264
294
|
|
265
295
|
end
|
data/readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Spreadsheet-HTML (ruby)
|
2
2
|
=======================
|
3
|
-
Just another HTML table generator for ruby.
|
3
|
+
Just another HTML table generator for ruby. [![Gem Version](https://badge.fury.io/rb/Spreadsheet-HTML.svg)](https://badge.fury.io/rb/Spreadsheet-HTML)
|
4
4
|
|
5
5
|
Description
|
6
6
|
-----------
|
data/t/13-caption.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "Spreadsheet/HTML"
|
3
|
+
|
4
|
+
class Test_Caption < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_caption
|
7
|
+
|
8
|
+
data = Array[
|
9
|
+
%w( a b c ),
|
10
|
+
%w( 1 2 3 ),
|
11
|
+
%w( 4 5 6 ),
|
12
|
+
]
|
13
|
+
|
14
|
+
gen = Spreadsheet::HTML.new( 'data' => data, 'caption' => "My Table" )
|
15
|
+
|
16
|
+
assert_equal(
|
17
|
+
'<table><caption>My Table</caption><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
18
|
+
gen.generate(),
|
19
|
+
"caption present from generate()"
|
20
|
+
)
|
21
|
+
|
22
|
+
gen = Spreadsheet::HTML.new( 'data' => data, 'caption' => { "My Table" => { 'key' => 'value' } } )
|
23
|
+
|
24
|
+
assert_equal(
|
25
|
+
'<table><caption key="value">My Table</caption><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
26
|
+
gen.generate(),
|
27
|
+
"caption present from generate()"
|
28
|
+
)
|
29
|
+
|
30
|
+
assert_equal(
|
31
|
+
'<table><caption key="value">My Table</caption><thead><tr><th>a</th><th>b</th><th>c</th></tr></thead><tfoot><tr><td>4</td><td>5</td><td>6</td></tr></tfoot><tbody><tr><td>1</td><td>2</td><td>3</td></tr></tbody></table>',
|
32
|
+
gen.generate( 'tgroups' => 2 ),
|
33
|
+
"caption present from generate() with tgroups"
|
34
|
+
)
|
35
|
+
|
36
|
+
assert_equal(
|
37
|
+
'<table><caption>0</caption><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
38
|
+
gen.generate( 'caption' => 0 ),
|
39
|
+
"caption can be overriden"
|
40
|
+
)
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/t/14-colgroup.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "Spreadsheet/HTML"
|
3
|
+
|
4
|
+
class Test_Colgroup < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_colgroup
|
7
|
+
|
8
|
+
data = Array[
|
9
|
+
%w( a b c ),
|
10
|
+
%w( 1 2 3 ),
|
11
|
+
%w( 4 5 6 ),
|
12
|
+
]
|
13
|
+
|
14
|
+
gen = Spreadsheet::HTML.new( 'data' => data, 'colgroup' => { 'span' => '3', 'width' => '100' }, 'attr_sort' => 1 );
|
15
|
+
|
16
|
+
assert_equal(
|
17
|
+
'<table><colgroup span="3" width="100" /><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
18
|
+
gen.generate,
|
19
|
+
"colgroup present from generate()"
|
20
|
+
)
|
21
|
+
|
22
|
+
assert_equal(
|
23
|
+
'<table><colgroup span="3" width="100" /><thead><tr><th>a</th><th>b</th><th>c</th></tr></thead><tfoot><tr><td>4</td><td>5</td><td>6</td></tr></tfoot><tbody><tr><td>1</td><td>2</td><td>3</td></tr></tbody></table>',
|
24
|
+
gen.generate( 'tgroups' => 2 ),
|
25
|
+
"colgroup present from generate() with tgroups"
|
26
|
+
)
|
27
|
+
|
28
|
+
assert_equal(
|
29
|
+
'<table><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
30
|
+
gen.generate( 'colgroup' => nil ),
|
31
|
+
"colgroup can be overriden"
|
32
|
+
)
|
33
|
+
|
34
|
+
assert_equal(
|
35
|
+
'<table><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
36
|
+
gen.generate( 'colgroup' => 1 ),
|
37
|
+
"colgroup yields no-op if scalar"
|
38
|
+
)
|
39
|
+
|
40
|
+
assert_equal(
|
41
|
+
'<table><colgroup color="red" span="1" /><colgroup color="blue" span="2" /><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
42
|
+
gen.generate( 'colgroup' => [ { 'span' => '1', 'color' => 'red' }, { 'span' => '2', 'color' => 'blue' } ] ),
|
43
|
+
"can specify multiple colgroups"
|
44
|
+
)
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_col
|
49
|
+
|
50
|
+
data = Array[
|
51
|
+
%w( a b c ),
|
52
|
+
%w( 1 2 3 ),
|
53
|
+
%w( 4 5 6 ),
|
54
|
+
]
|
55
|
+
|
56
|
+
gen = Spreadsheet::HTML.new( 'data' => data, 'colgroup' => { 'span' => '3', 'width' => '100' }, 'attr_sort' => 1 );
|
57
|
+
|
58
|
+
assert_equal(
|
59
|
+
'<table><colgroup span="3" width="100"><col /></colgroup><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
60
|
+
gen.generate( 'col' => {} ),
|
61
|
+
"colgroup wraps col"
|
62
|
+
)
|
63
|
+
|
64
|
+
assert_equal(
|
65
|
+
'<table><colgroup span="3" width="100"><col /><col /><col /></colgroup><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
66
|
+
gen.generate( 'col' => [{},{},{}] ),
|
67
|
+
"colgroup wraps multiple cols"
|
68
|
+
)
|
69
|
+
|
70
|
+
assert_equal(
|
71
|
+
'<table><colgroup><col /></colgroup><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
72
|
+
gen.generate( 'colgroup' => nil, 'col' => {} ),
|
73
|
+
"colgroup can be overriden when col is present too"
|
74
|
+
)
|
75
|
+
|
76
|
+
|
77
|
+
gen = Spreadsheet::HTML.new( 'data' => data, 'col' => Array[{},{},{}] );
|
78
|
+
|
79
|
+
assert_equal(
|
80
|
+
'<table><colgroup><col /><col /><col /></colgroup><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
81
|
+
gen.generate( 'colgroup' => {} ),
|
82
|
+
"multiple cols against single colgroup"
|
83
|
+
)
|
84
|
+
|
85
|
+
assert_equal(
|
86
|
+
'<table><colgroup /><colgroup /><colgroup /><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
87
|
+
gen.generate( 'col' => nil, 'colgroup' => Array[{},{},{}] ),
|
88
|
+
"no cols against multiple colgroups"
|
89
|
+
)
|
90
|
+
|
91
|
+
assert_equal(
|
92
|
+
'<table><colgroup><col /><col /><col /></colgroup><colgroup><col /><col /><col /></colgroup><colgroup><col /><col /><col /></colgroup><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>',
|
93
|
+
gen.generate( 'colgroup' => Array[{},{},{}] ),
|
94
|
+
"multiple cols against multiple colgroups"
|
95
|
+
)
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Spreadsheet-HTML
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jeffa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -83,6 +83,8 @@ files:
|
|
83
83
|
- t/10-indent.rb
|
84
84
|
- t/11-empty.rb
|
85
85
|
- t/12-encodes.rb
|
86
|
+
- t/13-caption.rb
|
87
|
+
- t/14-colgroup.rb
|
86
88
|
homepage: https://github.com/jeffa/spreadsheet-html-ruby
|
87
89
|
licenses:
|
88
90
|
- MIT
|