nga_extensions 0.1.1 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/nga_extensions.rb +62 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23e03ab0c883b4bcae7f684ce5faf82caa468da3
|
4
|
+
data.tar.gz: 3dc157330639e0cf6a96b7b451ac01bece93b73b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35f6ca7cd4e12092574d809389dd442e237fcc71e6b52ed1e70d1f09d2561f92d2da0d5816869075ae4a802469ac5d21e6a87d3100254f071e5a2ce5053d0fc4
|
7
|
+
data.tar.gz: 5ac718ea79edfb2023ad8b1a65d430b4041ff88d8b49268536a7f760eb55f292fd7afed4463e8b080f0394f2c555a4fed669f0cecdb262bdc6239e28203d7640
|
data/lib/nga_extensions.rb
CHANGED
@@ -1,5 +1,64 @@
|
|
1
|
-
class
|
2
|
-
def
|
3
|
-
|
1
|
+
class ActiveRecord::Base
|
2
|
+
def forceUTF8!
|
3
|
+
attributes.each do |k,v|
|
4
|
+
v.force_encoding('UTF-8') if v.respond_to?(:force_encoding)
|
5
|
+
end
|
6
|
+
self
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.select_distinct *s
|
10
|
+
self.uniq.pluck *s
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
class Hash
|
17
|
+
def select_keys *args
|
18
|
+
select {|k,v| args.include?(k) || args.include?(k.to_sym)}
|
19
|
+
end
|
20
|
+
def reject_keys *args
|
21
|
+
reject {|k,v| args.include?(k) || args.include?(k.to_sym)}
|
22
|
+
end
|
23
|
+
def forceUTF8!
|
24
|
+
self.hmap do |k,v|
|
25
|
+
{ k => v.respond_to?(:force_encoding) ? v.force_encoding('UTF-8') : v }
|
26
|
+
end
|
27
|
+
self
|
28
|
+
end
|
29
|
+
def hmap(&block)
|
30
|
+
self.inject({}){ |hash,(k,v)| hash.merge( block.call(k,v) ) }
|
31
|
+
end
|
32
|
+
def to_array_of_hashes
|
33
|
+
self.inject([]) do |array,(k,v)|
|
34
|
+
array << {k => v}
|
35
|
+
array
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Object
|
41
|
+
## this accepts a chain like "to_s.to_i.class" and safely passes the method to each and returns nil if it doesn't work
|
42
|
+
def safe_multi_send arg
|
43
|
+
str = arg&.to_s
|
44
|
+
args = str&.split('.')
|
45
|
+
args&.map(&:to_sym)
|
46
|
+
args&.inject(self) do |mem, var|
|
47
|
+
mem.send(var) if mem.respond_to?(var)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
class Array
|
55
|
+
def group_into(&block) # send a block that returns a symbol and receive a hash
|
56
|
+
self.inject({}) do |hash,v|
|
57
|
+
k = block.call(v)
|
58
|
+
array = hash[k] || []
|
59
|
+
array << v
|
60
|
+
hash[k] = array
|
61
|
+
hash
|
62
|
+
end
|
4
63
|
end
|
5
64
|
end
|