x_tensions 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7dea1c6a350f2a192ed4b6cf4b18131dfb449c54
4
+ data.tar.gz: 02403b9eafe903abd70b6a590edf8d58820f0cd0
5
+ SHA512:
6
+ metadata.gz: fca5d0f060e252a6af56929a99747abfcf12aeb36edf90b8ff52d02a34c2261f78cf84870ba08dd72f910c222d22dabb3866a47b5eaf5d935b88c5fccb3bfc5f
7
+ data.tar.gz: 6191c5b85234dd9ea1bed0ce83a5c1392b742e824b59d0801bef21899332e07de0cb020e8925b68015174c655f91d24da1174eb1a322619e68be371018dbd853
data/lib/x_tensions.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'x_tensions/object'
2
+ require 'x_tensions/hash'
3
+ require 'x_tensions/string'
4
+ require 'x_tensions/array'
5
+ require 'x_tensions/number'
@@ -0,0 +1,14 @@
1
+ class Array
2
+ def average
3
+ self.sum.to_f / self.length
4
+ end
5
+
6
+ def symbolize_keys_recursive
7
+ inject([]) do |options, value|
8
+ value = value.symbolize_keys_recursive if value.instance_of? Hash
9
+ value = value.symbolize_keys_recursive if value.instance_of? Array
10
+ options << value
11
+ options
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,47 @@
1
+ class Hash
2
+ def evaluate(*args)
3
+ options = {:default => nil}.merge(args.last.is_a?(Hash) ? args.pop : {})
4
+ target = self # Initial target is self.
5
+ while target && key = args.shift
6
+ target = target[key]
7
+ end
8
+
9
+ return target if target
10
+ return options[:default]
11
+ end
12
+
13
+ def get(*keys)
14
+ return nil if keys.blank?
15
+ self.fetch keys.shift, self.get(*keys)
16
+ end
17
+
18
+ def clean
19
+ each do |k, v|
20
+ if v.is_a?(Hash)
21
+ v.clean
22
+ elsif v.to_s.empty?
23
+ delete(k)
24
+ end
25
+ end
26
+ end
27
+
28
+ def symbolize_keys_recursive
29
+ inject({}) do |options, (key, value)|
30
+ value = value.symbolize_keys_recursive if value.instance_of? Hash
31
+ value = value.symbolize_keys_recursive if value.instance_of? Array
32
+ options[key.to_sym || key] = value
33
+ options
34
+ end
35
+ end
36
+
37
+ def rename_keys(mapping)
38
+ result = {}
39
+ self.map do |k,v|
40
+ mapped_key = mapping[k] ? mapping[k] : k
41
+ result[mapped_key] = v.kind_of?(Hash) ? v.rename_keys(mapping) : v
42
+ result[mapped_key] = v.collect{ |obj| obj.rename_keys(mapping) if obj.kind_of?(Hash)} if v.kind_of?(Array)
43
+ end
44
+ result
45
+ end
46
+
47
+ end
@@ -0,0 +1,8 @@
1
+ class Number
2
+ def positive?
3
+ self > 0
4
+ end
5
+ def negative
6
+ self < 0
7
+ end
8
+ end
@@ -0,0 +1,32 @@
1
+ class Object
2
+
3
+ def to_hms
4
+ Time.at(self.to_f).utc.strftime("%H:%M:%S")
5
+ end
6
+
7
+ def to_normal_time
8
+ self.strftime("%H:%M %p")
9
+ end
10
+
11
+ def rcall(*args)
12
+ options = {:d => nil}.merge(args.last.is_a?(Hash) ? args.pop : {})
13
+ target = self
14
+
15
+ while target && m = args.shift
16
+ target = target.send(m) if target.respond_to?(m)
17
+ end
18
+
19
+ return target if target
20
+ return options[:d].call if options[:d].respond_to? :call
21
+ return options[:d]
22
+ end
23
+
24
+ def is?(other_object)
25
+ self == other_object
26
+ end
27
+
28
+ def is_not?(other_object)
29
+ self != other_object
30
+ end
31
+
32
+ end
@@ -0,0 +1,49 @@
1
+
2
+ class String
3
+ def humanize
4
+ result = self.to_s.dup
5
+ result.gsub(/_/, " ").capitalize
6
+ end
7
+
8
+ def to_utf8
9
+ self.encode!('UTF-16', 'UTF-8', :invalid => :replace, :replace => '')
10
+ self.encode!('UTF-8', 'UTF-16')
11
+ end
12
+
13
+ def ellipsisize(minimum_length=4,edge_length=3)
14
+ return self if self.length < minimum_length or self.length <= edge_length*2
15
+ edge = '.' * edge_length
16
+ mid_length = self.length - edge_length*2
17
+ gsub(/(#{edge}).{#{mid_length},}(#{edge})/, '\1...\2')
18
+ end
19
+
20
+ def words
21
+ self.split(/\s+/)
22
+ end
23
+
24
+ def urlize
25
+ self.strip.downcase.gsub(/[^a-z]+/, '_')
26
+ end
27
+
28
+ def shortize
29
+ self.words.first.downcase
30
+ end
31
+
32
+ def to_slug
33
+ ret = self.strip
34
+ ret.gsub! /['`]/,""
35
+ ret.gsub! /\s*@\s*/, " at "
36
+ ret.gsub! /\s*&\s*/, " and "
37
+ ret.gsub! /\s*\.\.\.\s*/, " "
38
+ ret.gsub! /\s*\.\s*/, " dot "
39
+ ret.gsub! /\s*\#\s*/, " hash "
40
+ ret.gsub! /\s*\+\s*/, " plus "
41
+ ret.gsub! /\s*[^A-Za-z0-9\.\-]\s*/, '-'
42
+ ret.gsub! /-+/,"-"
43
+ ret.gsub! /\A[-\.]+|[-\.]+\z/,""
44
+ ret.downcase!
45
+
46
+ {
47
+ }[ret] || ret
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: x_tensions
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Usman Ali
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Just a few useful extensions
14
+ email: usmanalik@outlook.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/x_tensions.rb
20
+ - lib/x_tensions/array.rb
21
+ - lib/x_tensions/hash.rb
22
+ - lib/x_tensions/number.rb
23
+ - lib/x_tensions/object.rb
24
+ - lib/x_tensions/string.rb
25
+ homepage: http://rubygems.org/gems/x_tensions
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.4.4
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Just a few useful extensions!
49
+ test_files: []
50
+ has_rdoc: yard