ztk 0.3.0 → 0.3.1
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.
- data/lib/ztk/report.rb +50 -14
- data/lib/ztk/version.rb +1 -1
- metadata +3 -3
data/lib/ztk/report.rb
CHANGED
@@ -38,18 +38,6 @@ module ZTK
|
|
38
38
|
config.logger.debug { "config=#{config.send(:table).inspect}" }
|
39
39
|
end
|
40
40
|
|
41
|
-
def format_header(headers, lengths)
|
42
|
-
line = headers.collect do |header|
|
43
|
-
"-" * lengths.send(header)
|
44
|
-
end
|
45
|
-
["+-", line.join("-+-"), "-+"].join.strip
|
46
|
-
end
|
47
|
-
|
48
|
-
def format_row(*args)
|
49
|
-
spacer = " "
|
50
|
-
[spacer, args, spacer].flatten.join(" | ").strip
|
51
|
-
end
|
52
|
-
|
53
41
|
def spreadsheet(dataset, headers, &block)
|
54
42
|
!block_given? and log_and_raise(ReportError, "You must supply a block!")
|
55
43
|
headers.nil? and log_and_raise(ReportError, "Headers can not be nil!")
|
@@ -87,10 +75,58 @@ module ZTK
|
|
87
75
|
|
88
76
|
config.stdout.puts(format_header(headers, max_lengths))
|
89
77
|
|
90
|
-
|
78
|
+
width = (2 + max_lengths.send(:table).values.reduce(:+) + ((headers.count * 3) - 3) + 2)
|
79
|
+
|
80
|
+
OpenStruct.new(:rows => rows, :max_lengths => max_lengths, :width => width)
|
81
|
+
end
|
82
|
+
|
83
|
+
def list(dataset, headers, &block)
|
84
|
+
!block_given? and log_and_raise(ReportError, "You must supply a block!")
|
85
|
+
headers.nil? and log_and_raise(ReportError, "Headers can not be nil!")
|
86
|
+
dataset.nil? and log_and_raise(ReportError, "Dataset can not be nil!")
|
87
|
+
|
88
|
+
rows = Array.new
|
89
|
+
max_lengths = OpenStruct.new
|
90
|
+
headers = headers.map(&:downcase).map(&:to_sym)
|
91
|
+
|
92
|
+
dataset.each do |data|
|
93
|
+
rows << block.call(data)
|
94
|
+
end
|
95
|
+
|
96
|
+
max_key_length = headers.collect{ |header| header.length }.max
|
97
|
+
max_value_length = rows.collect{ |row| headers.collect{ |header| row.send(header).to_s.length }.max }.max
|
98
|
+
|
99
|
+
width = (max_key_length + max_value_length + 2 + 2 + 2)
|
100
|
+
|
101
|
+
rows.each do |row|
|
102
|
+
config.stdout.puts("+#{"-" * width}+")
|
103
|
+
headers.each do |header|
|
104
|
+
entry_line = format_entry(header, max_key_length, row.send(header), max_value_length)
|
105
|
+
config.stdout.puts(entry_line)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
config.stdout.puts("+#{"-" * width}+")
|
109
|
+
|
110
|
+
OpenStruct.new(:rows => rows, :max_key_length => max_key_length, :max_value_length => max_value_length, :width => width)
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def format_header(headers, lengths)
|
117
|
+
line = headers.collect do |header|
|
118
|
+
"-" * lengths.send(header)
|
119
|
+
end
|
120
|
+
["+-", line.join("-+-"), "-+"].join.strip
|
121
|
+
end
|
122
|
+
|
123
|
+
def format_row(*args)
|
124
|
+
spacer = " "
|
125
|
+
[spacer, args, spacer].flatten.join(" | ").strip
|
91
126
|
end
|
92
127
|
|
93
|
-
def
|
128
|
+
def format_entry(key, key_length, value, value_length)
|
129
|
+
"| %#{key_length}s: %-#{value_length}s |" % [key.to_s.upcase, value.to_s]
|
94
130
|
end
|
95
131
|
|
96
132
|
end
|
data/lib/ztk/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ztk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -217,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
217
217
|
version: '0'
|
218
218
|
segments:
|
219
219
|
- 0
|
220
|
-
hash:
|
220
|
+
hash: -4389390539649954166
|
221
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
222
222
|
none: false
|
223
223
|
requirements:
|
@@ -226,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
226
|
version: '0'
|
227
227
|
segments:
|
228
228
|
- 0
|
229
|
-
hash:
|
229
|
+
hash: -4389390539649954166
|
230
230
|
requirements: []
|
231
231
|
rubyforge_project:
|
232
232
|
rubygems_version: 1.8.24
|