itrigga-core_ext 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/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