sequel 0.0.9 → 0.0.10

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/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ *0.0.10*
2
+
3
+ * Added some examples.
4
+
5
+ * Added Dataset#print method for pretty-printing tables.
6
+
1
7
  *0.0.9*
2
8
 
3
9
  * Fixed Postgres::Database#tables and #locks methods.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  include FileUtils
7
7
 
8
8
  NAME = "sequel"
9
- VERS = "0.0.9"
9
+ VERS = "0.0.10"
10
10
  CLEAN.include ['**/.*.sw?', 'pkg/*', '.config', 'doc/*', 'coverage/*']
11
11
  RDOC_OPTS = ['--quiet', '--title', "Sequel: Concise ORM for Ruby",
12
12
  "--opname", "index.html",
data/lib/sequel.rb CHANGED
@@ -3,6 +3,7 @@ require File.join(dir, 'core_ext')
3
3
  require File.join(dir, 'database')
4
4
  require File.join(dir, 'connection_pool')
5
5
  require File.join(dir, 'schema')
6
+ require File.join(dir, 'pretty_table')
6
7
  require File.join(dir, 'dataset')
7
8
  require File.join(dir, 'model')
8
9
 
@@ -413,6 +413,10 @@ module Sequel
413
413
 
414
414
  @db.transaction {each {|r| r.destroy}}
415
415
  end
416
+
417
+ def print(*columns)
418
+ Sequel::PrettyTable.print(all, columns.empty? ? nil : columns)
419
+ end
416
420
  end
417
421
  end
418
422
 
@@ -0,0 +1,59 @@
1
+ # Print nice-looking plain-text tables
2
+ # +--+-------+
3
+ # |id|name |
4
+ # |--+-------|
5
+ # |1 |fasdfas|
6
+ # |2 |test |
7
+ # +--+-------+
8
+
9
+ module Sequel
10
+ class PrettyTable
11
+ def self.hash_columns(records)
12
+ columns = []
13
+ records.each do |r|
14
+ r.keys.each {|k| columns << k unless columns.include?(k)}
15
+ end
16
+ columns
17
+ end
18
+
19
+ def self.column_sizes(records, columns)
20
+ sizes = Hash.new {0}
21
+ columns.each do |c|
22
+ s = c.to_s.size
23
+ sizes[c.to_sym] = s if s > sizes[c.to_sym]
24
+ end
25
+ records.each do |r|
26
+ r.each do |k, v|
27
+ s = v.to_s.size
28
+ sizes[k.to_sym] = s if s > sizes[k.to_sym]
29
+ end
30
+ end
31
+ sizes
32
+ end
33
+
34
+ def self.separator_line(columns, sizes)
35
+ l = ''
36
+ '+' + columns.map {|c| '-' * sizes[c]}.join('+') + '+'
37
+ end
38
+
39
+ def self.data_line(columns, sizes, record)
40
+ '|' + columns.map {|c| "%-#{sizes[c]}s" % record[c].to_s}.join('|') + '|'
41
+ end
42
+
43
+ def self.header_line(columns, sizes)
44
+ '|' + columns.map {|c| "%-#{sizes[c]}s" % c.to_s}.join('|') + '|'
45
+ end
46
+
47
+ def self.print(records, columns = nil) # records is an array of hashes
48
+ columns ||= hash_columns(records)
49
+ sizes = column_sizes(records, columns)
50
+
51
+ puts separator_line(columns, sizes)
52
+ puts header_line(columns, sizes)
53
+ puts separator_line(columns, sizes)
54
+ records.each {|r| puts data_line(columns, sizes, r)}
55
+ puts separator_line(columns, sizes)
56
+ end
57
+ end
58
+ end
59
+
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: sequel
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.9
7
- date: 2007-03-25 00:00:00 +02:00
6
+ version: 0.0.10
7
+ date: 2007-03-26 00:00:00 +02:00
8
8
  summary: Concise ORM for Ruby.
9
9
  require_paths:
10
10
  - lib
@@ -33,7 +33,6 @@ files:
33
33
  - README
34
34
  - Rakefile
35
35
  - bin/sequel
36
- - doc/rdoc
37
36
  - lib/sequel
38
37
  - lib/sequel.rb
39
38
  - lib/sequel/dataset.rb
@@ -45,6 +44,7 @@ files:
45
44
  - lib/sequel/database.rb
46
45
  - lib/sequel/core_ext.rb
47
46
  - lib/sequel/mysql.rb
47
+ - lib/sequel/pretty_table.rb
48
48
  - CHANGELOG
49
49
  test_files: []
50
50