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.
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