simpletable 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/simpletable.rb +31 -1
- data/lib/simpletable/version.rb +1 -1
- data/lib/test.rb +30 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTI5Njg4MTBiNjJjNzcyYWY3OTk0ZDAzMDk2MGVhZDRmZGY0MTRjZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDNjNDE0YWE1NmU1ZmQwNGNhNmU4NzVjNDNmNmRlZjY5MDJjZGYxZQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTIxZDU2MTllYjEwOWFkMjhhMTUyOTA3MjA1OGY2MjBhN2VhYzVlZmQ0NDcx
|
10
|
+
NjQxZGY3YzczNWU3M2RjZjEzYzVlZjRlNWZjYjYxMTFkMjc5ZmU5YmZiN2M0
|
11
|
+
OTQ3YTNiY2I4ZTA3NDc4NWM1OGRjZmRiNzAzMGU3MjkwZWIxYTI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MWI3NjhiNDY4ZjJiODNmNDQyZjVkYmNkZTE0OTBhNzQ2MmUyY2ZlYzMyYWY4
|
14
|
+
YmFjNDI3Yzg0ZmRjNWU5N2FlOTg3MDg5Y2I4NGNjODRjNTJmMTE4ZGFjYmY4
|
15
|
+
ZmFhYzNlZjBlNTYwYTk4NDAzMzUyMGQwOGQ1MjIxYjcyZTMyZDE=
|
data/lib/simpletable.rb
CHANGED
@@ -1,5 +1,35 @@
|
|
1
1
|
require "simpletable/version"
|
2
2
|
|
3
|
+
DEFAULT_DIVIDER = "="
|
4
|
+
DEFAULT_PADDING = 2
|
5
|
+
|
3
6
|
module SimpleTable
|
4
|
-
|
7
|
+
def create( objects, titles, methods, options = {} )
|
8
|
+
raise "Mismatched number of methods and column titles" if titles.length != methods.length
|
9
|
+
|
10
|
+
divider = options[:divider] || DEFAULT_DIVIDER
|
11
|
+
padding = options[:padding] || DEFAULT_PADDING
|
12
|
+
|
13
|
+
widths = []
|
14
|
+
# calculate column widths
|
15
|
+
titles.zip(methods).each do |title,method|
|
16
|
+
widths << objects.collect { |o| o.send(method).to_s }.push(title).group_by(&:size).max.first + padding
|
17
|
+
end
|
18
|
+
|
19
|
+
# print table header
|
20
|
+
print_row(titles,widths)
|
21
|
+
puts divider * (widths.inject(:+) - padding) # sum of column widths - padding
|
22
|
+
|
23
|
+
# print table body
|
24
|
+
objects.each do |o|
|
25
|
+
data = methods.collect{ |m| o.send(m) } # collect row data
|
26
|
+
print_row(data,widths)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
def print_row(data,widths)
|
32
|
+
data.zip(widths).each { |d,w| print d.ljust(w) }
|
33
|
+
print "\n"
|
34
|
+
end
|
5
35
|
end
|
data/lib/simpletable/version.rb
CHANGED
data/lib/test.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require './simpletable'
|
4
|
+
|
5
|
+
class TestObject
|
6
|
+
attr_reader :p1, :p2, :p3
|
7
|
+
def initialize(p1,p2,p3)
|
8
|
+
@p1 = p1
|
9
|
+
@p2 = p2
|
10
|
+
@p3 = p3
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
include SimpleTable
|
15
|
+
|
16
|
+
titles = [ "Title A", "Title B is very long, the longest", "Title C" ]
|
17
|
+
titles2 = [ "Title A", "Title B", "Title C is very long, the longest" ]
|
18
|
+
methods = [ :p1, :p2, :p3 ]
|
19
|
+
|
20
|
+
objs = []
|
21
|
+
objs << TestObject.new("thisisaword","anotherword","short")
|
22
|
+
objs << TestObject.new("also","kindof","longerword")
|
23
|
+
objs << TestObject.new("eleven","twelve","thirteen")
|
24
|
+
objs << TestObject.new("fourteen","fifteen","sixteen")
|
25
|
+
objs << TestObject.new("thisisthebiggestword","thisisthebiggestword","thisisthebiggestword")
|
26
|
+
|
27
|
+
SimpleTable.create(objs,titles,methods)
|
28
|
+
SimpleTable.create(objs,titles,methods,{:divider=>"*"})
|
29
|
+
SimpleTable.create(objs,titles,methods,{:divider=>"-",:padding=>5})
|
30
|
+
SimpleTable.create(objs,titles2,methods,{:divider=>"-",:padding=>5})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simpletable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brady Turner
|
@@ -53,6 +53,7 @@ files:
|
|
53
53
|
- Rakefile
|
54
54
|
- lib/simpletable.rb
|
55
55
|
- lib/simpletable/version.rb
|
56
|
+
- lib/test.rb
|
56
57
|
- simpletable.gemspec
|
57
58
|
homepage: ''
|
58
59
|
licenses:
|