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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nga_extensions.rb +62 -3
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8ffbd0a6a91209ca89a1608c61583587a67df3c
4
- data.tar.gz: aca89f55df387962a3bb38c5fb7e58419cf45b4d
3
+ metadata.gz: 23e03ab0c883b4bcae7f684ce5faf82caa468da3
4
+ data.tar.gz: 3dc157330639e0cf6a96b7b451ac01bece93b73b
5
5
  SHA512:
6
- metadata.gz: 32ac10873f790fce5c30c2dd6893f11094efbf23a5e3824127ba69836a924eee36cc49f9be203eb26047622e4c0baa1eac41ad25ff839bd88e5b7721b7d0dd4d
7
- data.tar.gz: b66d32eec7d0b957d1024089b9af0ca6acbd9204981baf21112622361e243d6e639153dc4452f32e6bb8a7a6c436774919923a375e9d4fc2f1b6556eab6931c6
6
+ metadata.gz: 35f6ca7cd4e12092574d809389dd442e237fcc71e6b52ed1e70d1f09d2561f92d2da0d5816869075ae4a802469ac5d21e6a87d3100254f071e5a2ce5053d0fc4
7
+ data.tar.gz: 5ac718ea79edfb2023ad8b1a65d430b4041ff88d8b49268536a7f760eb55f292fd7afed4463e8b080f0394f2c555a4fed669f0cecdb262bdc6239e28203d7640
@@ -1,5 +1,64 @@
1
- class Hola
2
- def self.hi
3
- puts "Hello world!"
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nga_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Castellanos