itrigga-core_ext 0.3.0 → 1.0.0

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/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use ruby-1.9.2-p290@itrigga-core_ext --create
data/Gemfile CHANGED
@@ -5,19 +5,15 @@ source "http://rubygems.org"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
+ gem "fastercsv", ">= 1.5.4"
9
+ gem "bundler", "~> 1.0.0"
10
+
8
11
  group :development do
9
- gem "rspec", "1.3.0"
10
- gem "rspec-rails", "1.3.2"
11
- gem "bundler", "~> 1.0.0"
12
12
  gem "jeweler", "~> 1.6.4"
13
- gem "rcov", ">= 0"
14
- gem "fastercsv", ">= 1.5.4"
15
13
  end
16
14
 
17
15
  group :test do
18
16
  gem "rspec", "1.3.0"
19
17
  gem "rspec-rails", "1.3.2"
20
- gem "bundler", "~> 1.0.0"
21
- gem "rcov", ">= 0"
22
- gem "fastercsv", ">= 1.5.4"
18
+ gem 'test-unit', '1.2.3' # needed by rspec if using ruby 1.9.X
23
19
  end
@@ -3,17 +3,20 @@ GEM
3
3
  specs:
4
4
  fastercsv (1.5.4)
5
5
  git (1.2.5)
6
+ hoe (2.12.4)
7
+ rake (~> 0.8)
6
8
  jeweler (1.6.4)
7
9
  bundler (~> 1.0)
8
10
  git (>= 1.2.5)
9
11
  rake
10
12
  rack (1.1.0)
11
13
  rake (0.8.7)
12
- rcov (0.9.9)
13
14
  rspec (1.3.0)
14
15
  rspec-rails (1.3.2)
15
16
  rack (>= 1.0.0)
16
17
  rspec (>= 1.3.0)
18
+ test-unit (1.2.3)
19
+ hoe (>= 1.5.1)
17
20
 
18
21
  PLATFORMS
19
22
  ruby
@@ -22,6 +25,6 @@ DEPENDENCIES
22
25
  bundler (~> 1.0.0)
23
26
  fastercsv (>= 1.5.4)
24
27
  jeweler (~> 1.6.4)
25
- rcov
26
28
  rspec (= 1.3.0)
27
29
  rspec-rails (= 1.3.2)
30
+ test-unit (= 1.2.3)
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ Jeweler::Tasks.new do |gem|
23
23
  - symbolize_keys
24
24
  - recursive_symbolize_keys
25
25
  Array:
26
- - to_csv (requires FasterCSV gem)
26
+ - to_csv (requires FasterCSV gem if ruby 1.8)
27
27
  - select_with_index
28
28
  - to_auto_complete_list
29
29
  - active_record_type_condition_rendering
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 1.0.0
@@ -4,28 +4,20 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{itrigga-core_ext}
8
- s.version = "0.3.0"
7
+ s.name = "itrigga-core_ext"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Al Davidson", "Anson Kelly"]
12
- s.date = %q{2011-11-17}
13
- s.description = %q{Adds methods for
14
- Hash:
15
- - symbolize_keys
16
- - recursive_symbolize_keys
17
- Array:
18
- - to_csv (requires FasterCSV gem)
19
- - select_with_index
20
- - to_auto_complete_list
21
- - active_record_type_condition_rendering
22
- }
23
- s.email = %q{aldavidson@itrigga.com}
12
+ s.date = "2011-12-07"
13
+ s.description = "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n Array:\n - to_csv (requires FasterCSV gem if ruby 1.8)\n - select_with_index\n - to_auto_complete_list\n - active_record_type_condition_rendering\n "
14
+ s.email = "aldavidson@itrigga.com"
24
15
  s.extra_rdoc_files = [
25
16
  "LICENSE.txt",
26
17
  "README.rdoc"
27
18
  ]
28
19
  s.files = [
20
+ ".rvmrc",
29
21
  "Gemfile",
30
22
  "Gemfile.lock",
31
23
  "LICENSE.txt",
@@ -46,38 +38,28 @@ Gem::Specification.new do |s|
46
38
  "spec/spec.opts",
47
39
  "spec/spec_helper.rb"
48
40
  ]
49
- s.homepage = %q{http://gems.itrigga.com/trigga-core_ext}
41
+ s.homepage = "http://gems.itrigga.com/trigga-core_ext"
50
42
  s.licenses = ["MIT"]
51
43
  s.require_paths = ["lib", "lib/itrigga", "lib/itrigga"]
52
- s.rubygems_version = %q{1.3.7}
53
- s.summary = %q{extensions for core classes Hash, Array}
44
+ s.rubygems_version = "1.8.10"
45
+ s.summary = "extensions for core classes Hash, Array"
54
46
 
55
47
  if s.respond_to? :specification_version then
56
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
48
  s.specification_version = 3
58
49
 
59
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
- s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
61
- s.add_development_dependency(%q<rspec-rails>, ["= 1.3.2"])
62
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
51
+ s.add_runtime_dependency(%q<fastercsv>, [">= 1.5.4"])
52
+ s.add_runtime_dependency(%q<bundler>, ["~> 1.0.0"])
63
53
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
64
- s.add_development_dependency(%q<rcov>, [">= 0"])
65
- s.add_development_dependency(%q<fastercsv>, [">= 1.5.4"])
66
54
  else
67
- s.add_dependency(%q<rspec>, ["= 1.3.0"])
68
- s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
55
+ s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
69
56
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
70
57
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
71
- s.add_dependency(%q<rcov>, [">= 0"])
72
- s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
73
58
  end
74
59
  else
75
- s.add_dependency(%q<rspec>, ["= 1.3.0"])
76
- s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
60
+ s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
77
61
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
78
62
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
79
- s.add_dependency(%q<rcov>, [">= 0"])
80
- s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
81
63
  end
82
64
  end
83
65
 
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  Dir[File.join(File.dirname(File.expand_path(__FILE__)),"core_ext","*.rb")].each {|f| require f }
2
3
 
3
4
 
@@ -1,4 +1,5 @@
1
- require 'fastercsv'
1
+ # -*- encoding : utf-8 -*-
2
+ require 'fastercsv' if Gem::Version.new(''+RUBY_VERSION) < Gem::Version.new("1.9.0") # only for ruby 1.8
2
3
 
3
4
  class Array
4
5
 
@@ -7,16 +8,37 @@ class Array
7
8
  # each column is described by a label/property pair
8
9
  # eg [["Published","created_at"]] generates a column with label "Published" and the data value being the created_at field
9
10
  #
10
- def to_csv(columns)
11
- FasterCSV.generate do |csv|
12
- csv << columns.collect{|c| c.to_a.first }
13
- self.each do |result|
14
- csv << columns.collect{|c| c.to_a.last }.collect{|c| result.send(c) }
11
+ # Because ruby 1.9 includes FasterCSV in the core we should use that if we can
12
+ def to_csv_with_columns(columns)
13
+
14
+ if Gem::Version.new(''+RUBY_VERSION) >= Gem::Version.new("1.9.0")
15
+ # 1.9 version
16
+ CSV.generate do |csv|
17
+ csv << columns.collect{|c| c.to_a.first }
18
+ self.each do |result|
19
+ csv << columns.collect{|c| c.to_a.last }.collect{|c| result.send(c) }
20
+ end
21
+ end
22
+ else
23
+ # 1.8 version
24
+ FasterCSV.generate do |csv|
25
+ csv << columns.collect{|c| c.to_a.first }
26
+ self.each do |result|
27
+ csv << columns.collect{|c| c.to_a.last }.collect{|c| result.send(c) }
28
+ end
15
29
  end
30
+
16
31
  end
17
32
 
18
33
  end
19
34
 
35
+ # for backwards compatability
36
+ # this method gets overritten by to_csv in 1.9 core so will only be used by ruby 1.8 apps
37
+ # TODO: remove Array.to_csv method when ruby 1.8 no longer needed
38
+ def to_csv(columns)
39
+ to_csv_with_columns(columns)
40
+ end
41
+
20
42
 
21
43
  def select_with_index(&block)
22
44
  selected = []
@@ -67,4 +89,4 @@ class Array
67
89
  end
68
90
  end
69
91
 
70
- end
92
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class Hash
2
3
 
3
4
  def symbolize_keys!
@@ -42,4 +43,15 @@ class Hash
42
43
  conds
43
44
  end
44
45
 
45
- end
46
+
47
+ #
48
+ # The way bindings work in ruby 1.9+ has changed so add this to work for both
49
+ # 1.8 and 1.9
50
+ #
51
+ def get_binding
52
+ return binding
53
+ end
54
+
55
+
56
+
57
+ end
@@ -1,5 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class NilClass #:nodoc:
2
3
  def blank?
3
4
  true
4
5
  end
5
- end
6
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class Object
2
3
 
3
4
  # just cause its so damm handy
@@ -5,4 +6,4 @@ class Object
5
6
  self.respond_to?(:to_ary) ? self.to_ary : [self]
6
7
  end
7
8
 
8
- end
9
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class String
2
3
 
3
4
  def remove_whitespace
@@ -21,15 +22,53 @@ class String
21
22
 
22
23
  def to_active_record_condition
23
24
  "%#{self.trim.gsub(/[[:space:]]+/, '%')}%"
24
- end
25
25
 
26
- def blank?
27
- self !~ /\S/
26
+ end
28
27
 
28
+ # need to force encoding for ruby 1.9 otherwise regex fails when comparing string of 2 different encodings
29
+ # TODO : String.blank? - do we need to do force encoding? is UTF-8 a good default?
30
+ def blank?
31
+ begin
32
+ if Gem::Version.new(''+RUBY_VERSION) >= Gem::Version.new("1.9.0") # only for ruby 1.9+
33
+ self.dup.force_encoding("UTF-8") !~ /\S/
34
+ else
35
+ self !~ /\S/
36
+ end
29
37
  rescue ArgumentError => e
30
38
  if e.message =~ /^(invalid\ byte\ sequence|incompatible\ character\ encodings)/
31
39
  empty?
32
40
  else
33
41
  raise e
34
- end
42
+ end
43
+ end
44
+ end
45
+
46
+ # converts the encoding to UTF-8 regardless of current encoding
47
+ def to_utf8
48
+ text = self.dup
49
+ # shiny new ruby 1.9 way
50
+ return text if text.encoding.name == "UTF-8" && text.valid_encoding? # already utf-8 yay!
51
+
52
+ encodings = [
53
+ "UTF-8",
54
+ "ISO-8859-1",
55
+ "UTF-16BE",
56
+ "UTF-16LE",
57
+ "UTF-32BE",
58
+ "UTF-32LE",
59
+ "Windows-1251",
60
+ "UTF-7",
61
+ "US-ASCII",
62
+ "ASCII-8BIT"
63
+ ]
64
+
65
+ encodings.each do |encoding|
66
+ if (text.force_encoding(encoding).valid_encoding? rescue false)
67
+ return text.force_encoding(encoding).encode("UTF-8")
68
+ end
69
+ end
70
+
71
+ # ok so we are out of suggestions. Just return the string and hope that its ok
72
+ text
73
+
35
74
  end
36
75
 
37
- end
76
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
3
 
3
4
  describe Hash do
@@ -40,4 +41,4 @@ describe Hash do
40
41
  end
41
42
  end
42
43
 
43
- end
44
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  RAILS_ENV = 'test'
2
3
  ENV['RAILS_ENV'] = 'test'
3
4
  RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
metadata CHANGED
@@ -1,135 +1,61 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: itrigga-core_ext
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 3
9
- - 0
10
- segments_generated: true
11
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
12
6
  platform: ruby
13
- authors:
7
+ authors:
14
8
  - Al Davidson
15
9
  - Anson Kelly
16
10
  autorequire:
17
11
  bindir: bin
18
12
  cert_chain: []
19
-
20
- date: 2011-11-17 00:00:00 +00:00
21
- default_executable:
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
24
- prerelease: false
25
- name: rspec
26
- version_requirements: &id001 !ruby/object:Gem::Requirement
27
- none: false
28
- requirements:
29
- - - "="
30
- - !ruby/object:Gem::Version
31
- hash: 27
32
- segments:
33
- - 1
34
- - 3
35
- - 0
36
- segments_generated: true
37
- version: 1.3.0
38
- requirement: *id001
39
- type: :development
40
- - !ruby/object:Gem::Dependency
41
- prerelease: false
42
- name: rspec-rails
43
- version_requirements: &id002 !ruby/object:Gem::Requirement
13
+ date: 2011-12-07 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: fastercsv
17
+ requirement: &76326950 !ruby/object:Gem::Requirement
44
18
  none: false
45
- requirements:
46
- - - "="
47
- - !ruby/object:Gem::Version
48
- hash: 31
49
- segments:
50
- - 1
51
- - 3
52
- - 2
53
- segments_generated: true
54
- version: 1.3.2
55
- requirement: *id002
56
- type: :development
57
- - !ruby/object:Gem::Dependency
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.5.4
23
+ type: :runtime
58
24
  prerelease: false
25
+ version_requirements: *76326950
26
+ - !ruby/object:Gem::Dependency
59
27
  name: bundler
60
- version_requirements: &id003 !ruby/object:Gem::Requirement
28
+ requirement: &76326710 !ruby/object:Gem::Requirement
61
29
  none: false
62
- requirements:
30
+ requirements:
63
31
  - - ~>
64
- - !ruby/object:Gem::Version
65
- hash: 23
66
- segments:
67
- - 1
68
- - 0
69
- - 0
70
- segments_generated: true
32
+ - !ruby/object:Gem::Version
71
33
  version: 1.0.0
72
- requirement: *id003
73
- type: :development
74
- - !ruby/object:Gem::Dependency
34
+ type: :runtime
75
35
  prerelease: false
36
+ version_requirements: *76326710
37
+ - !ruby/object:Gem::Dependency
76
38
  name: jeweler
77
- version_requirements: &id004 !ruby/object:Gem::Requirement
39
+ requirement: &76326470 !ruby/object:Gem::Requirement
78
40
  none: false
79
- requirements:
41
+ requirements:
80
42
  - - ~>
81
- - !ruby/object:Gem::Version
82
- hash: 7
83
- segments:
84
- - 1
85
- - 6
86
- - 4
87
- segments_generated: true
43
+ - !ruby/object:Gem::Version
88
44
  version: 1.6.4
89
- requirement: *id004
90
45
  type: :development
91
- - !ruby/object:Gem::Dependency
92
46
  prerelease: false
93
- name: rcov
94
- version_requirements: &id005 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- segments_generated: true
103
- version: "0"
104
- requirement: *id005
105
- type: :development
106
- - !ruby/object:Gem::Dependency
107
- prerelease: false
108
- name: fastercsv
109
- version_requirements: &id006 !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 11
115
- segments:
116
- - 1
117
- - 5
118
- - 4
119
- segments_generated: true
120
- version: 1.5.4
121
- requirement: *id006
122
- type: :development
123
- description: "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n Array:\n - to_csv (requires FasterCSV gem)\n - select_with_index\n - to_auto_complete_list\n - active_record_type_condition_rendering\n "
47
+ version_requirements: *76326470
48
+ description: ! "Adds methods for \n Hash: \n - symbolize_keys\n - recursive_symbolize_keys\n
49
+ \ Array:\n - to_csv (requires FasterCSV gem if ruby 1.8)\n - select_with_index\n
50
+ \ - to_auto_complete_list\n - active_record_type_condition_rendering\n "
124
51
  email: aldavidson@itrigga.com
125
52
  executables: []
126
-
127
53
  extensions: []
128
-
129
- extra_rdoc_files:
54
+ extra_rdoc_files:
130
55
  - LICENSE.txt
131
56
  - README.rdoc
132
- files:
57
+ files:
58
+ - .rvmrc
133
59
  - Gemfile
134
60
  - Gemfile.lock
135
61
  - LICENSE.txt
@@ -149,43 +75,34 @@ files:
149
75
  - spec/hash_spec.rb
150
76
  - spec/spec.opts
151
77
  - spec/spec_helper.rb
152
- has_rdoc: true
153
78
  homepage: http://gems.itrigga.com/trigga-core_ext
154
- licenses:
79
+ licenses:
155
80
  - MIT
156
81
  post_install_message:
157
82
  rdoc_options: []
158
-
159
- require_paths:
83
+ require_paths:
160
84
  - lib
161
85
  - lib/itrigga
162
86
  - lib/itrigga
163
- required_ruby_version: !ruby/object:Gem::Requirement
87
+ required_ruby_version: !ruby/object:Gem::Requirement
164
88
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 3
169
- segments:
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ segments:
170
94
  - 0
171
- segments_generated: true
172
- version: "0"
173
- required_rubygems_version: !ruby/object:Gem::Requirement
95
+ hash: -124005361
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
97
  none: false
175
- requirements:
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- hash: 3
179
- segments:
180
- - 0
181
- segments_generated: true
182
- version: "0"
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
183
102
  requirements: []
184
-
185
103
  rubyforge_project:
186
- rubygems_version: 1.3.7
104
+ rubygems_version: 1.8.10
187
105
  signing_key:
188
106
  specification_version: 3
189
107
  summary: extensions for core classes Hash, Array
190
108
  test_files: []
191
-