simpletable 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzY0YmY5OWYzNTA5MjBjYmE3ZjZmNTU3NjU4NmJhYThlZjBjZWI0Nw==
4
+ ZTk0MTBlYzY0Y2JhNDJkMzk5YTJhYTI1OGNjYTIyYzE2ZmQ3YWJiYw==
5
5
  data.tar.gz: !binary |-
6
- ZDI1OTU0MzVhZTkzMTIyMDkwZjUyYTZmMmQ0YWI0MTRmMmFjMzA2Yg==
6
+ ZTY2MzliYmNkOTJmYjQ2OTRjMDdmZGZiOWRjNTE1YzQ1MWM3MzcyNw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjVkM2MwYjU0NDYyNzIyZjg3NGY4OWM2NjY2Yzk2ZGY0MTVlNzIzNDA4NDYw
10
- MTAxNGIzNWE0YmI2MDYyZThiNzZiM2FmMjE3MjUzYzk1ZmE5Yzk0NjIyNjNl
11
- MmM3MjU1MzAyOTEzMGRjNGM0MmM2N2QzNWVkMGRhMjA2NDA2YTk=
9
+ MTI5Y2NmMjQzODZjNmRhNTVhNjIwZWMxYWNjOTJlYTM0ZmNkMDBkY2IyZTM0
10
+ ZGUyNmE4MjI1MGQ5YmI1YjUyZWI3OTY4YTRmYjdmYmQ1OTZjZjkyMjQxZWE2
11
+ YmVlMjBhMmJkZGFhZGFiMjE5NGNkZWZlYzhhMjYzNDNkOGEzZmI=
12
12
  data.tar.gz: !binary |-
13
- OTE1MGM2M2NlMGMzYTNkOWM1YzIyMWIxNDA2MzM0MDgxOTczYjA4ZWU5OTAw
14
- NWYyNjIxMTU4ZDNhNzMyODMxODI3NDE4OTJhMTMzMjFhMmQ1MzVkZTkxODEx
15
- MGYwZDQ5NTMzMDAwOGNhOTgxMDI4NDBlMWI3NDJjNWUxY2VmNDc=
13
+ OGU3MzQzMmQ0ZTIxMThjYjgyOGQ4ZDNlYjRmZWM4MzE2MTg5MWE2YTg3Zjg0
14
+ NzI2N2RjZDIwZTNhZDI2OGNlYTUwODNkMDc3ZTFiNTA5ODBiNDUzN2NkYjFk
15
+ MTY0NDhmOTZjZTdkMjJmNzAzNjVkZGE3ZjcwOWFjMjA0M2RjN2I=
data/README.md CHANGED
@@ -1,29 +1,28 @@
1
- # simpletable
1
+ simpletable
2
+ ========
3
+ A Ruby library for easily formatting tables.
4
+
5
+ * simpletable on RubyGems: https://rubygems.org/gems/simpletable
6
+
7
+ Installation
8
+ ----
9
+ ```
10
+ gem install simpletable
11
+ ```
12
+
13
+ Basic Usage
14
+ -----
15
+ See [lib/test.rb](lib/test.rb) for usage samples.
16
+
17
+ Development
18
+ -----
19
+ #### Build:
20
+ ```
21
+ rake build
22
+ ```
23
+
24
+ #### Install:
25
+ ```
26
+ rake install
27
+ ```
2
28
 
3
- TODO: Write a gem description
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- gem 'simpletable'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install simpletable
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
- ## Contributing
24
-
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
data/lib/simpletable.rb CHANGED
@@ -3,30 +3,50 @@ require "simpletable/version"
3
3
  DEFAULT_DIVIDER = "="
4
4
  DEFAULT_PADDING = 2
5
5
 
6
- module SimpleTable
7
- def create( objects, titles, methods, options = {} )
6
+ class SimpleTable
7
+ def from_objects( objects, titles, methods, options = {} )
8
8
  raise "Mismatched number of methods and column titles" if titles.length != methods.length
9
+ @objects = objects
10
+ @titles = titles
11
+ @methods = methods
12
+ @divider = options[:divider] || DEFAULT_DIVIDER
13
+ @padding = options[:padding] || DEFAULT_PADDING
14
+ self
15
+ end
9
16
 
10
- divider = options[:divider] || DEFAULT_DIVIDER
11
- padding = options[:padding] || DEFAULT_PADDING
12
-
17
+ def print_text
13
18
  widths = []
14
19
  # 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
20
+ @titles.zip(@methods).each do |title,method|
21
+ widths << @objects.collect { |o| o.send(method).to_s }.push(title).group_by(&:size).max.first + @padding
17
22
  end
18
23
 
19
24
  # print table header
20
- print_row(titles,widths)
21
- puts divider * (widths.inject(:+) - padding) # sum of column widths - padding
25
+ print_row(@titles,widths)
26
+ puts @divider * (widths.inject(:+) - @padding) # sum of column widths - padding
22
27
 
23
28
  # print table body
24
- objects.each do |o|
25
- data = methods.collect{ |m| o.send(m) } # collect row data
29
+ @objects.each do |o|
30
+ data = @methods.collect{ |m| o.send(m) } # collect row data
26
31
  print_row(data,widths)
27
32
  end
28
33
  end
29
34
 
35
+ def print_csv(separator=",")
36
+ # quote strings w/ embedded separator characters
37
+ titles = []
38
+ @titles.each {|t| titles << (t.include?(separator) ? t.gsub(t,"\"#{t}\"") : t)}
39
+
40
+ # print table header
41
+ puts titles.join separator
42
+
43
+ # print table body
44
+ @objects.each do |o|
45
+ data = @methods.collect{ |m| o.send(m) } # collect row data
46
+ puts data.join separator
47
+ end
48
+ end
49
+
30
50
  private
31
51
  def print_row(data,widths)
32
52
  data.zip(widths).each { |d,w| print d.to_s.ljust(w) }
@@ -1,3 +1,3 @@
1
- module SimpleTable
2
- VERSION = "0.1.1"
1
+ module SimpleTableConst
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/test.rb CHANGED
@@ -11,10 +11,8 @@ class TestObject
11
11
  end
12
12
  end
13
13
 
14
- include SimpleTable
15
-
16
14
  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" ]
15
+ titles2 = [ "Title A", "Title B", "Title C is very long; the longest" ]
18
16
  methods = [ :p1, :p2, :p3 ]
19
17
 
20
18
  objs = []
@@ -24,7 +22,24 @@ objs << TestObject.new("eleven","twelve","thirteen")
24
22
  objs << TestObject.new("fourteen","fifteen","sixteen")
25
23
  objs << TestObject.new("thisisthebiggestword","thisisthebiggestword","thisisthebiggestword")
26
24
 
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})
25
+ t = SimpleTable.new
26
+
27
+ t.from_objects(objs,titles,methods).print_text
28
+ print "\n"
29
+ t.print_csv
30
+ print "\n"
31
+
32
+ t.from_objects(objs,titles,methods,{:divider=>"*"}).print_text
33
+ print "\n"
34
+ t.print_csv
35
+ print "\n"
36
+
37
+ t.from_objects(objs,titles,methods,{:divider=>"-",:padding=>5}).print_text
38
+ print "\n"
39
+ t.print_csv
40
+ print "\n"
41
+
42
+ t.from_objects(objs,titles2,methods,{:divider=>"-",:padding=>5}).print_text
43
+ print "\n"
44
+ t.print_csv(";")
45
+ print "\n"
data/simpletable.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'simpletable/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "simpletable"
8
- spec.version = SimpleTable::VERSION
8
+ spec.version = SimpleTableConst::VERSION
9
9
  spec.authors = ["Brady Turner"]
10
10
  spec.email = ["bradyaturner@gmail.com"]
11
11
  spec.description = %q{Create and format tables}
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.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Turner