nga_extensions 0.1.2 → 0.1.4

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