dt 0.0.0

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/dt.rb +85 -0
  3. data/test/tc_dt.rb +20 -0
  4. metadata +46 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c46079508d7cdf2fec20164a516c8ccd9149cc86
4
+ data.tar.gz: 7047fc72b237ed5d2fb79c6d6361657656d0cdad
5
+ SHA512:
6
+ metadata.gz: ec0268089da0958acad2ccc73380b2e59e65557c33b0e52682b8b4e708f6907dbce195e6d823c0dc9e003a2806d9276a1736ee773fdf3645019e1ec70a560d58
7
+ data.tar.gz: 37743632e3f6f14255a2fbc557f2af745aa14833265856583da07e57ca09f9b2456986b1aed3ba3cc5940cab38d9d4f04964052b4857637c24513ffe6236da6d
@@ -0,0 +1,85 @@
1
+ module DT
2
+ # ++
3
+ # construct html table from array
4
+ # ++
5
+ def self.array_to_list(array)
6
+ list_string_start = "<ul>"
7
+ list_string_content = String.new
8
+ array.each do |item|
9
+ list_string_content += "<li>" + item + "</li>"
10
+ end
11
+ list_string_end = "</ul>"
12
+ list_string_start + list_string_content + list_string_end
13
+ end
14
+
15
+ # ++
16
+ # construct html table from a hash with all the value should be array
17
+ # like, hash => {"name" => ["John", "Jim"], "Year" => ["1990", "1991"]}
18
+ # ++
19
+ def self.hash_array_to_table(hash_array)
20
+ table_head = "<table border=\"1\"><thead><tr>"
21
+ table_head_cell = ""
22
+
23
+ len = 0
24
+ key_num = hash_array.keys.length
25
+
26
+ hash_array.each_key do |key|
27
+ table_head_cell += "<th>" + key + "</th>"
28
+ new_len = hash_array["#{key}"].length
29
+ if new_len > len
30
+ len = new_len
31
+ end
32
+ end
33
+ table_head_cell += "</tr></thead>"
34
+
35
+ table_body = String.new
36
+ i = 0
37
+ table_body = "<tbody>"
38
+ while (i < len)
39
+ sub_head = "<tr>"
40
+ sub_body = ""
41
+ j = 0
42
+ key_num.times do
43
+ value = hash_array["#{hash_array.keys[j]}"][i]
44
+ sub_body += "<td>#{value}</td>" if value
45
+ sub_body += "<td></td>" if !value
46
+ j += 1
47
+ end
48
+ i += 1
49
+ sub_foot = "</tr>"
50
+
51
+ sub = sub_head + sub_body + sub_foot
52
+ table_body += sub
53
+ end
54
+
55
+ table_head + table_head_cell + table_body + "</tbody>"
56
+ end
57
+
58
+ # ++
59
+ # construct html table from array, but all the elements are same
60
+ # shape hash, array = [{"name" => "John", "year" => "1990"},{"name" => "Jim", "year" => "1991"}]
61
+ # ++
62
+ def self.array_hash_to_table(array_hash)
63
+ # all the element of array are same structure hash
64
+ #
65
+ table_head = "<table border=\"1\"><thead><tr>"
66
+ table_head_cell = String.new
67
+ array_hash[0].each_key do |key|
68
+ table_head_cell += "<th>" + key + "</th>"
69
+ end
70
+ table_head += table_head_cell + "</tr></thead>"
71
+
72
+ table_body = ""
73
+ table_cell = ""
74
+ array_hash.each do |hash|
75
+ table_cell += "<tr>"
76
+ hash.each do |key, value|
77
+ table_cell += "<td>#{value}</td>"
78
+ end
79
+ table_cell += "</tr>"
80
+ end
81
+ table_body = "<tbody>" + table_cell + "</tbody>"
82
+
83
+ table_head + table_body
84
+ end
85
+ end
@@ -0,0 +1,20 @@
1
+ require_relative "../lib/dt.rb"
2
+ require "minitest/autorun"
3
+
4
+ class TestDT < MiniTest::Unit::TestCase
5
+ def test_array
6
+ assert_equal("<ul><li>a</li><li>b</li></ul>", DT::array_to_list(["a", "b"]))
7
+ end
8
+
9
+ def test_hash_array
10
+ hash = {"name" => ["John", "Jim"], "year" => ["1988", "1989"]}
11
+ expect = "<table border=\"1\"><thead><tr><th>name</th><th>year</th></tr></thead><tbody><tr><td>John</td><td>1988</td></tr><tr><td>Jim</td><td>1989</td></tr></tbody>"
12
+ assert_equal(expect, DT::hash_array_to_table(hash))
13
+ end
14
+
15
+ def test_array_hash
16
+ array = [{"name" => "John"},{"name" => "Jim"}]
17
+ result = "<table border=\"1\"><thead><tr><th>name</th></tr></thead><tbody><tr><td>John</td></tr><tr><td>Jim</td></tr></tbody>"
18
+ assert_equal(result, DT::array_hash_to_table(array))
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Minghe Huang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: a simle lib help you transfer data struct (array, hash array, array hash)
14
+ to html table
15
+ email: h.mignhe@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/dt.rb
21
+ - test/tc_dt.rb
22
+ homepage: http://minghe.me
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.0.14
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: data to table
46
+ test_files: []