awein 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 00f381397f0760833826bfa4ffa7045a351aef37
4
+ data.tar.gz: 2ce12561bd48271683f15553ebc2473aa79151f4
5
+ SHA512:
6
+ metadata.gz: 83d2aedc2e72cbfb5e8e2ec0f2eb5427faffb241c97d978d1de03cf3a9f041712102106cfcf2f3dcba861c0687b4f9086dc88d3f12515c885fe7cf6dfb9d7e79
7
+ data.tar.gz: c1f86b47a26b9ab4379b562ecec6866c9b49b508e9f5528c48877a082625be79347909c756ae544838fda613039ffbfc13deda4ba05ea22b73e0bf1f600f9dae
@@ -0,0 +1,5 @@
1
+ require 'awein/object'
2
+ require 'awein/hash'
3
+ require 'awein/string'
4
+ require 'awein/array'
5
+ require 'awein/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,36 @@
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
+ 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: awein
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Usman Ali
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-27 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/awein.rb
20
+ - lib/awein/array.rb
21
+ - lib/awein/hash.rb
22
+ - lib/awein/number.rb
23
+ - lib/awein/object.rb
24
+ - lib/awein/string.rb
25
+ homepage: http://rubygems.org/gems/awein
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: Bus Awein!
49
+ test_files: []
50
+ has_rdoc: yard