tabulate 0.1.0 → 0.1.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.
Files changed (5) hide show
  1. data/.bnsignore +18 -0
  2. data/History.txt +3 -1
  3. data/lib/tabulate.rb +30 -15
  4. data/version.txt +1 -1
  5. metadata +30 -49
@@ -0,0 +1,18 @@
1
+ # The list of files that should be ignored by Mr Bones.
2
+ # Lines that start with '#' are comments.
3
+ #
4
+ # A .gitignore file can be used instead by setting it as the ignore
5
+ # file in your Rakefile:
6
+ #
7
+ # Bones {
8
+ # ignore_file '.gitignore'
9
+ # }
10
+ #
11
+ # For a project with a C extension, the following would be a good set of
12
+ # exclude patterns (uncomment them if you want to use them):
13
+ # *.[oa]
14
+ # *~
15
+ announcement.txt
16
+ coverage
17
+ doc
18
+ pkg
@@ -1,4 +1,6 @@
1
- == 1.0.0 / 2011-04-24
1
+ == 0.1.1 / 2011-04-24
2
+ * rdoc added
3
+ == 0.1.0 / 2011-04-24
2
4
 
3
5
  * 1 major enhancement
4
6
  * Birthday!
@@ -1,7 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
2
  # coding: utf-8
3
- # author: Roy Zuo ( roylzuo AT gmail DOT com )
3
+ # A simple tabulate method to columnize data in console.
4
+ #
5
+ # author:: Roy Zuo (aka roylez)
6
+ #
4
7
 
8
+ # global template variable
9
+ # * :rs: record seperator
10
+ # * :hs: heading seperator
11
+ # * :fs: field seperator
12
+ # * :cross: the cross point of record seperator and field seperator
13
+ # * :lframe: left frame
14
+ # * :rframe: right frame
15
+ # * :hlframe: heading left frame
16
+ # * :hrframe: heading right frame
17
+ # * :padding: number of padding characters for each field on each side
18
+ #
5
19
  $template = {
6
20
  "simple" => {
7
21
  :rs => '', :fs => ' | ', :cross => '+',
@@ -48,17 +62,16 @@ $template = {
48
62
  },
49
63
  }
50
64
 
51
- # tabulate arrays, styles can be simple/legacy
52
- # data may come in in a format like
53
- # +labels+ table heading, an array
54
- # +data+ an array of data to be tabulated, one element for one row
55
- # +opts+ optional arguments, :indent => 0, :style => 'fancy'
56
- #
65
+ # tabulate arrays, it accepts the following arguments
66
+ # * :label: table headings, an array
67
+ # * :data: table data. Each elements stands for one *or more* rows.
68
+ # For example, [[1, 2] , [3, [4, 5]], [nil, 6]] will be processed as 4 lines
69
+ # +1 2+
70
+ # +3 4+
71
+ # +3 5+
72
+ # + 6+
73
+ # * :opts: optional arguments, default to :indent => 0, :style => 'fancy'
57
74
  # return a String
58
- #
59
- # [ [a, b, c], [d, e, [f, g]] .... ]
60
- # [ a, b, c] will be used as a single row
61
- # and [d, e,[f,g]] will be used as two rows
62
75
  def tabulate(labels, data, opts = { } )
63
76
  raise 'Label and data do not have equal columns!' unless labels.size == data.transpose.size
64
77
 
@@ -129,17 +142,19 @@ end
129
142
 
130
143
  class String
131
144
  if RUBY_VERSION >= '1.9'
145
+ # test if string contains east Asian character (RUBY_VERSION > 1.9)
132
146
  def contains_cjk? # Oniguruma regex !!!
133
147
  (self =~ /\p{Han}|\p{Katakana}|\p{Hiragana}\p{Hangul}/)
134
148
  end
135
- def width
149
+ end
150
+ # actual string width
151
+ def width
152
+ if RUBY_VERSION >= '1.9'
136
153
  gsub(/(\e|\033|\33)\[[;0-9]*\D/,'').split(//).inject( 0 ) do |s, i|
137
154
  s += i.contains_cjk? ? 2 : 1
138
155
  s
139
156
  end
140
- end
141
- else
142
- def width
157
+ else
143
158
  gsub(/(\e|\033|\33)\[[;0-9]*\D/,'').size
144
159
  end
145
160
  end
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
metadata CHANGED
@@ -1,48 +1,37 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tabulate
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Roy Zuo (aka roylez)
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-04-25 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-04-25 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: bones
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &86175090 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 21
29
- segments:
30
- - 3
31
- - 6
32
- - 5
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 3.6.5
34
22
  type: :development
35
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *86175090
36
25
  description: Create fancy command line tables with ease.
37
26
  email: roylzuo AT gmail DOT com
38
- executables:
27
+ executables:
39
28
  - tabulate
40
29
  extensions: []
41
-
42
- extra_rdoc_files:
30
+ extra_rdoc_files:
43
31
  - History.txt
44
32
  - bin/tabulate
45
- files:
33
+ files:
34
+ - .bnsignore
46
35
  - History.txt
47
36
  - README.md
48
37
  - Rakefile
@@ -54,37 +43,29 @@ files:
54
43
  - version.txt
55
44
  homepage: http://tabulate.rubygems.org
56
45
  licenses: []
57
-
58
46
  post_install_message:
59
- rdoc_options:
47
+ rdoc_options:
60
48
  - --main
61
49
  - README.md
62
- require_paths:
50
+ require_paths:
63
51
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
52
+ required_ruby_version: !ruby/object:Gem::Requirement
65
53
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
59
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 3
79
- segments:
80
- - 0
81
- version: "0"
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
82
64
  requirements: []
83
-
84
65
  rubyforge_project: tabulate
85
66
  rubygems_version: 1.7.2
86
67
  signing_key:
87
68
  specification_version: 3
88
69
  summary: Create fancy command line tables with ease.
89
- test_files:
70
+ test_files:
90
71
  - test/test_tabulate.rb