itrigga-core_ext 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,9 +6,18 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
+ gem "rspec", "1.3.0"
10
+ gem "rspec-rails", "1.3.2"
9
11
  gem "bundler", "~> 1.0.0"
10
12
  gem "jeweler", "~> 1.6.4"
11
13
  gem "rcov", ">= 0"
12
- gem "rspec", ">= 0"
14
+ gem "fastercsv", ">= 1.5.4"
15
+ end
16
+
17
+ group :test do
18
+ gem "rspec", "1.3.0"
19
+ gem "rspec-rails", "1.3.2"
20
+ gem "bundler", "~> 1.0.0"
21
+ gem "rcov", ">= 0"
13
22
  gem "fastercsv", ">= 1.5.4"
14
23
  end
@@ -1,23 +1,19 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.1.2)
5
4
  fastercsv (1.5.4)
6
5
  git (1.2.5)
7
6
  jeweler (1.6.4)
8
7
  bundler (~> 1.0)
9
8
  git (>= 1.2.5)
10
9
  rake
10
+ rack (1.1.0)
11
11
  rake (0.8.7)
12
12
  rcov (0.9.9)
13
- rspec (2.5.0)
14
- rspec-core (~> 2.5.0)
15
- rspec-expectations (~> 2.5.0)
16
- rspec-mocks (~> 2.5.0)
17
- rspec-core (2.5.1)
18
- rspec-expectations (2.5.0)
19
- diff-lcs (~> 1.1.2)
20
- rspec-mocks (2.5.0)
13
+ rspec (1.3.0)
14
+ rspec-rails (1.3.2)
15
+ rack (>= 1.0.0)
16
+ rspec (>= 1.3.0)
21
17
 
22
18
  PLATFORMS
23
19
  ruby
@@ -27,4 +23,5 @@ DEPENDENCIES
27
23
  fastercsv (>= 1.5.4)
28
24
  jeweler (~> 1.6.4)
29
25
  rcov
30
- rspec
26
+ rspec (= 1.3.0)
27
+ rspec-rails (= 1.3.2)
data/Rakefile CHANGED
@@ -35,29 +35,23 @@ Jeweler::Tasks.new do |gem|
35
35
  end
36
36
  Jeweler::RubygemsDotOrgTasks.new
37
37
 
38
- require 'rake/testtask'
39
- Rake::TestTask.new(:test) do |test|
40
- test.libs << 'lib' << 'test'
41
- test.pattern = 'test/**/test_*.rb'
42
- test.verbose = true
43
- end
38
+ require 'spec/version'
39
+ require 'spec/rake/spectask'
40
+ require 'spec/ruby'
44
41
 
45
- require 'rcov/rcovtask'
46
- Rcov::RcovTask.new do |test|
47
- test.libs << 'test'
48
- test.pattern = 'test/**/test_*.rb'
49
- test.verbose = true
50
- test.rcov_opts << '--exclude "gems/*"'
42
+ Spec::Rake::SpecTask.new(:spec) do |spec|
43
+ spec.spec_files = FileList['spec/**/*_spec.rb']
44
+ spec.spec_opts = ['--options', 'spec/spec.opts']
51
45
  end
52
46
 
53
- task :default => :test
54
-
55
- require 'rake/rdoctask'
56
- Rake::RDocTask.new do |rdoc|
57
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+ task :default => :spec
58
48
 
59
- rdoc.rdoc_dir = 'rdoc'
60
- rdoc.title = "itrigga-core_ext #{version}"
61
- rdoc.rdoc_files.include('README*')
62
- rdoc.rdoc_files.include('lib/**/*.rb')
49
+ desc "Run all specs with rcov"
50
+ Spec::Rake::SpecTask.new(:rcov) do |t|
51
+ t.spec_files = FileList['spec/**/*_spec.rb']
52
+ t.spec_opts = ['--options', 'spec/spec.opts']
53
+ t.rcov = true
54
+ t.rcov_dir = 'coverage'
55
+ t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
56
+ t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
63
57
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{itrigga-core_ext}
8
- s.version = "0.2.0"
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 = ["Al Davidson", "Anson Kelly"]
12
- s.date = %q{2011-08-01}
12
+ s.date = %q{2011-10-07}
13
13
  s.description = %q{Adds methods for
14
14
  Hash:
15
15
  - symbolize_keys
@@ -36,12 +36,14 @@ Gem::Specification.new do |s|
36
36
  "lib/itrigga/core_ext.rb",
37
37
  "lib/itrigga/core_ext/array.rb",
38
38
  "lib/itrigga/core_ext/hash.rb",
39
+ "lib/itrigga/core_ext/nil.rb",
39
40
  "lib/itrigga/core_ext/string.rb",
40
41
  "pkg/core_ext-0.1.0.gem",
41
42
  "pkg/itrigga-core_ext-0.1.0.gem",
42
43
  "pkg/trigga-core_ext-0.1.0.gem",
43
- "test/helper.rb",
44
- "test/test_core_ext.rb"
44
+ "spec/hash_spec.rb",
45
+ "spec/spec.opts",
46
+ "spec/spec_helper.rb"
45
47
  ]
46
48
  s.homepage = %q{http://gems.itrigga.com/trigga-core_ext}
47
49
  s.licenses = ["MIT"]
@@ -54,23 +56,26 @@ Gem::Specification.new do |s|
54
56
  s.specification_version = 3
55
57
 
56
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
+ s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
60
+ s.add_development_dependency(%q<rspec-rails>, ["= 1.3.2"])
57
61
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
58
62
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
59
63
  s.add_development_dependency(%q<rcov>, [">= 0"])
60
- s.add_development_dependency(%q<rspec>, [">= 0"])
61
64
  s.add_development_dependency(%q<fastercsv>, [">= 1.5.4"])
62
65
  else
66
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
67
+ s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
63
68
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
64
69
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
65
70
  s.add_dependency(%q<rcov>, [">= 0"])
66
- s.add_dependency(%q<rspec>, [">= 0"])
67
71
  s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
68
72
  end
69
73
  else
74
+ s.add_dependency(%q<rspec>, ["= 1.3.0"])
75
+ s.add_dependency(%q<rspec-rails>, ["= 1.3.2"])
70
76
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
77
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
72
78
  s.add_dependency(%q<rcov>, [">= 0"])
73
- s.add_dependency(%q<rspec>, [">= 0"])
74
79
  s.add_dependency(%q<fastercsv>, [">= 1.5.4"])
75
80
  end
76
81
  end
@@ -17,4 +17,29 @@ class Hash
17
17
 
18
18
  end
19
19
 
20
+
21
+ # Allows you to convert a hash to an array suitable for use in an ActiveRecord finder conditions clause
22
+ #
23
+ # @allowed_keys optional an array of param names to include - if given, any keys NOT in this array will be excluded
24
+ # @column_aliases optional a hash of param name => column name mappings, for the case where the param name needs mapping to an alternative column name
25
+ # e.g.
26
+ # {:fish=>'trout', :cheese=>'gruyere', :rodent=>'vole'}.to_conditions( [:fish, :cheese], {:cheese=>:fromage})
27
+ # => ["(fish = ?) AND (fromage = ?)", 'trout', 'gruyere']
28
+ def to_conditions( allowed_keys, column_aliases={} )
29
+ conds = [ [] ]
30
+ allowed_keys ||= keys
31
+ allowed_keys.to_a.each do |k|
32
+
33
+ this_key = ( keys.include?(k.to_sym) ? k.to_sym : (keys.include?(k.to_s) ? k.to_s : nil))
34
+ next unless this_key
35
+ next if self[this_key].blank?
36
+
37
+ conds[0] << "#{column_aliases[this_key.to_sym] ? column_aliases[this_key.to_sym] : this_key.to_s} = ?"
38
+ conds << self[this_key]
39
+ end
40
+
41
+ conds[0] = conds[0].map{ |c| "(#{c})" }.join( " AND " )
42
+ conds
43
+ end
44
+
20
45
  end
@@ -0,0 +1,43 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Hash do
4
+
5
+ describe "Hash.to_conditions" do
6
+ before(:each) do
7
+ @my_hash = { :blart=>'flange', :cheese=>'provolone', :ham=>'mortadella' }
8
+ end
9
+
10
+ it "should return an array" do
11
+ @my_hash.to_conditions(:blart).class.should == Array
12
+ end
13
+
14
+ describe "for each key in the hash" do
15
+ describe "when it's in the given allowed_keys" do
16
+
17
+ it "should appear in the first element" do
18
+ @my_hash.to_conditions( :blart )[0].should =~ /blart/
19
+ end
20
+
21
+ it "should append the value to the array" do
22
+ @my_hash.to_conditions(:blart).should include('flange')
23
+ end
24
+
25
+ end
26
+
27
+ describe "when it's NOT in the given allowed_keys" do
28
+ it "should not appear in the first element" do
29
+ @my_hash.to_conditions( :donkey )[0].should_not =~ /donkey/
30
+ end
31
+ end
32
+ end
33
+
34
+ context "when column aliases are given" do
35
+ describe "for each given alias" do
36
+ it "should map the param called (key) to a returned column called (alias[key])" do
37
+ @my_hash.to_conditions(:blart, :blart=>'aliased_blart')[0].should =~ /aliased_blart\s*=\s*?/
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ end
@@ -0,0 +1,5 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
5
+ --backtrace
@@ -0,0 +1,12 @@
1
+ RAILS_ENV = 'test'
2
+ ENV['RAILS_ENV'] = 'test'
3
+ RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
+
5
+ $LOAD_PATH.unshift(File.join(RAILS_ROOT, 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+
8
+ require 'itrigga/core_ext'
9
+
10
+ # Requires supporting files with custom matchers and macros, etc,
11
+ # in ./support/ and its subdirectories.
12
+ Dir["RAILS_ROOT}/support/**/*.rb"].each {|f| require f}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itrigga-core_ext
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Al Davidson
@@ -16,60 +16,77 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-10 00:00:00 +01:00
19
+ date: 2011-10-07 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
- type: :development
24
23
  prerelease: false
25
- name: bundler
24
+ name: rspec
26
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
27
26
  none: false
28
27
  requirements:
29
- - - ~>
28
+ - - "="
30
29
  - !ruby/object:Gem::Version
31
- hash: 23
30
+ hash: 27
32
31
  segments:
33
32
  - 1
33
+ - 3
34
34
  - 0
35
- - 0
36
- version: 1.0.0
35
+ version: 1.3.0
37
36
  requirement: *id001
38
- - !ruby/object:Gem::Dependency
39
37
  type: :development
38
+ - !ruby/object:Gem::Dependency
40
39
  prerelease: false
41
- name: jeweler
40
+ name: rspec-rails
42
41
  version_requirements: &id002 !ruby/object:Gem::Requirement
43
42
  none: false
44
43
  requirements:
45
- - - ~>
44
+ - - "="
46
45
  - !ruby/object:Gem::Version
47
- hash: 7
46
+ hash: 31
48
47
  segments:
49
48
  - 1
50
- - 6
51
- - 4
52
- version: 1.6.4
49
+ - 3
50
+ - 2
51
+ version: 1.3.2
53
52
  requirement: *id002
54
- - !ruby/object:Gem::Dependency
55
53
  type: :development
54
+ - !ruby/object:Gem::Dependency
56
55
  prerelease: false
57
- name: rcov
56
+ name: bundler
58
57
  version_requirements: &id003 !ruby/object:Gem::Requirement
59
58
  none: false
60
59
  requirements:
61
- - - ">="
60
+ - - ~>
62
61
  - !ruby/object:Gem::Version
63
- hash: 3
62
+ hash: 23
64
63
  segments:
64
+ - 1
65
65
  - 0
66
- version: "0"
66
+ - 0
67
+ version: 1.0.0
67
68
  requirement: *id003
68
- - !ruby/object:Gem::Dependency
69
69
  type: :development
70
+ - !ruby/object:Gem::Dependency
70
71
  prerelease: false
71
- name: rspec
72
+ name: jeweler
72
73
  version_requirements: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ hash: 7
79
+ segments:
80
+ - 1
81
+ - 6
82
+ - 4
83
+ version: 1.6.4
84
+ requirement: *id004
85
+ type: :development
86
+ - !ruby/object:Gem::Dependency
87
+ prerelease: false
88
+ name: rcov
89
+ version_requirements: &id005 !ruby/object:Gem::Requirement
73
90
  none: false
74
91
  requirements:
75
92
  - - ">="
@@ -78,12 +95,12 @@ dependencies:
78
95
  segments:
79
96
  - 0
80
97
  version: "0"
81
- requirement: *id004
82
- - !ruby/object:Gem::Dependency
98
+ requirement: *id005
83
99
  type: :development
100
+ - !ruby/object:Gem::Dependency
84
101
  prerelease: false
85
102
  name: fastercsv
86
- version_requirements: &id005 !ruby/object:Gem::Requirement
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
87
104
  none: false
88
105
  requirements:
89
106
  - - ">="
@@ -94,7 +111,8 @@ dependencies:
94
111
  - 5
95
112
  - 4
96
113
  version: 1.5.4
97
- requirement: *id005
114
+ requirement: *id006
115
+ type: :development
98
116
  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 "
99
117
  email: aldavidson@itrigga.com
100
118
  executables: []
@@ -120,8 +138,9 @@ files:
120
138
  - pkg/core_ext-0.1.0.gem
121
139
  - pkg/itrigga-core_ext-0.1.0.gem
122
140
  - pkg/trigga-core_ext-0.1.0.gem
123
- - test/helper.rb
124
- - test/test_core_ext.rb
141
+ - spec/hash_spec.rb
142
+ - spec/spec.opts
143
+ - spec/spec_helper.rb
125
144
  has_rdoc: true
126
145
  homepage: http://gems.itrigga.com/trigga-core_ext
127
146
  licenses:
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'test/unit'
11
- require 'shoulda'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'core_ext'
16
-
17
- class Test::Unit::TestCase
18
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestCoreExt < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end