nga_extensions 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|