Spreadsheet-HTML 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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. [](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
|