chupakabra_tools 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chupakabra_tools.rb +6 -0
- data/lib/chupakabra_tools/active_record.rb +38 -0
- data/lib/chupakabra_tools/convert.rb +67 -0
- data/lib/chupakabra_tools/http.rb +18 -0
- data/lib/chupakabra_tools/number_as_text.rb +64 -0
- data/lib/chupakabra_tools/security.rb +41 -0
- data/lib/chupakabra_tools/validattions.rb +10 -0
- data/lib/chupakabra_tools/version.rb +1 -1
- metadata +8 -2
data/lib/chupakabra_tools.rb
CHANGED
@@ -2,6 +2,12 @@ require "chupakabra_tools/version"
|
|
2
2
|
|
3
3
|
require "chupakabra_tools/time_interval"
|
4
4
|
require "chupakabra_tools/predefined_time_intervals"
|
5
|
+
require "chupakabra_tools/security"
|
6
|
+
require "chupakabra_tools/http"
|
7
|
+
require "chupakabra_tools/validattions"
|
8
|
+
require "chupakabra_tools/number_as_text"
|
9
|
+
require "chupakabra_tools/active_record"
|
10
|
+
require "chupakabra_tools/convert"
|
5
11
|
|
6
12
|
|
7
13
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module ChupakabraTools::ActiveRecord
|
2
|
+
def self.sanitize_sortorder(sort_order = nil)
|
3
|
+
return 'asc' if sort_order.nil? || sort_order.empty?
|
4
|
+
return 'asc' if sort_order.downcase == 'asc'
|
5
|
+
return 'desc' if sort_order.downcase == 'desc'
|
6
|
+
return 'asc'
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.sanitize_order(sort_order = nil)
|
10
|
+
sanitize_sortorder(sort_order)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.invert_sortorder(sort_order = nil)
|
14
|
+
return 'desc' if sort_order.nil? || sort_order.empty?
|
15
|
+
sort_order = sanitize_sortorder(sort_order)
|
16
|
+
return 'desc' if sort_order.downcase == 'asc'
|
17
|
+
'asc'
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.invert_order(sort_order = nil)
|
21
|
+
invert_sortorder(sort_order)
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
def self.sanitize_sort_by(sort_by, fields_to_sort, default_sort_by = nil)
|
26
|
+
unless sort_by.nil? || sort_by.empty? || fields_to_sort.nil? || !fields_to_sort.is_a?(Array)
|
27
|
+
fields_to_sort.each do |fts|
|
28
|
+
if fts.downcase == sort_by
|
29
|
+
return sort_by
|
30
|
+
end
|
31
|
+
end
|
32
|
+
return default_sort_by
|
33
|
+
end
|
34
|
+
|
35
|
+
return default_sort_by.nil? || default_sort_by.empty? ? default_sort_by : 'id'
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module ChupakabraTools::Convert
|
2
|
+
def self.string_to_value(data, data_type)
|
3
|
+
result_value = nil
|
4
|
+
|
5
|
+
if data
|
6
|
+
data = data.to_s unless data.is_a?(String)
|
7
|
+
data_type = "string" if data_type.nil?
|
8
|
+
data_type = data_type.to_s unless data_type.is_a?(String)
|
9
|
+
data_type.downcase!
|
10
|
+
|
11
|
+
|
12
|
+
begin
|
13
|
+
if data_type == "integer"
|
14
|
+
result_value = data.to_i
|
15
|
+
elsif data_type == "float" || data_type == "decimal"
|
16
|
+
result_value = data.to_f
|
17
|
+
elsif data_type == "datetime"
|
18
|
+
result_value = data.to_datetime
|
19
|
+
elsif data_type == "date"
|
20
|
+
result_value = data.to_date
|
21
|
+
elsif data_type == "time"
|
22
|
+
result_value = data.to_time
|
23
|
+
elsif data_type == "string"
|
24
|
+
result_value = data
|
25
|
+
elsif data_type == "text"
|
26
|
+
result_value = data
|
27
|
+
elsif data_type == "boolean"
|
28
|
+
result_value = data == "true" || data == "1" ? true : false
|
29
|
+
else
|
30
|
+
result_value = nil
|
31
|
+
end
|
32
|
+
rescue
|
33
|
+
#ignored
|
34
|
+
end
|
35
|
+
end
|
36
|
+
result_value
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.value_to_string(data, data_type)
|
40
|
+
result_value = nil
|
41
|
+
data_type.strip! if data_type && data.is_a?(String)
|
42
|
+
begin
|
43
|
+
if data_type == "integer"
|
44
|
+
result_value = data
|
45
|
+
elsif data_type == "float"
|
46
|
+
result_value = data
|
47
|
+
elsif data_type == "datetime"
|
48
|
+
result_value = data
|
49
|
+
elsif data_type == "date"
|
50
|
+
result_value = data
|
51
|
+
elsif data_type == "time"
|
52
|
+
result_value = data
|
53
|
+
elsif data_type == "string"
|
54
|
+
result_value = data
|
55
|
+
elsif data_type == "text"
|
56
|
+
result_value = data
|
57
|
+
elsif data_type == "boolean"
|
58
|
+
result_value = data == "1" || data == "true" || data == "on" ? "true" : "false"
|
59
|
+
else
|
60
|
+
result_value = data
|
61
|
+
end
|
62
|
+
rescue
|
63
|
+
#ignored
|
64
|
+
end
|
65
|
+
result_value
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module ChupakabraTools::Http
|
2
|
+
def self.retrieve_operating_system(user_agent)
|
3
|
+
unless user_agent
|
4
|
+
"Unknown"
|
5
|
+
end
|
6
|
+
if user_agent.downcase.match(/mac/i)
|
7
|
+
"MacOS"
|
8
|
+
elsif user_agent.downcase.match(/windows/i)
|
9
|
+
"Windows"
|
10
|
+
elsif user_agent.downcase.match(/linux/i)
|
11
|
+
"Linux"
|
12
|
+
elsif user_agent.downcase.match(/unix/i)
|
13
|
+
"Unix"
|
14
|
+
else
|
15
|
+
"Unknown"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
module ChupakabraTools::NumberAsText
|
3
|
+
|
4
|
+
def self.number_to_russian_string(money)
|
5
|
+
|
6
|
+
number_strings = Hash.new
|
7
|
+
number_strings[:thousands] = ["тысяч", "тысяча", "тысячи", "тысячи", "тысячи", "тысяч", "тысяч", "тысяч", "тысяч", "тысяч"]
|
8
|
+
number_strings[:millions] = ["миллионов", "миллион", "миллиона", "миллиона", "миллиона", "миллионов", "миллионов", "миллионов", "миллионов", "миллионов"]
|
9
|
+
number_strings[:billions] = ["миллиардов", "миллиард", "миллиарда", "миллиарда", "миллиарда", "миллиардов", "миллиардов", "миллиардов", "миллиардов", "миллиардов"]
|
10
|
+
number_strings[:trillions] = ["триллионов", "триллион", "триллиона", "триллиона", "триллиона", "триллионов", "триллионов", "триллионов", "триллионов", "триллионов"]
|
11
|
+
|
12
|
+
|
13
|
+
money_trilions = extract_number_order(number, "trillions")
|
14
|
+
if money_trilions > 0
|
15
|
+
|
16
|
+
end
|
17
|
+
money_billions = extract_number_order(number, "billions")
|
18
|
+
if money_billions > 0
|
19
|
+
|
20
|
+
end
|
21
|
+
money_millions = extract_number_order(number, "millions")
|
22
|
+
if money_millions > 0
|
23
|
+
|
24
|
+
end
|
25
|
+
money_thousands = extract_number_order(number, "thousands")
|
26
|
+
if money_thousands > 0
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
money_hundreds = extract_number_order(number, "")
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.format_hundreds(number)
|
35
|
+
number_strings = Hash.new
|
36
|
+
number_strings["1-9"] = ["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"]
|
37
|
+
number_strings["10-19"] =["десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"]
|
38
|
+
number_strings["20-90"] = ["", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"]
|
39
|
+
number_strings["100-900"] = ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"]
|
40
|
+
|
41
|
+
money_string = ""
|
42
|
+
money_hundreds = ((number/ 100).to_i * 100 - (number / 1000).to_i * 1000) / 100
|
43
|
+
|
44
|
+
if money_hundreds > 0
|
45
|
+
money_string += number_strings["100-900"]
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.extract_number_order(number, order)
|
51
|
+
devider = 1
|
52
|
+
if order == "trillions"
|
53
|
+
devider = 1000000000000
|
54
|
+
elsif order == "billions"
|
55
|
+
devider = 1000000000
|
56
|
+
elsif order == "millions"
|
57
|
+
devider = 1000000
|
58
|
+
elsif order == "thousands"
|
59
|
+
devider = 1000
|
60
|
+
end
|
61
|
+
((number/devider).to_i * devider - (number/(devider * 1000)).to_i * devider * 1000)/devider
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module ChupakabraTools::Security
|
2
|
+
def self.generate_secret(options={})
|
3
|
+
|
4
|
+
options ||= {}
|
5
|
+
|
6
|
+
chars = ""
|
7
|
+
|
8
|
+
if options[:small] && options[:small] == true
|
9
|
+
chars += ("a".."z").to_a.join
|
10
|
+
end
|
11
|
+
|
12
|
+
if options[:big] && options[:big] == true
|
13
|
+
chars += ("A".."Z").to_a.join
|
14
|
+
end
|
15
|
+
|
16
|
+
if options[:digits] && options[:digits] == true
|
17
|
+
chars += ("0".."9").to_a.join
|
18
|
+
end
|
19
|
+
|
20
|
+
if options[:specials] && options[:specials] == true
|
21
|
+
chars += "!@#$\%^&*()_+<>/?"
|
22
|
+
end
|
23
|
+
|
24
|
+
if chars.blank?
|
25
|
+
chars = ("a".."z").to_a.join
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
len = 8
|
30
|
+
begin
|
31
|
+
if options[:length] && options[:length].to_i > 5
|
32
|
+
len = options[:length].to_i
|
33
|
+
end
|
34
|
+
rescue
|
35
|
+
end
|
36
|
+
|
37
|
+
new_pass = ""
|
38
|
+
1.upto(len) { |i| new_pass << chars[rand(chars.size-1)] }
|
39
|
+
new_pass
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chupakabra_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -73,8 +73,14 @@ files:
|
|
73
73
|
- Rakefile
|
74
74
|
- chupakabra_tools.gemspec
|
75
75
|
- lib/chupakabra_tools.rb
|
76
|
+
- lib/chupakabra_tools/active_record.rb
|
77
|
+
- lib/chupakabra_tools/convert.rb
|
78
|
+
- lib/chupakabra_tools/http.rb
|
79
|
+
- lib/chupakabra_tools/number_as_text.rb
|
76
80
|
- lib/chupakabra_tools/predefined_time_intervals.rb
|
81
|
+
- lib/chupakabra_tools/security.rb
|
77
82
|
- lib/chupakabra_tools/time_interval.rb
|
83
|
+
- lib/chupakabra_tools/validattions.rb
|
78
84
|
- lib/chupakabra_tools/version.rb
|
79
85
|
homepage: ''
|
80
86
|
licenses: []
|