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.
@@ -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
@@ -0,0 +1,10 @@
1
+ #encoding: utf-8
2
+ module ChupakabraTools::Validations
3
+ def self.russian_letters_template
4
+ /^[а-яА-Я\ ]+$/
5
+ end
6
+
7
+ def russian_letters_and_digits
8
+ /^[а-яА-Я0-9\ ,;.\-]+$/
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module ChupakabraTools
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  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
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-22 00:00:00.000000000 Z
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: []