tabular 0.2.1 → 0.2.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -2,13 +2,12 @@ require "rubygems"
2
2
 
3
3
  $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib")
4
4
 
5
+ require "tabular/blank"
5
6
  require "tabular/keys"
7
+ require "tabular/zero"
6
8
 
7
9
  require "tabular/column"
8
10
  require "tabular/columns"
9
11
  require "tabular/renderer"
10
12
  require "tabular/row"
11
13
  require "tabular/table"
12
-
13
- require "tabular/support/object"
14
- require "tabular/support/zero"
@@ -0,0 +1,21 @@
1
+ module Tabular
2
+ # Don't mess with Object
3
+ module Blank
4
+ def is_blank?(object)
5
+ case object
6
+ when NilClass
7
+ true
8
+ when FalseClass
9
+ true
10
+ when TrueClass
11
+ true
12
+ when String
13
+ object !~ /\S/
14
+ when Numeric
15
+ false
16
+ else
17
+ object.respond_to?(:empty?) ? object.empty? : !object
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,7 @@
1
1
  module Tabular
2
2
  class Column
3
+ include Tabular::Blank
4
+
3
5
  attr_reader :key, :column_type
4
6
 
5
7
  # +table+ -- parent Table
@@ -69,7 +71,7 @@ module Tabular
69
71
  private
70
72
 
71
73
  def symbolize(key)
72
- return nil if key.blank?
74
+ return nil if is_blank?(key)
73
75
 
74
76
  begin
75
77
  key.to_s.strip.gsub(/::/, '/').
@@ -2,6 +2,7 @@ module Tabular
2
2
  # The Table's header: a list of Columns.
3
3
  class Columns
4
4
  include Enumerable
5
+ include Tabular::Blank
5
6
  include Tabular::Keys
6
7
 
7
8
  attr_accessor :renderer
@@ -19,7 +20,7 @@ module Tabular
19
20
  @columns = nil
20
21
  @columns = names.map do |column|
21
22
  new_column = Tabular::Column.new(table, self, column, @columns_map)
22
- unless new_column.key.blank?
23
+ unless is_blank?(new_column.key)
23
24
  @column_indexes[new_column.key] = index
24
25
  @columns_by_key[new_column.key] = new_column
25
26
  end
@@ -52,7 +53,7 @@ module Tabular
52
53
  # Add a new Column with +key+
53
54
  def <<(key)
54
55
  column = Column.new(@table, self, key, @columns_map)
55
- unless column.key.blank? || has_key?(key)
56
+ unless is_blank?(column.key) || has_key?(key)
56
57
  @column_indexes[column.key] = @columns.size
57
58
  @column_indexes[@columns.size] = column
58
59
  @columns_by_key[column.key] = column
@@ -2,7 +2,9 @@ module Tabular
2
2
  # Simple Enumerable list of Hashes. Use Table.read(file_path) to read file. Can also create a Table with Table.new. Either
3
3
  # pass in data or set options and then call row=.
4
4
  class Table
5
+ include Tabular::Blank
5
6
  include Tabular::Keys
7
+ include Tabular::Zero
6
8
 
7
9
  attr_reader :options, :rows
8
10
  attr_accessor :row_mapper
@@ -126,7 +128,7 @@ module Tabular
126
128
  # Remove all columns that only contain a blank string, zero, or nil
127
129
  def delete_blank_columns!
128
130
  columns.map(&:key).each do |key|
129
- if rows.all? { |row| row[key].blank? || row[key].zero? }
131
+ if rows.all? { |row| is_blank?(row[key]) || is_zero?(row[key]) }
130
132
  delete_column key
131
133
  end
132
134
  end
@@ -190,7 +192,7 @@ module Tabular
190
192
  end
191
193
 
192
194
  def self.format_from(as_option, file_path)
193
- if as_option.present?
195
+ if as_option
194
196
  as_option
195
197
  else
196
198
  case File.extname(file_path)
@@ -0,0 +1,18 @@
1
+ module Tabular
2
+ module Zero
3
+ def is_zero?(object)
4
+ if object.respond_to?(:zero?)
5
+ return object.zero?
6
+ end
7
+
8
+ case object
9
+ when NilClass, FalseClass, TrueClass
10
+ false
11
+ when String
12
+ object == "0" || object[/^0+\.0+$/]
13
+ else
14
+ false
15
+ end
16
+ end
17
+ end
18
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tabular"
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Scott Willson"]
12
- s.date = "2013-05-05"
12
+ s.date = "2013-05-20"
13
13
  s.description = "Tabular is a Ruby library for reading, writing, and manipulating CSV, tab-delimited and Excel data."
14
14
  s.email = "scott.willson@gmail.cpm"
15
15
  s.extra_rdoc_files = [
@@ -24,14 +24,14 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "lib/tabular.rb",
27
+ "lib/tabular/blank.rb",
27
28
  "lib/tabular/column.rb",
28
29
  "lib/tabular/columns.rb",
29
30
  "lib/tabular/keys.rb",
30
31
  "lib/tabular/renderer.rb",
31
32
  "lib/tabular/row.rb",
32
- "lib/tabular/support/object.rb",
33
- "lib/tabular/support/zero.rb",
34
33
  "lib/tabular/table.rb",
34
+ "lib/tabular/zero.rb",
35
35
  "tabular.gemspec",
36
36
  "test/column_test.rb",
37
37
  "test/columns_test.rb",
@@ -1,21 +1,23 @@
1
1
  require "helper"
2
2
 
3
3
  class ZeroTest < Test::Unit::TestCase
4
+ include Tabular::Zero
5
+
4
6
  def test_zero
5
- assert 0.zero?
6
- assert (0.0).zero?
7
- assert "0".zero?
8
- assert "0.0".zero?
9
- assert "00000.00000".zero?
7
+ assert is_zero?(0)
8
+ assert is_zero?(0.0)
9
+ assert is_zero?("0")
10
+ assert is_zero?("0.0")
11
+ assert is_zero?("00000.00000")
10
12
 
11
- assert !(1.zero?)
12
- assert !(-1.zero?)
13
- assert !((0.1).zero?)
14
- assert !("1".zero?)
15
- assert !("ABC".zero?)
16
- assert !(nil.zero?)
17
- assert !("".zero?)
18
- assert !(false.zero?)
19
- assert !(true.zero?)
13
+ assert !is_zero?(1)
14
+ assert !is_zero?(-1)
15
+ assert !is_zero?(0.1)
16
+ assert !is_zero?("1")
17
+ assert !is_zero?("ABC")
18
+ assert !is_zero?(nil)
19
+ assert !is_zero?("")
20
+ assert !is_zero?(false)
21
+ assert !is_zero?(true)
20
22
  end
21
23
  end
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: tabular
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Scott Willson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-05 00:00:00.000000000 Z
12
+ date: 2013-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-ole
@@ -75,14 +75,14 @@ files:
75
75
  - Rakefile
76
76
  - VERSION
77
77
  - lib/tabular.rb
78
+ - lib/tabular/blank.rb
78
79
  - lib/tabular/column.rb
79
80
  - lib/tabular/columns.rb
80
81
  - lib/tabular/keys.rb
81
82
  - lib/tabular/renderer.rb
82
83
  - lib/tabular/row.rb
83
- - lib/tabular/support/object.rb
84
- - lib/tabular/support/zero.rb
85
84
  - lib/tabular/table.rb
85
+ - lib/tabular/zero.rb
86
86
  - tabular.gemspec
87
87
  - test/column_test.rb
88
88
  - test/columns_test.rb
@@ -105,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - ! '>='
107
107
  - !ruby/object:Gem::Version
108
- hash: -2217103212522653909
108
+ hash: 1566100413199475638
109
109
  segments:
110
110
  - 0
111
111
  version: '0'
@@ -1,59 +0,0 @@
1
- # Copied from Rails' ActiveSupport
2
- class Object
3
- # An object is blank if it's false, empty, or a whitespace string.
4
- # For example, "", " ", +nil+, [], and {} are blank.
5
- #
6
- # This simplifies
7
- #
8
- # if !address.nil? && !address.empty?
9
- #
10
- # to
11
- #
12
- # if !address.blank?
13
- def blank?
14
- respond_to?(:empty?) ? empty? : !self
15
- end
16
-
17
- # An object is present if it's not blank.
18
- def present?
19
- !blank?
20
- end
21
- end
22
-
23
- class NilClass #:nodoc:
24
- def blank?
25
- true
26
- end
27
- end
28
-
29
- class FalseClass #:nodoc:
30
- def blank?
31
- true
32
- end
33
- end
34
-
35
- class TrueClass #:nodoc:
36
- def blank?
37
- false
38
- end
39
- end
40
-
41
- class Array #:nodoc:
42
- alias_method :blank?, :empty?
43
- end
44
-
45
- class Hash #:nodoc:
46
- alias_method :blank?, :empty?
47
- end
48
-
49
- class String #:nodoc:
50
- def blank?
51
- self !~ /\S/
52
- end
53
- end
54
-
55
- class Numeric #:nodoc:
56
- def blank?
57
- false
58
- end
59
- end
@@ -1,29 +0,0 @@
1
- class Object
2
- def zero?
3
- false
4
- end
5
- end
6
-
7
- class NilClass #:nodoc:
8
- def zero?
9
- false
10
- end
11
- end
12
-
13
- class FalseClass #:nodoc:
14
- def zero?
15
- false
16
- end
17
- end
18
-
19
- class TrueClass #:nodoc:
20
- def zero?
21
- false
22
- end
23
- end
24
-
25
- class String #:nodoc:
26
- def zero?
27
- self == "0" || self[/^0+\.0+$/]
28
- end
29
- end