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 +10 -1
- data/Gemfile.lock +7 -10
- data/Rakefile +15 -21
- data/VERSION +1 -1
- data/itrigga-core_ext.gemspec +12 -7
- data/lib/itrigga/core_ext/hash.rb +25 -0
- data/spec/hash_spec.rb +43 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +12 -0
- metadata +49 -30
- data/test/helper.rb +0 -18
- data/test/test_core_ext.rb +0 -7
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 "
|
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
|
data/Gemfile.lock
CHANGED
@@ -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 (
|
14
|
-
|
15
|
-
|
16
|
-
rspec
|
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 '
|
39
|
-
|
40
|
-
|
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
|
-
|
46
|
-
|
47
|
-
|
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 => :
|
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
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
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
|
+
0.2.2
|
data/itrigga-core_ext.gemspec
CHANGED
@@ -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.
|
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-
|
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
|
-
"
|
44
|
-
"
|
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
|
data/spec/hash_spec.rb
ADDED
@@ -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
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -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:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
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-
|
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:
|
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:
|
30
|
+
hash: 27
|
32
31
|
segments:
|
33
32
|
- 1
|
33
|
+
- 3
|
34
34
|
- 0
|
35
|
-
|
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:
|
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:
|
46
|
+
hash: 31
|
48
47
|
segments:
|
49
48
|
- 1
|
50
|
-
-
|
51
|
-
-
|
52
|
-
version: 1.
|
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:
|
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:
|
62
|
+
hash: 23
|
64
63
|
segments:
|
64
|
+
- 1
|
65
65
|
- 0
|
66
|
-
|
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:
|
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: *
|
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: &
|
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: *
|
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
|
-
-
|
124
|
-
-
|
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:
|
data/test/helper.rb
DELETED
@@ -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
|