sequel 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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