gem_bootstrap 0.1.3 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Rakefile +0 -4
- data/gem_bootstrap.gemspec +14 -11
- data/lib/gem_bootstrap/cli.rb +4 -1
- data/lib/gem_bootstrap/version.rb +1 -1
- data/lib/gem_bootstrap.rb +1 -1
- data/templates/CHANGELOGS.md +1 -1
- data/templates/Guardfile +2 -7
- data/templates/dot_rubocop.yml +0 -10
- data/templates/lib/newgem/cli.rb +4 -1
- data/templates/lib/newgem/version.rb +1 -1
- data/templates/lib/newgem.rb +0 -1
- data/templates/newgem.gemspec.tt +12 -11
- metadata +38 -27
- data/lib/gem_bootstrap/core_ext/hash/keys.rb +0 -54
- data/lib/gem_bootstrap/core_ext/object/blank.rb +0 -105
- data/templates/lib/newgem/core_ext/hash/keys.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af9902ec8aa202d31d354737201107316976423c
|
4
|
+
data.tar.gz: db14948b41bb9dc7c05cd7ebcc4f9de399b0d635
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddeafa22174dd04b1e069bd6b5bb78f09a0e56031a1760a989cdd29f7227c283e1fd38efc465be8fe79d7c7d4833a28d0f625b0ce15658522e12d5859f4c8c20
|
7
|
+
data.tar.gz: dd5a30bdab6a1d9d476db6012986cc05883c4cf2030a77b3b917fe962e88826c23e3df2b3af37483afea80a8ba3e536b9c49899e3ea659a4ec94af18e90cdf8f
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rake/testtask"
|
3
3
|
project_name = "gem_bootstrap"
|
4
|
-
|
5
4
|
Rake::TestTask.new do |t|
|
6
5
|
t.libs << "lib/#{project_name}"
|
7
6
|
t.test_files = FileList["test/lib/#{project_name}/test_*.rb"]
|
8
7
|
t.verbose = true
|
9
8
|
end
|
10
|
-
|
11
9
|
task default: [:test, :rubocop]
|
12
10
|
|
13
11
|
task :pry do
|
@@ -23,8 +21,6 @@ require "rubocop/rake_task"
|
|
23
21
|
desc "Run RuboCop on the lib directory"
|
24
22
|
RuboCop::RakeTask.new(:rubocop) do |task|
|
25
23
|
task.patterns = ["lib/**/*.rb"]
|
26
|
-
# only show the files with failures
|
27
24
|
task.formatters = ["files"]
|
28
|
-
# don't abort rake on failure
|
29
25
|
task.fail_on_error = false
|
30
26
|
end
|
data/gem_bootstrap.gemspec
CHANGED
@@ -25,17 +25,20 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
26
26
|
spec.test_files = Dir.glob("test/**/*")
|
27
27
|
spec.require_paths = ["lib"]
|
28
|
-
|
29
|
-
spec.add_runtime_dependency "
|
30
|
-
spec.
|
31
|
-
spec.
|
32
|
-
|
33
|
-
spec.add_development_dependency "
|
28
|
+
|
29
|
+
spec.add_runtime_dependency "thor", "~> 0.19.1"
|
30
|
+
spec.add_runtime_dependency "grit", "~> 2.5.0"
|
31
|
+
spec.add_runtime_dependency "agile_utils", "~> 0.2.0"
|
32
|
+
|
33
|
+
spec.add_development_dependency "awesome_print", "~> 1.2.0"
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.6.2"
|
35
|
+
spec.add_development_dependency "gem-ctags", "~> 1.0.6"
|
36
|
+
spec.add_development_dependency "minitest", "~> 5.4.0"
|
34
37
|
spec.add_development_dependency "minitest-spec-context", "~> 0.0.3"
|
35
|
-
spec.add_development_dependency "guard", "~> 2.6"
|
36
|
-
spec.add_development_dependency "guard-minitest", "~> 2.
|
37
|
-
spec.add_development_dependency "pry", "~> 0.
|
38
|
-
spec.add_development_dependency "rake", "~> 10.3"
|
39
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
38
|
+
spec.add_development_dependency "guard", "~> 2.6.1"
|
39
|
+
spec.add_development_dependency "guard-minitest", "~> 2.3.1"
|
40
|
+
spec.add_development_dependency "pry", "~> 0.10.0"
|
41
|
+
spec.add_development_dependency "rake", "~> 10.3.2"
|
42
|
+
spec.add_development_dependency "rubocop", "~> 0.24.1"
|
40
43
|
spec.add_development_dependency "yard", "~> 0.8.7"
|
41
44
|
end
|
data/lib/gem_bootstrap/cli.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require "thor"
|
2
|
+
require "agile_utils"
|
2
3
|
require_relative "./misc_utils"
|
3
4
|
require_relative "./git_utils"
|
4
5
|
module GemBootstrap
|
5
6
|
class CLI < Thor::Group
|
7
|
+
using AgileUtils::HashExt
|
8
|
+
using AgileUtils::BlankExt
|
6
9
|
include Thor::Actions
|
10
|
+
|
7
11
|
argument :name
|
8
12
|
class_option :github_id,
|
9
13
|
aliases: "-g",
|
@@ -38,7 +42,6 @@ module GemBootstrap
|
|
38
42
|
template "../../templates/lib/newgem/logger.rb", "#{name}/lib/#{name}/logger.rb"
|
39
43
|
template "../../templates/lib/newgem/cli.rb", "#{name}/lib/#{name}/cli.rb"
|
40
44
|
template "../../templates/lib/newgem/newgem.rb", "#{name}/lib/#{name}/#{name}.rb"
|
41
|
-
template "../../templates/lib/newgem/core_ext/hash/keys.rb", "#{name}/lib/#{name}/core_ext/hash/keys.rb"
|
42
45
|
template "../../templates/test/test_helper.rb", "#{name}/test/test_helper.rb"
|
43
46
|
template "../../templates/test/lib/newgem/test_newgem.rb", "#{name}/test/lib/#{name}/test_#{name}.rb"
|
44
47
|
end
|
data/lib/gem_bootstrap.rb
CHANGED
data/templates/CHANGELOGS.md
CHANGED
data/templates/Guardfile
CHANGED
@@ -3,11 +3,6 @@
|
|
3
3
|
guard 'minitest' do
|
4
4
|
# with Minitest::Unit
|
5
5
|
watch(%r|^test/(.*)\/?test_(.*)\.rb|)
|
6
|
-
watch(%r|^lib/(.*)([^/]+)\.rb|)
|
7
|
-
watch(%r|^test/test_helper\.rb|)
|
8
|
-
|
9
|
-
# with Minitest::Spec
|
10
|
-
# watch(%r|^spec/(.*)_spec\.rb|)
|
11
|
-
# watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
-
# watch(%r|^spec/spec_helper\.rb|) { "spec" }
|
6
|
+
watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
|
7
|
+
watch(%r|^test/test_helper\.rb|) { "test" }
|
13
8
|
end
|
data/templates/dot_rubocop.yml
CHANGED
@@ -28,12 +28,6 @@ CollectionMethods:
|
|
28
28
|
find: 'detect'
|
29
29
|
find_all: 'select'
|
30
30
|
|
31
|
-
# Do not force public/protected/private keyword to be indented at the same
|
32
|
-
# level as the def keyword. My personal preference is to outdent these keywords
|
33
|
-
# because I think when scanning code it makes it easier to identify the
|
34
|
-
# sections of code and visually separate them. When the keyword is at the same
|
35
|
-
# level I think it sort of blends in with the def keywords and makes it harder
|
36
|
-
# to scan the code and see where the sections are.
|
37
31
|
AccessModifierIndentation:
|
38
32
|
Enabled: false
|
39
33
|
|
@@ -61,10 +55,6 @@ DotPosition:
|
|
61
55
|
Encoding:
|
62
56
|
Enabled: false
|
63
57
|
|
64
|
-
# Enforce outdenting of access modifiers (i.e. public, private, protected)
|
65
|
-
AccessModifierIndentation:
|
66
|
-
EnforcedStyle: outdent
|
67
|
-
|
68
58
|
EmptyLinesAroundAccessModifier:
|
69
59
|
Enabled: true
|
70
60
|
|
data/templates/lib/newgem/cli.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
require 'agile_utils'
|
1
2
|
require 'thor'
|
2
3
|
module <%= MiscUtils.camel_case(name) %>
|
3
4
|
class CLI < Thor
|
5
|
+
using AgileUtils::HashExt
|
6
|
+
|
4
7
|
desc 'execute', 'Execute the main program'
|
5
8
|
method_option 'version',
|
6
9
|
aliases: '-v',
|
@@ -18,7 +21,7 @@ module <%= MiscUtils.camel_case(name) %>
|
|
18
21
|
desc 'usage', 'Display help screen'
|
19
22
|
def usage
|
20
23
|
puts <<-EOS
|
21
|
-
Add your sample usage here
|
24
|
+
TODO: Add your sample usage here
|
22
25
|
EOS
|
23
26
|
end
|
24
27
|
|
data/templates/lib/newgem.rb
CHANGED
data/templates/newgem.gemspec.tt
CHANGED
@@ -15,16 +15,17 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ['lib']
|
18
|
-
spec.add_runtime_dependency 'thor', '~> 0.19'
|
19
|
-
spec.
|
20
|
-
spec.add_development_dependency '
|
21
|
-
spec.add_development_dependency '
|
22
|
-
spec.add_development_dependency '
|
23
|
-
spec.add_development_dependency 'guard
|
24
|
-
spec.add_development_dependency 'minitest', '~>
|
18
|
+
spec.add_runtime_dependency 'thor', '~> 0.19.1'
|
19
|
+
spec.add_runtime_dependency 'agile_utils', '~> 0.2.0'
|
20
|
+
spec.add_development_dependency 'awesome_print', '~> 1.2.0'
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.6.2'
|
22
|
+
spec.add_development_dependency 'gem-ctags', '~> 1.0.6'
|
23
|
+
spec.add_development_dependency 'guard', '~> 2.6.1'
|
24
|
+
spec.add_development_dependency 'guard-minitest', '~> 2.3.1'
|
25
|
+
spec.add_development_dependency 'minitest', '~> 5.4.0'
|
25
26
|
spec.add_development_dependency 'minitest-spec-context', '~> 0.0.3'
|
26
|
-
spec.add_development_dependency 'pry', '~> 0.
|
27
|
-
spec.add_development_dependency 'rake', '~> 10.
|
28
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
29
|
-
spec.add_development_dependency 'yard', '~> 0.8'
|
27
|
+
spec.add_development_dependency 'pry', '~> 0.10.0'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.3.2'
|
29
|
+
spec.add_development_dependency 'rubocop', '~> 0.24.0'
|
30
|
+
spec.add_development_dependency 'yard', '~> 0.8.7'
|
30
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_bootstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burin Choomnuan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -16,84 +16,98 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.19.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.19.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: grit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.5.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.5.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: agile_utils
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: awesome_print
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
61
|
+
version: 1.2.0
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
68
|
+
version: 1.2.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: 1.6.2
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 1.6.2
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: gem-ctags
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: 1.0.6
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: 1.0.6
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: minitest
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: 5.4.0
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 5.4.0
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: minitest-spec-context
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,70 +128,70 @@ dependencies:
|
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
131
|
+
version: 2.6.1
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
138
|
+
version: 2.6.1
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: guard-minitest
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
145
|
+
version: 2.3.1
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
152
|
+
version: 2.3.1
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: pry
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
159
|
+
version: 0.10.0
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
166
|
+
version: 0.10.0
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: rake
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
173
|
+
version: 10.3.2
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
180
|
+
version: 10.3.2
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: rubocop
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
187
|
+
version: 0.24.1
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
194
|
+
version: 0.24.1
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: yard
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,8 +228,6 @@ files:
|
|
214
228
|
- gem_bootstrap.gemspec
|
215
229
|
- lib/gem_bootstrap.rb
|
216
230
|
- lib/gem_bootstrap/cli.rb
|
217
|
-
- lib/gem_bootstrap/core_ext/hash/keys.rb
|
218
|
-
- lib/gem_bootstrap/core_ext/object/blank.rb
|
219
231
|
- lib/gem_bootstrap/gem_bootstrap.rb
|
220
232
|
- lib/gem_bootstrap/git_utils.rb
|
221
233
|
- lib/gem_bootstrap/misc_utils.rb
|
@@ -233,7 +245,6 @@ files:
|
|
233
245
|
- templates/dot_yardopts
|
234
246
|
- templates/lib/newgem.rb
|
235
247
|
- templates/lib/newgem/cli.rb
|
236
|
-
- templates/lib/newgem/core_ext/hash/keys.rb
|
237
248
|
- templates/lib/newgem/logger.rb
|
238
249
|
- templates/lib/newgem/newgem.rb
|
239
250
|
- templates/lib/newgem/version.rb
|
@@ -1,54 +0,0 @@
|
|
1
|
-
class Hash
|
2
|
-
# from: activesupport/lib/active_support/core_ext/hash/keys.rb
|
3
|
-
#
|
4
|
-
# hash = { name: 'Rob', age: '28' }
|
5
|
-
# hash.transform_keys{ |key| key.to_s.upcase }
|
6
|
-
# => { "NAME" => "Rob", "AGE" => "28" }
|
7
|
-
def transform_keys
|
8
|
-
result = {}
|
9
|
-
each_key do |key|
|
10
|
-
result[yield(key)] = self[key]
|
11
|
-
end
|
12
|
-
result
|
13
|
-
end
|
14
|
-
|
15
|
-
def transform_keys!(&block)
|
16
|
-
keys.each do |key|
|
17
|
-
value = delete(key)
|
18
|
-
self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value
|
19
|
-
end
|
20
|
-
self
|
21
|
-
end
|
22
|
-
|
23
|
-
# hash = { 'name' => 'Rob', 'age' => '28' }
|
24
|
-
# hash.symbolize_keys
|
25
|
-
# => { name: "Rob", age: "28" }
|
26
|
-
def symbolize_keys
|
27
|
-
transform_keys { |key| key.to_sym rescue key }
|
28
|
-
end
|
29
|
-
|
30
|
-
# from: activesupport/lib/active_support/core_ext/hash/keys.rb, line 135
|
31
|
-
def symbolize_keys!
|
32
|
-
transform_keys! { |key| key.to_sym rescue key }
|
33
|
-
end
|
34
|
-
|
35
|
-
# Merges the caller into +other_hash+. For example,
|
36
|
-
#
|
37
|
-
# options = options.reverse_merge(size: 25, velocity: 10)
|
38
|
-
#
|
39
|
-
# is equivalent to
|
40
|
-
#
|
41
|
-
# options = { size: 25, velocity: 10 }.merge(options)
|
42
|
-
#
|
43
|
-
# This is particularly useful for initializing an options hash
|
44
|
-
# with default values.
|
45
|
-
def reverse_merge(other_hash)
|
46
|
-
other_hash.merge(self)
|
47
|
-
end
|
48
|
-
|
49
|
-
# Destructive +reverse_merge+.
|
50
|
-
def reverse_merge!(other_hash)
|
51
|
-
# right wins if there is no left
|
52
|
-
merge!(other_hash) { |_key, left, _right| left }
|
53
|
-
end
|
54
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# from: active_support/core_ext/object/blank.rb
|
3
|
-
class Object
|
4
|
-
# An object is blank if it's false, empty, or a whitespace string.
|
5
|
-
# For example, '', ' ', +nil+, [], and {} are all blank.
|
6
|
-
#
|
7
|
-
# This simplifies:
|
8
|
-
#
|
9
|
-
# if address.nil? || address.empty?
|
10
|
-
#
|
11
|
-
# ...to:
|
12
|
-
#
|
13
|
-
# if address.blank?
|
14
|
-
def blank?
|
15
|
-
respond_to?(:empty?) ? empty? : !self
|
16
|
-
end
|
17
|
-
|
18
|
-
# An object is present if it's not <tt>blank?</tt>.
|
19
|
-
def present?
|
20
|
-
!blank?
|
21
|
-
end
|
22
|
-
|
23
|
-
# Returns object if it's <tt>present?</tt> otherwise returns +nil+.
|
24
|
-
# <tt>object.presence</tt> is equivalent to <tt>object.present? ? object : nil</tt>.
|
25
|
-
#
|
26
|
-
# This is handy for any representation of objects where blank is the same
|
27
|
-
# as not present at all. For example, this simplifies a common check for
|
28
|
-
# HTTP POST/query parameters:
|
29
|
-
#
|
30
|
-
# state = params[:state] if params[:state].present?
|
31
|
-
# country = params[:country] if params[:country].present?
|
32
|
-
# region = state || country || 'US'
|
33
|
-
#
|
34
|
-
# ...becomes:
|
35
|
-
#
|
36
|
-
# region = params[:state].presence || params[:country].presence || 'US'
|
37
|
-
def presence
|
38
|
-
self if present?
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
class NilClass
|
43
|
-
# +nil+ is blank:
|
44
|
-
#
|
45
|
-
# nil.blank? # => true
|
46
|
-
def blank?
|
47
|
-
true
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class FalseClass
|
52
|
-
# +false+ is blank:
|
53
|
-
#
|
54
|
-
# false.blank? # => true
|
55
|
-
def blank?
|
56
|
-
true
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
class TrueClass
|
61
|
-
# +true+ is not blank:
|
62
|
-
#
|
63
|
-
# true.blank? # => false
|
64
|
-
def blank?
|
65
|
-
false
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
class Array
|
70
|
-
# An array is blank if it's empty:
|
71
|
-
#
|
72
|
-
# [].blank? # => true
|
73
|
-
# [1,2,3].blank? # => false
|
74
|
-
alias_method :blank?, :empty?
|
75
|
-
end
|
76
|
-
|
77
|
-
class Hash
|
78
|
-
# A hash is blank if it's empty:
|
79
|
-
#
|
80
|
-
# {}.blank? # => true
|
81
|
-
# { key: 'value' }.blank? # => false
|
82
|
-
alias_method :blank?, :empty?
|
83
|
-
end
|
84
|
-
|
85
|
-
class String
|
86
|
-
# A string is blank if it's empty or contains whitespaces only:
|
87
|
-
#
|
88
|
-
# ''.blank? # => true
|
89
|
-
# ' '.blank? # => true
|
90
|
-
# ' '.blank? # => true
|
91
|
-
# ' something here '.blank? # => false
|
92
|
-
def blank?
|
93
|
-
self !~ /[^[:space:]]/
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
class Numeric #:nodoc:
|
98
|
-
# No number is blank:
|
99
|
-
#
|
100
|
-
# 1.blank? # => false
|
101
|
-
# 0.blank? # => false
|
102
|
-
def blank?
|
103
|
-
false
|
104
|
-
end
|
105
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
class Hash
|
2
|
-
# File activesupport/lib/active_support/core_ext/hash/keys.rb
|
3
|
-
#
|
4
|
-
# hash = { name: 'Rob', age: '28' }
|
5
|
-
# hash.transform_keys{ |key| key.to_s.upcase }
|
6
|
-
# => { "NAME" => "Rob", "AGE" => "28" }
|
7
|
-
def transform_keys
|
8
|
-
result = {}
|
9
|
-
each_key do |key|
|
10
|
-
result[yield(key)] = self[key]
|
11
|
-
end
|
12
|
-
result
|
13
|
-
end
|
14
|
-
|
15
|
-
def transform_keys!(&block)
|
16
|
-
keys.each do |key|
|
17
|
-
value = delete(key)
|
18
|
-
self[yield(key)] = value.is_a?(Hash) ? value.transform_keys!(&block) : value
|
19
|
-
end
|
20
|
-
self
|
21
|
-
end
|
22
|
-
|
23
|
-
# hash = { 'name' => 'Rob', 'age' => '28' }
|
24
|
-
# hash.symbolize_keys
|
25
|
-
# => { name: "Rob", age: "28" }
|
26
|
-
def symbolize_keys
|
27
|
-
transform_keys { |key| key.to_sym rescue key }
|
28
|
-
end
|
29
|
-
|
30
|
-
# File activesupport/lib/active_support/core_ext/hash/keys.rb, line 135
|
31
|
-
def symbolize_keys!
|
32
|
-
transform_keys! { |key| key.to_sym rescue key }
|
33
|
-
end
|
34
|
-
|
35
|
-
# Merges the caller into +other_hash+. For example,
|
36
|
-
#
|
37
|
-
# options = options.reverse_merge(size: 25, velocity: 10)
|
38
|
-
#
|
39
|
-
# is equivalent to
|
40
|
-
#
|
41
|
-
# options = { size: 25, velocity: 10 }.merge(options)
|
42
|
-
#
|
43
|
-
# This is particularly useful for initializing an options hash
|
44
|
-
# with default values.
|
45
|
-
def reverse_merge(other_hash)
|
46
|
-
other_hash.merge(self)
|
47
|
-
end
|
48
|
-
|
49
|
-
# Destructive +reverse_merge+.
|
50
|
-
def reverse_merge!(other_hash)
|
51
|
-
# right wins if there is no left
|
52
|
-
merge!(other_hash) { |_key, left, _right| left }
|
53
|
-
end
|
54
|
-
end
|