itrigga-core_ext 0.3.0 → 1.0.0

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