x_tensions 0.0.1
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 +7 -0
- data/lib/x_tensions.rb +5 -0
- data/lib/x_tensions/array.rb +14 -0
- data/lib/x_tensions/hash.rb +47 -0
- data/lib/x_tensions/number.rb +8 -0
- data/lib/x_tensions/object.rb +32 -0
- data/lib/x_tensions/string.rb +49 -0
- metadata +50 -0
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,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,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
|