wolf_core 1.0.115 → 1.0.116

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ff74bb9eba53a4540acdcb148900e1aea1de729236f1bc3b891439b0e47e012
4
- data.tar.gz: bab2c98d8e5e3c5aa2b0e855d9c3dc4a0d69b539dcb5be35a85b89079091ceab
3
+ metadata.gz: 83e38b05b19b3452e9a7095eddfcc274756ff539ff764c815193a0a317c6b8c4
4
+ data.tar.gz: 07c1127692b7ffd1d3e905ccf837b71c29158d530cf258417f9ff47c663eead3
5
5
  SHA512:
6
- metadata.gz: 683bf83c11ab5b0aedd35efc765310329c52aed548387d38f24e0870e961ff4e78094f5892e713a817deaff075bea1ad9a1cb9d8a1b3b17223137d43abe1bf2a
7
- data.tar.gz: 07ac11a715aa37435bef097acdf02ff1480f2a10e81d85d48eb7537c976800f15ea442cb891ee6409f3832b723168ab3254d310085558f72ec06d06ab4495c57
6
+ metadata.gz: 40e16d3c17496df8c270e4f34d69cf509163f412449dfeed9995628e9f20cc7e429e58e85668056941d140af55eef0b03f10abf2853f0e6b158b81d19cfafa58
7
+ data.tar.gz: f8a047a5a6bde63b497145af2cbf145f778d16d3ed0aa4ce73f637834e9f5b29181d13f960fccc0ae463bf4e887dc0a1223e5b73a73aed19a61cb8f3d83ccf26
@@ -2,42 +2,49 @@ module WolfCore
2
2
  module StringUtils
3
3
  def camelcase_to_spaces(str)
4
4
  return if str.nil?
5
+
5
6
  str.to_s.gsub(/([A-Z])/, ' \1').strip.downcase.capitalize
6
7
  end
7
8
 
8
9
  def to_snake_case(str)
9
10
  return if str.nil?
10
- str.to_s.gsub(/\s+/, '_').downcase
11
+
12
+ str.to_s.gsub(/\s+/, "_").downcase
11
13
  end
12
14
 
13
15
  def to_kebab_case(str)
14
16
  return if str.nil?
15
- str.to_s.gsub(/\s+/, '-').downcase
17
+
18
+ str.to_s.gsub(/\s+/, "-").downcase
16
19
  end
17
20
 
18
21
  def remove_non_alphanumeric_chars(str, exceptions: nil)
19
22
  return if str.nil?
23
+
20
24
  exceptions ||= []
21
25
  exceptions = Array(exceptions)
22
26
  escaped_exceptions = exceptions.map { |char| Regexp.escape(char) }.join
23
27
  regex = /[^a-zA-Z0-9#{escaped_exceptions}]/
24
- str.to_s.gsub(regex, '')
28
+ str.to_s.gsub(regex, "")
25
29
  end
26
30
 
27
31
  def clean_phone_number(phone)
28
32
  return if phone.nil?
29
- cleaned_phone = phone.to_s.gsub(/\D/, '')
30
- last_ten_digits = cleaned_phone[-10, 10]
31
- last_ten_digits
33
+
34
+ cleaned_phone = phone.to_s.gsub(/\D/, "")
35
+ cleaned_phone[-10, 10]
32
36
  end
33
37
 
34
38
  def remove_blank_spaces(str)
35
39
  return if str.nil?
36
- str.to_s.gsub(/\s+/, '')
40
+
41
+ str.to_s.gsub(/\s+/, "")
37
42
  end
38
43
 
39
44
  def hash_str_to_json(hash_str)
40
- hash_str&.to_s&.gsub('=>', ':')&.gsub('\"', '"')&.gsub('{', '{')&.gsub('}', '}')&.gsub(/(\w+)(?=\s*:)/) { |key| "\"#{key}\"" }
45
+ hash_str&.to_s&.gsub("=>", ":")&.gsub('\"', '"')&.gsub("{", "{")&.gsub("}", "}")&.gsub(/(\w+)(?=\s*:)/) do |key|
46
+ "\"#{key}\""
47
+ end
41
48
  end
42
49
 
43
50
  def deep_parse_json(input)
@@ -54,8 +61,9 @@ module WolfCore
54
61
 
55
62
  def valid_url?(url)
56
63
  return false unless url.instance_of?(String)
64
+
57
65
  uri = URI.parse(url)
58
- uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS) && !uri.host.nil?
66
+ uri.is_a?(URI::HTTP) || (uri.is_a?(URI::HTTPS) && !uri.host.nil?)
59
67
  rescue URI::InvalidURIError
60
68
  false
61
69
  end
@@ -63,8 +71,53 @@ module WolfCore
63
71
  def base64_encoded?(str)
64
72
  return false unless str.is_a?(String) && str.length % 4 == 0
65
73
 
66
- base64_regex = /^[A-Za-z0-9+\/]+={0,2}$/
74
+ base64_regex = %r{^[A-Za-z0-9+/]+={0,2}$}
67
75
  str.match?(base64_regex)
68
76
  end
77
+
78
+ def split_address(address_string)
79
+ address_string = address_string&.dup
80
+ address_string ||= ""
81
+ address = { street: nil, city: nil, state: nil, zip: nil }
82
+ city_and_state_regex_found = false
83
+
84
+ city_and_state_regex = /\b([A-Za-z\s]+),\s*([A-Za-z]{2})\b/
85
+ zip_regex = /\d{5}(?:-\d{4})?$/
86
+ street_regex = /\A([^,]+)/
87
+ state_regex = /\b[A-Za-z]{2}\b/
88
+ city_regex = /\b[a-zA-Z0-9\s]{2,}\b/
89
+
90
+ if match_data = address_string.match(city_and_state_regex)
91
+ address[:city] = match_data[1].strip
92
+ address[:state] = match_data[2].strip
93
+ address_string.sub!(city_and_state_regex, "")
94
+ city_and_state_regex_found = true
95
+ end
96
+
97
+ if zip_match = address_string.match(zip_regex)
98
+ address[:zip] = zip_match[0].strip
99
+ address_string.sub!(zip_regex, "")
100
+ end
101
+
102
+ if street_match = address_string.match(street_regex)
103
+ address[:street] = street_match[0].strip
104
+ address[:street] = nil if address[:street].empty?
105
+ address_string.sub!(street_regex, "")
106
+ end
107
+
108
+ return address if city_and_state_regex_found
109
+
110
+ if state_match = address_string.match(state_regex)
111
+ address[:state] = state_match[0].strip
112
+ address_string.sub!(state_regex, "")
113
+ end
114
+
115
+ if city_match = address_string.match(city_regex)
116
+ address[:city] = city_match[0].strip
117
+ address_string.sub!(city_regex, "")
118
+ end
119
+
120
+ address
121
+ end
69
122
  end
70
- end
123
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WolfCore
4
- VERSION = "1.0.115"
4
+ VERSION = "1.0.116"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wolf_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.115
4
+ version: 1.0.116
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Roncallo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-04-22 00:00:00.000000000 Z
11
+ date: 2025-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty