chupakabra_tools 0.0.4 → 0.0.5
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.
- 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: []
|