nga_extensions 0.1.2 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23e03ab0c883b4bcae7f684ce5faf82caa468da3
4
- data.tar.gz: 3dc157330639e0cf6a96b7b451ac01bece93b73b
3
+ metadata.gz: e6a95ebb3f327b35eebc1bafcbfc1290316ba957
4
+ data.tar.gz: 77930a983d93599a72c5011a35b7c779f7fa2257
5
5
  SHA512:
6
- metadata.gz: 35f6ca7cd4e12092574d809389dd442e237fcc71e6b52ed1e70d1f09d2561f92d2da0d5816869075ae4a802469ac5d21e6a87d3100254f071e5a2ce5053d0fc4
7
- data.tar.gz: 5ac718ea79edfb2023ad8b1a65d430b4041ff88d8b49268536a7f760eb55f292fd7afed4463e8b080f0394f2c555a4fed669f0cecdb262bdc6239e28203d7640
6
+ metadata.gz: 115b599047195187be0130945d82abdd8371324c695300209846a3f41604900b2f2e4ad70881c0bdf940c7e1395fbe6864831e410d13acacd819f13cc807d100
7
+ data.tar.gz: c2b6d4dd4378b9c0e1e7dd79d11f50fad13e19b2c585a54cf36fa00cc83515ba0a67b86d2d38138faadaffec55c228f8fea47d7cd448fce7cfe55f0eba5c1cd9
@@ -0,0 +1,16 @@
1
+ module NgaExtensions
2
+ module ActiveRecord
3
+ module Base
4
+ def forceUTF8!
5
+ attributes.each do |k,v|
6
+ v.force_encoding('UTF-8') if v.respond_to?(:force_encoding)
7
+ end
8
+ self
9
+ end
10
+
11
+ def self.select_distinct *s
12
+ self.uniq.pluck *s
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module NgaExtensions
2
+ module Array
3
+ def group_into(&block) # send a block that returns a symbol and receive a hash
4
+ self.inject({}) do |hash,v|
5
+ k = block.call(v)
6
+ array = hash[k] || []
7
+ array << v
8
+ hash[k] = array
9
+ hash
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ module NgaExtensions
2
+ module Hash
3
+ def select_keys *args
4
+ select {|k,v| args.include?(k) || args.include?(k.to_sym)}
5
+ end
6
+ def reject_keys *args
7
+ reject {|k,v| args.include?(k) || args.include?(k.to_sym)}
8
+ end
9
+ def forceUTF8!
10
+ self.hmap do |k,v|
11
+ { k => v.respond_to?(:force_encoding) ? v.force_encoding('UTF-8') : v }
12
+ end
13
+ self
14
+ end
15
+ def hmap(&block)
16
+ self.inject({}){ |hash,(k,v)| hash.merge( block.call(k,v) ) }
17
+ end
18
+ def to_array_of_hashes
19
+ self.inject([]) do |array,(k,v)|
20
+ array << {k => v}
21
+ array
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,14 @@
1
+ module NgaExtensions
2
+ module Object
3
+ ## 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
4
+ def safe_multi_send arg
5
+ str = arg&.to_s
6
+ args = str&.split('.')
7
+ args&.map(&:to_sym)
8
+ args&.inject(self) do |mem, var|
9
+ mem.send(var) if mem.respond_to?(var)
10
+ end
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,11 @@
1
+ module NgaExtensions
2
+ module String
3
+ def from_windows
4
+ self.force_encoding('iso-8859-1').encode('utf-8')
5
+ end
6
+
7
+ def to_windows
8
+ self.encode('iso-8859-1')
9
+ end
10
+ end
11
+ end
@@ -1,64 +1,21 @@
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
-
1
+ require 'nga_extensions/hash'
2
+ require 'nga_extensions/active_record'
3
+ require 'nga_extensions/object'
4
+ require 'nga_extensions/array'
5
+ require 'nga_extensions/string'
6
+
7
+ begin
8
+ ActiveRecord::Base.include(NgaExtensions::ActiveRecord::Base)
9
+ rescue(NameError)
10
+ puts 'Active record not present'
13
11
  end
14
12
 
13
+ Hash.include(NgaExtensions::Hash)
14
+ Array.include(NgaExtensions::Array)
15
+ Object.include(NgaExtensions::Object)
16
+ String.include(NgaExtensions::String)
15
17
 
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
18
 
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
19
 
52
20
 
53
21
 
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
63
- end
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.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Castellanos
@@ -17,6 +17,11 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/nga_extensions.rb
20
+ - lib/nga_extensions/active_record.rb
21
+ - lib/nga_extensions/array.rb
22
+ - lib/nga_extensions/hash.rb
23
+ - lib/nga_extensions/object.rb
24
+ - lib/nga_extensions/string.rb
20
25
  homepage: http://rubygems.org/gems/nga_extensions
21
26
  licenses:
22
27
  - MIT