gorilla-patch 0.1.0 → 1.0.1
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/lib/gorilla-patch/blank.rb +59 -0
- data/lib/gorilla-patch/compact.rb +14 -0
- data/lib/gorilla-patch/deep_dup.rb +26 -0
- data/lib/gorilla-patch/except.rb +15 -0
- data/lib/gorilla-patch/{range.rb → include.rb} +2 -2
- data/lib/gorilla-patch/keys.rb +10 -0
- data/lib/gorilla-patch/letters_case.rb +30 -0
- data/lib/gorilla-patch/namespace.rb +16 -0
- data/lib/gorilla-patch/quantity.rb +18 -0
- data/lib/gorilla-patch/slice.rb +24 -0
- data/lib/gorilla-patch/symbolize.rb +31 -0
- metadata +13 -7
- data/lib/gorilla-patch/array.rb +0 -16
- data/lib/gorilla-patch/hash.rb +0 -84
- data/lib/gorilla-patch/module.rb +0 -18
- data/lib/gorilla-patch/string.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41bbd444208009b4f1b89499a330b887f51f9975
|
4
|
+
data.tar.gz: acc4944fd3a50ddd5f7580bb293c66e12519fd39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c7e5ad9bd2f46fa1d6d9478c6c04b5fe478732b95c55187ca698146d450fcaf7dda644e9d954fe6ea00358ccc227c04a2d751ab94a4e8101f433b7fea58b76e
|
7
|
+
data.tar.gz: 6e5cb28431fbb419483e257491d72e81759f54fbaa38da7d9558bf1e61f61f30ab4fd9ec98f436c4fc6876b39ac24e34259162b12c0e088726f2ba8847c6c9ce
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative 'deep_dup'
|
2
|
+
|
3
|
+
module GorillaPatch
|
4
|
+
## Adding blank methods
|
5
|
+
module Blank
|
6
|
+
refine String do
|
7
|
+
def blank?
|
8
|
+
strip.empty?
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
[Array, Hash].each do |klass|
|
13
|
+
refine klass do
|
14
|
+
def reject_blank_strings!
|
15
|
+
replace reject_blank_strings
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def deep_value_empty?(value)
|
21
|
+
deep_reject_blank_strings_in(value).empty?
|
22
|
+
rescue NoMethodError
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def deep_reject_blank_strings_in(object)
|
27
|
+
case object
|
28
|
+
when String
|
29
|
+
object.strip
|
30
|
+
when Hash, Array
|
31
|
+
object.reject_blank_strings!
|
32
|
+
else
|
33
|
+
object
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
refine Array do
|
40
|
+
using GorillaPatch::DeepDup
|
41
|
+
|
42
|
+
def reject_blank_strings
|
43
|
+
deep_dup.reject do |value|
|
44
|
+
deep_value_empty? value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
refine Hash do
|
50
|
+
using GorillaPatch::DeepDup
|
51
|
+
|
52
|
+
def reject_blank_strings
|
53
|
+
deep_dup.reject do |_key, value|
|
54
|
+
deep_value_empty? value
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module GorillaPatch
|
2
|
+
## Adding deep_dup method
|
3
|
+
module DeepDup
|
4
|
+
refine Object do
|
5
|
+
def deep_dup
|
6
|
+
dup
|
7
|
+
rescue TypeError
|
8
|
+
self
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
refine Hash do
|
13
|
+
def deep_dup
|
14
|
+
each_with_object(dup) do |(key, value), hash|
|
15
|
+
hash[key.deep_dup] = value.deep_dup
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
refine Array do
|
21
|
+
def deep_dup
|
22
|
+
map { |el| el.deep_dup }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module GorillaPatch
|
2
|
+
## Adding case-changing methods
|
3
|
+
module LettersCase
|
4
|
+
def self.used(namespace)
|
5
|
+
puts "Using in #{namespace}!"
|
6
|
+
end
|
7
|
+
|
8
|
+
refine String do
|
9
|
+
def underscore
|
10
|
+
gsub(/::/, '/')
|
11
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
12
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
13
|
+
.tr('-', '_')
|
14
|
+
.downcase
|
15
|
+
end
|
16
|
+
|
17
|
+
def camelize
|
18
|
+
split('/')
|
19
|
+
.map { |s| s.split('_').collect(&:capitalize).join }
|
20
|
+
.join('::')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
refine Module do
|
25
|
+
def underscore
|
26
|
+
to_s.underscore
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module GorillaPatch
|
2
|
+
## Refine String class by Sequel Inflections
|
3
|
+
module Quantity
|
4
|
+
def self.from_sequel
|
5
|
+
@from_sequel ||= Module.new do
|
6
|
+
require 'sequel'
|
7
|
+
|
8
|
+
refine String do
|
9
|
+
Sequel::Inflections.private_instance_methods.each do |method|
|
10
|
+
define_method method do
|
11
|
+
Sequel::Inflections.instance_method(method).bind(self).call(self)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module GorillaPatch
|
2
|
+
## Adding slice methods
|
3
|
+
module Slice
|
4
|
+
refine Hash do
|
5
|
+
def slice(*keys)
|
6
|
+
keys.each_with_object({}) { |k, hash| hash[k] = self[k] if key?(k) }
|
7
|
+
end
|
8
|
+
|
9
|
+
def slice!(*keys)
|
10
|
+
omit = slice(*self.keys - keys)
|
11
|
+
hash = slice(*keys)
|
12
|
+
replace(hash)
|
13
|
+
omit
|
14
|
+
end
|
15
|
+
|
16
|
+
def slice_reverse!(*keys)
|
17
|
+
omit = slice!(*keys)
|
18
|
+
hash = dup
|
19
|
+
replace(omit)
|
20
|
+
hash
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module GorillaPatch
|
2
|
+
## Adding symbolize methods
|
3
|
+
module Symbolize
|
4
|
+
refine Hash do
|
5
|
+
def symbolize_keys(deep: false)
|
6
|
+
each_with_object({}) do |(key, value), hash|
|
7
|
+
value = deep_symbolize_keys_in(value) if deep
|
8
|
+
key = key.to_sym if key.respond_to?(:to_sym)
|
9
|
+
hash[key] = value
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def symbolize_keys!(deep: false)
|
14
|
+
replace symbolize_keys(deep: deep)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def deep_symbolize_keys_in(object)
|
20
|
+
case object
|
21
|
+
when Hash
|
22
|
+
object.symbolize_keys(deep: true)
|
23
|
+
when Array
|
24
|
+
object.map { |el| deep_symbolize_keys_in(el) }
|
25
|
+
else
|
26
|
+
object
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gorilla-patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Popov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Refine Ruby Core classes.
|
14
14
|
email: alex.wayfer@gmail.com
|
@@ -17,11 +17,17 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/gorilla-patch.rb
|
20
|
-
- lib/gorilla-patch/
|
21
|
-
- lib/gorilla-patch/
|
22
|
-
- lib/gorilla-patch/
|
23
|
-
- lib/gorilla-patch/
|
24
|
-
- lib/gorilla-patch/
|
20
|
+
- lib/gorilla-patch/blank.rb
|
21
|
+
- lib/gorilla-patch/compact.rb
|
22
|
+
- lib/gorilla-patch/deep_dup.rb
|
23
|
+
- lib/gorilla-patch/except.rb
|
24
|
+
- lib/gorilla-patch/include.rb
|
25
|
+
- lib/gorilla-patch/keys.rb
|
26
|
+
- lib/gorilla-patch/letters_case.rb
|
27
|
+
- lib/gorilla-patch/namespace.rb
|
28
|
+
- lib/gorilla-patch/quantity.rb
|
29
|
+
- lib/gorilla-patch/slice.rb
|
30
|
+
- lib/gorilla-patch/symbolize.rb
|
25
31
|
homepage: https://github.com/AlexWayfer/gorilla-patch
|
26
32
|
licenses:
|
27
33
|
- MIT
|
data/lib/gorilla-patch/array.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module GorillaPatch
|
2
|
-
## Refine Array class
|
3
|
-
module ArrayExt
|
4
|
-
refine Array do
|
5
|
-
def compare(other)
|
6
|
-
other = [other] unless other.is_a?(Array)
|
7
|
-
sort == other.sort
|
8
|
-
end
|
9
|
-
|
10
|
-
def include_any?(*items)
|
11
|
-
items = items.first if items.length == 1 && items.first.is_a?(Array)
|
12
|
-
!(self & items).empty?
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
data/lib/gorilla-patch/hash.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
module GorillaPatch
|
2
|
-
## Refine Hash class
|
3
|
-
module HashExt
|
4
|
-
refine Hash do
|
5
|
-
def keys_to_sym(deep: false)
|
6
|
-
each_with_object({}) do |(key, val), hash_sym|
|
7
|
-
val = deep_symbolize_keys_in(val) if deep
|
8
|
-
key = key.to_sym if key.respond_to?(:to_sym)
|
9
|
-
hash_sym[key] = val
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def keys_to_sym!(deep: false)
|
14
|
-
hash_sym = keys_to_sym(deep: deep)
|
15
|
-
clear.merge! hash_sym
|
16
|
-
end
|
17
|
-
|
18
|
-
def keys_to_s(deep: false)
|
19
|
-
each_with_object({}) do |(key, val), hash_s|
|
20
|
-
val = val.keys_to_s(deep: deep) if deep && val.is_a?(Hash)
|
21
|
-
key = key.to_s if key.respond_to?(:to_s)
|
22
|
-
hash_s[key] = val
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def keys_to_s!(deep: false)
|
27
|
-
hash_s = keys_to_s(deep: deep)
|
28
|
-
clear.merge! hash_s
|
29
|
-
end
|
30
|
-
|
31
|
-
def except(*keys)
|
32
|
-
dup.except!(*keys)
|
33
|
-
end
|
34
|
-
|
35
|
-
def except!(*keys)
|
36
|
-
keys.each { |key| delete(key) }
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
def compact
|
41
|
-
select { |_key, value| !value.nil? }
|
42
|
-
end
|
43
|
-
|
44
|
-
def compact!
|
45
|
-
reject! { |_key, value| value.nil? }
|
46
|
-
end
|
47
|
-
|
48
|
-
def slice(*keys)
|
49
|
-
keys.each_with_object({}) { |k, hash| hash[k] = self[k] if key?(k) }
|
50
|
-
end
|
51
|
-
|
52
|
-
def slice!(*keys)
|
53
|
-
omit = slice(*self.keys - keys)
|
54
|
-
hash = slice(*keys)
|
55
|
-
replace(hash)
|
56
|
-
omit
|
57
|
-
end
|
58
|
-
|
59
|
-
def slice_reverse!(*keys)
|
60
|
-
omit = slice!(*keys)
|
61
|
-
hash = dup
|
62
|
-
replace(omit)
|
63
|
-
hash
|
64
|
-
end
|
65
|
-
|
66
|
-
def keys?(*keys)
|
67
|
-
keys.all? { |k| key?(k) }
|
68
|
-
end
|
69
|
-
|
70
|
-
private
|
71
|
-
|
72
|
-
def deep_symbolize_keys_in(object)
|
73
|
-
case object
|
74
|
-
when Hash
|
75
|
-
object.keys_to_sym(deep: true)
|
76
|
-
when Array
|
77
|
-
object.map { |el| deep_symbolize_keys_in(el) }
|
78
|
-
else
|
79
|
-
object
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
data/lib/gorilla-patch/module.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require_relative './string'
|
2
|
-
|
3
|
-
module GorillaPatch
|
4
|
-
## Refine Module class
|
5
|
-
module ModuleExt
|
6
|
-
refine Module do
|
7
|
-
using StringExt
|
8
|
-
|
9
|
-
def demodulize
|
10
|
-
to_s.demodulize
|
11
|
-
end
|
12
|
-
|
13
|
-
def underscore
|
14
|
-
to_s.underscore
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/gorilla-patch/string.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module GorillaPatch
|
2
|
-
## Refine String class
|
3
|
-
module StringExt
|
4
|
-
refine String do
|
5
|
-
def underscore
|
6
|
-
gsub(/::/, '/')
|
7
|
-
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
8
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
9
|
-
.tr('-', '_')
|
10
|
-
.downcase
|
11
|
-
end
|
12
|
-
|
13
|
-
def demodulize
|
14
|
-
split('::').last
|
15
|
-
end
|
16
|
-
|
17
|
-
def camelize
|
18
|
-
split('/')
|
19
|
-
.map { |s| s.split('_').collect(&:capitalize).join }
|
20
|
-
.join('::')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.from_sequel
|
25
|
-
@from_sequel ||= Module.new do
|
26
|
-
refine String do
|
27
|
-
require 'sequel'
|
28
|
-
|
29
|
-
Sequel::Inflections.private_instance_methods.each do |method|
|
30
|
-
define_method method do
|
31
|
-
Sequel::Inflections.instance_method(method).bind(self).call(self)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|