itrigga-core_ext 1.0.0 → 1.3.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/CHANGELOG.md +2 -0
- data/Gemfile +7 -1
- data/VERSION +1 -1
- data/itrigga-core_ext.gemspec +4 -3
- data/lib/itrigga/core_ext/hash.rb +17 -0
- data/lib/itrigga/core_ext/string.rb +8 -0
- data/spec/hash_spec.rb +6 -0
- data/spec/string_spec.rb +28 -0
- metadata +125 -49
- data/Gemfile.lock +0 -30
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
@@ -6,14 +6,20 @@ 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
|
gem "fastercsv", ">= 1.5.4"
|
9
|
-
gem "bundler", "
|
9
|
+
gem "bundler", ">= 1.0.0"
|
10
10
|
|
11
11
|
group :development do
|
12
|
+
gem "rspec", "1.3.0"
|
13
|
+
gem "rspec-rails", "1.3.2"
|
14
|
+
gem "bundler", ">= 1.0.0"
|
12
15
|
gem "jeweler", "~> 1.6.4"
|
13
16
|
end
|
14
17
|
|
15
18
|
group :test do
|
16
19
|
gem "rspec", "1.3.0"
|
17
20
|
gem "rspec-rails", "1.3.2"
|
21
|
+
gem "bundler", ">= 1.0.0"
|
22
|
+
gem "rcov", ">= 0"
|
23
|
+
gem "fastercsv", ">= 1.5.4"
|
18
24
|
gem 'test-unit', '1.2.3' # needed by rspec if using ruby 1.9.X
|
19
25
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0
|
data/itrigga-core_ext.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "itrigga-core_ext"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.3.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 = "
|
12
|
+
s.date = "2012-02-06"
|
13
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
14
|
s.email = "aldavidson@itrigga.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -36,7 +36,8 @@ Gem::Specification.new do |s|
|
|
36
36
|
"pkg/trigga-core_ext-0.1.0.gem",
|
37
37
|
"spec/hash_spec.rb",
|
38
38
|
"spec/spec.opts",
|
39
|
-
"spec/spec_helper.rb"
|
39
|
+
"spec/spec_helper.rb",
|
40
|
+
"spec/string_spec.rb"
|
40
41
|
]
|
41
42
|
s.homepage = "http://gems.itrigga.com/trigga-core_ext"
|
42
43
|
s.licenses = ["MIT"]
|
@@ -18,6 +18,13 @@ class Hash
|
|
18
18
|
|
19
19
|
end
|
20
20
|
|
21
|
+
def recursive_stringify_keys
|
22
|
+
inject({}) do |options, (key, value)|
|
23
|
+
options[key.to_s] = value.kind_of?(Hash) ? value.recursive_stringify_keys : value
|
24
|
+
options
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
21
28
|
|
22
29
|
# Allows you to convert a hash to an array suitable for use in an ActiveRecord finder conditions clause
|
23
30
|
#
|
@@ -44,6 +51,16 @@ class Hash
|
|
44
51
|
end
|
45
52
|
|
46
53
|
|
54
|
+
# lets you do :
|
55
|
+
# {:simian=>'chimp', :fish=>'trout', :rodent=>'vole'} - [:simian, :fish]
|
56
|
+
# => {:rodent=>'vole'}
|
57
|
+
def -( *args )
|
58
|
+
keys = *args.to_a.flatten
|
59
|
+
hash = self.clone
|
60
|
+
keys.each{ |k| hash.delete(k) }
|
61
|
+
hash
|
62
|
+
end
|
63
|
+
|
47
64
|
#
|
48
65
|
# The way bindings work in ruby 1.9+ has changed so add this to work for both
|
49
66
|
# 1.8 and 1.9
|
@@ -9,6 +9,14 @@ class String
|
|
9
9
|
!!(self =~ /^[-+]?[0-9]([0-9]*)?$/)
|
10
10
|
end
|
11
11
|
|
12
|
+
#
|
13
|
+
# How many words are in this string
|
14
|
+
# Includes duplicates
|
15
|
+
#
|
16
|
+
def word_count
|
17
|
+
self.to_utf8.scan(/(\w|-|')+/).size
|
18
|
+
end
|
19
|
+
|
12
20
|
#
|
13
21
|
# Removes starting, trailing whitespace and double spaces
|
14
22
|
#
|
data/spec/hash_spec.rb
CHANGED
data/spec/string_spec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe String do
|
5
|
+
|
6
|
+
describe "word_count" do
|
7
|
+
it "should return 2" do
|
8
|
+
"two words".word_count.should == 2
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should handle hypenated words" do
|
12
|
+
"one-way street".word_count.should == 2
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should handle possessive apostrophe" do
|
16
|
+
"this is max's ball".word_count.should == 4
|
17
|
+
end
|
18
|
+
|
19
|
+
context "when string is a different encoding" do
|
20
|
+
it "should not blow up" do
|
21
|
+
str = "two ¢words".force_encoding("ISO-8859-1")
|
22
|
+
str.valid_encoding?.should == true
|
23
|
+
str.word_count.should == 2
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
CHANGED
@@ -1,63 +1,132 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: itrigga-core_ext
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 1.3.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Al Davidson
|
9
14
|
- Anson Kelly
|
10
15
|
autorequire:
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
|
19
|
+
date: 2012-03-08 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
23
|
none: false
|
19
|
-
requirements:
|
20
|
-
- -
|
21
|
-
- !ruby/object:Gem::Version
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 11
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 5
|
31
|
+
- 4
|
22
32
|
version: 1.5.4
|
23
|
-
|
33
|
+
name: fastercsv
|
24
34
|
prerelease: false
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
35
|
+
type: :runtime
|
36
|
+
requirement: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
29
39
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 23
|
44
|
+
segments:
|
45
|
+
- 1
|
46
|
+
- 0
|
47
|
+
- 0
|
33
48
|
version: 1.0.0
|
49
|
+
name: bundler
|
50
|
+
prerelease: false
|
34
51
|
type: :runtime
|
52
|
+
requirement: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - "="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 27
|
60
|
+
segments:
|
61
|
+
- 1
|
62
|
+
- 3
|
63
|
+
- 0
|
64
|
+
version: 1.3.0
|
65
|
+
name: rspec
|
35
66
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
67
|
+
type: :development
|
68
|
+
requirement: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
40
71
|
none: false
|
41
|
-
requirements:
|
72
|
+
requirements:
|
73
|
+
- - "="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 31
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 3
|
79
|
+
- 2
|
80
|
+
version: 1.3.2
|
81
|
+
name: rspec-rails
|
82
|
+
prerelease: false
|
83
|
+
type: :development
|
84
|
+
requirement: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
hash: 23
|
92
|
+
segments:
|
93
|
+
- 1
|
94
|
+
- 0
|
95
|
+
- 0
|
96
|
+
version: 1.0.0
|
97
|
+
name: bundler
|
98
|
+
prerelease: false
|
99
|
+
type: :development
|
100
|
+
requirement: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
42
105
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 7
|
108
|
+
segments:
|
109
|
+
- 1
|
110
|
+
- 6
|
111
|
+
- 4
|
44
112
|
version: 1.6.4
|
45
|
-
|
113
|
+
name: jeweler
|
46
114
|
prerelease: false
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
\ - to_auto_complete_list\n - active_record_type_condition_rendering\n "
|
115
|
+
type: :development
|
116
|
+
requirement: *id006
|
117
|
+
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 "
|
51
118
|
email: aldavidson@itrigga.com
|
52
119
|
executables: []
|
120
|
+
|
53
121
|
extensions: []
|
54
|
-
|
122
|
+
|
123
|
+
extra_rdoc_files:
|
55
124
|
- LICENSE.txt
|
56
125
|
- README.rdoc
|
57
|
-
files:
|
126
|
+
files:
|
58
127
|
- .rvmrc
|
128
|
+
- CHANGELOG.md
|
59
129
|
- Gemfile
|
60
|
-
- Gemfile.lock
|
61
130
|
- LICENSE.txt
|
62
131
|
- README.rdoc
|
63
132
|
- Rakefile
|
@@ -75,34 +144,41 @@ files:
|
|
75
144
|
- spec/hash_spec.rb
|
76
145
|
- spec/spec.opts
|
77
146
|
- spec/spec_helper.rb
|
147
|
+
- spec/string_spec.rb
|
78
148
|
homepage: http://gems.itrigga.com/trigga-core_ext
|
79
|
-
licenses:
|
149
|
+
licenses:
|
80
150
|
- MIT
|
81
151
|
post_install_message:
|
82
152
|
rdoc_options: []
|
83
|
-
|
153
|
+
|
154
|
+
require_paths:
|
84
155
|
- lib
|
85
156
|
- lib/itrigga
|
86
157
|
- lib/itrigga
|
87
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
159
|
none: false
|
89
|
-
requirements:
|
90
|
-
- -
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
|
93
|
-
segments:
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
hash: 3
|
164
|
+
segments:
|
94
165
|
- 0
|
95
|
-
|
96
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
version: "0"
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
168
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
hash: 3
|
173
|
+
segments:
|
174
|
+
- 0
|
175
|
+
version: "0"
|
102
176
|
requirements: []
|
177
|
+
|
103
178
|
rubyforge_project:
|
104
|
-
rubygems_version: 1.8.
|
179
|
+
rubygems_version: 1.8.17
|
105
180
|
signing_key:
|
106
181
|
specification_version: 3
|
107
182
|
summary: extensions for core classes Hash, Array
|
108
183
|
test_files: []
|
184
|
+
|
data/Gemfile.lock
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
fastercsv (1.5.4)
|
5
|
-
git (1.2.5)
|
6
|
-
hoe (2.12.4)
|
7
|
-
rake (~> 0.8)
|
8
|
-
jeweler (1.6.4)
|
9
|
-
bundler (~> 1.0)
|
10
|
-
git (>= 1.2.5)
|
11
|
-
rake
|
12
|
-
rack (1.1.0)
|
13
|
-
rake (0.8.7)
|
14
|
-
rspec (1.3.0)
|
15
|
-
rspec-rails (1.3.2)
|
16
|
-
rack (>= 1.0.0)
|
17
|
-
rspec (>= 1.3.0)
|
18
|
-
test-unit (1.2.3)
|
19
|
-
hoe (>= 1.5.1)
|
20
|
-
|
21
|
-
PLATFORMS
|
22
|
-
ruby
|
23
|
-
|
24
|
-
DEPENDENCIES
|
25
|
-
bundler (~> 1.0.0)
|
26
|
-
fastercsv (>= 1.5.4)
|
27
|
-
jeweler (~> 1.6.4)
|
28
|
-
rspec (= 1.3.0)
|
29
|
-
rspec-rails (= 1.3.2)
|
30
|
-
test-unit (= 1.2.3)
|