yol_common 0.0.1 → 0.0.2
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 +4 -4
- data/.DS_Store +0 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +37 -0
- data/Rakefile +2 -0
- data/lib/.DS_Store +0 -0
- data/lib/yol_common.rb +9 -0
- data/lib/yol_common/helper.rb +35 -0
- data/lib/yol_common/range.rb +9 -0
- data/lib/yol_common/validator.rb +196 -0
- data/lib/yol_common/version.rb +3 -0
- data/yol_common.gemspec +26 -0
- metadata +12 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec20ea2bc4315db90f207d91f183f9ed950166605ba547405716168f3f544d1a
|
4
|
+
data.tar.gz: 9731a41f9b1cb097c098d9c694d8d191a2b7b2d2995606998c6dac1d935d32ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bccd16b584d70f285d29e6073cba494bfcf371e7e2d22ed2c75ea6d067b1f37502fccfb87dd7000cdd09e73a378f5fc469a9da7ef37cd68fa8ef31e8eff1cc4
|
7
|
+
data.tar.gz: c69102883e0ed3a007e6d3443505b14d434c2d8a61760eee30c70452ed3372d9b0760b133ce98d0c77c8344a490e9e510fbcc965c63d9784ca33c409b76d3aee
|
data/.DS_Store
ADDED
Binary file
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
yol_common (0.0.2)
|
5
|
+
oj
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://gems.ruby-china.com/
|
9
|
+
specs:
|
10
|
+
diff-lcs (1.4.2)
|
11
|
+
oj (3.11.3)
|
12
|
+
rake (13.0.3)
|
13
|
+
rspec (3.8.0)
|
14
|
+
rspec-core (~> 3.8.0)
|
15
|
+
rspec-expectations (~> 3.8.0)
|
16
|
+
rspec-mocks (~> 3.8.0)
|
17
|
+
rspec-core (3.8.0)
|
18
|
+
rspec-support (~> 3.8.0)
|
19
|
+
rspec-expectations (3.8.3)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.8.0)
|
22
|
+
rspec-mocks (3.8.0)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.8.0)
|
25
|
+
rspec-support (3.8.0)
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
bundler
|
32
|
+
rake
|
33
|
+
rspec
|
34
|
+
yol_common!
|
35
|
+
|
36
|
+
BUNDLED WITH
|
37
|
+
2.1.4
|
data/Rakefile
ADDED
data/lib/.DS_Store
ADDED
Binary file
|
data/lib/yol_common.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'oj'
|
3
|
+
module YolCommon
|
4
|
+
|
5
|
+
def test(name)
|
6
|
+
name
|
7
|
+
end
|
8
|
+
|
9
|
+
# 重复范围: 支持日期/数字等所有格式
|
10
|
+
def duplicate_periods(periods)
|
11
|
+
duplicate_periods = []
|
12
|
+
periods.each do |a|
|
13
|
+
a_index = periods.index(a)
|
14
|
+
temp_periods = periods.clone
|
15
|
+
temp_periods.delete_at(a_index)
|
16
|
+
temp_periods.each do |b|
|
17
|
+
result = a & b
|
18
|
+
duplicate_periods << result if result
|
19
|
+
end
|
20
|
+
end
|
21
|
+
duplicate_periods.uniq
|
22
|
+
end
|
23
|
+
|
24
|
+
# 计算量日期间的工作日
|
25
|
+
def business_days_between(date1, date2)
|
26
|
+
business_days = 0
|
27
|
+
date = date2
|
28
|
+
while date > date1
|
29
|
+
business_days = business_days + 1 unless date.saturday? or date.sunday?
|
30
|
+
date = date - 1.day
|
31
|
+
end
|
32
|
+
business_days
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
require 'uri'
|
2
|
+
module YolCommon
|
3
|
+
|
4
|
+
MOBILE_REGEX = Regexp.new('palm|blackberry|nokia|phone|midp|mobi|symbian|chtml|ericsson|minimo|audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|webos|amoi|novarra|cdm|alcatel|pocket|iphone|mobileexplorer|mobile|zune')
|
5
|
+
|
6
|
+
class Validator
|
7
|
+
|
8
|
+
# 手机
|
9
|
+
def self.is_mobile_agent?(agent)
|
10
|
+
return true if agent.to_s.downcase =~ MOBILE_REGEX
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
# 邮箱
|
15
|
+
def self.email?(email)
|
16
|
+
return false if email.length <= 3 || email.length >= 255
|
17
|
+
# email如包含\xBF则会报错:invalid byte sequence in UTF-8,在ruby2.1可以用scrub函数去掉错误编码的字符
|
18
|
+
return true if email.to_s =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i rescue nil
|
19
|
+
false
|
20
|
+
end
|
21
|
+
|
22
|
+
# 手机
|
23
|
+
def self.mobile?(mobile)
|
24
|
+
return true if mobile.to_s =~ /^(13|14|15|16|17|18|19)\d{9}$/
|
25
|
+
false
|
26
|
+
end
|
27
|
+
|
28
|
+
# 密码
|
29
|
+
def self.password?(pwd)
|
30
|
+
return true if pwd.length >=4 && pwd.length <= 40
|
31
|
+
false
|
32
|
+
end
|
33
|
+
|
34
|
+
# 静态文件名
|
35
|
+
def self.asset_file_name?(file_name)
|
36
|
+
ext = File.extname(file_name)
|
37
|
+
file_name = File.basename(file_name, ext) unless ext.empty?
|
38
|
+
return true if file_name =~ /^[\w\.\-\_]+$/
|
39
|
+
false
|
40
|
+
end
|
41
|
+
|
42
|
+
# 静态文件后缀
|
43
|
+
def self.asset_file_ext?(file_name)
|
44
|
+
name = file_name.to_s.downcase
|
45
|
+
ext = File.extname(name)
|
46
|
+
return false if ext.empty?
|
47
|
+
%w{.eot .woff .woff2 .ttf .svg .js .css .htc .ico .json .otf}.include?(ext)
|
48
|
+
end
|
49
|
+
|
50
|
+
# 图片文件名字
|
51
|
+
def self.image_asset_file_name?(file_name)
|
52
|
+
ext = File.extname(file_name)
|
53
|
+
file_name = File.basename(file_name, ext) unless ext.empty?
|
54
|
+
return true if file_name =~ /^[\w\-\_]+$/
|
55
|
+
false
|
56
|
+
end
|
57
|
+
|
58
|
+
# url
|
59
|
+
def self.url?(url)
|
60
|
+
# return true if url.to_s =~ /https?:\/\/[\S]+/
|
61
|
+
return true if url.to_s.scan(URI.regexp).length > 0
|
62
|
+
false
|
63
|
+
end
|
64
|
+
|
65
|
+
# 域名
|
66
|
+
def self.domain_name?(name)
|
67
|
+
return false if name.length < 1 || name.length > 63
|
68
|
+
return true if name.to_s =~ /^[a-z0-9-]+$/
|
69
|
+
false
|
70
|
+
end
|
71
|
+
|
72
|
+
# 图片类型
|
73
|
+
def self.image?(file_name)
|
74
|
+
name = file_name.to_s.downcase
|
75
|
+
ext = File.extname(name)
|
76
|
+
return false if ext.empty?
|
77
|
+
%w{.jpg .jpeg .gif .png .bmp .webp .ico}.include?(ext)
|
78
|
+
end
|
79
|
+
|
80
|
+
# icon
|
81
|
+
def self.icon?(file_name)
|
82
|
+
name = file_name.to_s.downcase
|
83
|
+
ext = File.extname(name)
|
84
|
+
return false if ext.empty?
|
85
|
+
%w{.ico}.include?(ext)
|
86
|
+
end
|
87
|
+
|
88
|
+
# json
|
89
|
+
def self.json?(file_name)
|
90
|
+
name = file_name.to_s.downcase
|
91
|
+
ext = File.extname(name)
|
92
|
+
return false if ext.empty?
|
93
|
+
['.json'].include?(ext)
|
94
|
+
end
|
95
|
+
|
96
|
+
# 日期
|
97
|
+
def self.date?(date)
|
98
|
+
begin
|
99
|
+
Date.parse(date)
|
100
|
+
return true
|
101
|
+
rescue
|
102
|
+
return false
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
# 整数
|
107
|
+
def self.integer?(integer)
|
108
|
+
begin
|
109
|
+
Integer(integer)
|
110
|
+
return true
|
111
|
+
rescue
|
112
|
+
return false
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# float
|
117
|
+
def self.float?(float)
|
118
|
+
begin
|
119
|
+
Float(float)
|
120
|
+
return true
|
121
|
+
rescue
|
122
|
+
return false
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# 验证身份证号码
|
127
|
+
def self.indentity_card?(card)
|
128
|
+
arr_int = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
|
129
|
+
arr_ch = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
|
130
|
+
|
131
|
+
case card.size
|
132
|
+
when 15
|
133
|
+
chars = card.chars.to_a
|
134
|
+
cardtemp_15 = 0
|
135
|
+
chars.insert(6,'1','9')
|
136
|
+
17.times do |i|
|
137
|
+
cardtemp_15 += (chars[i].to_i * arr_int[i])
|
138
|
+
end
|
139
|
+
chars << arr_ch[cardtemp_15 % 11]
|
140
|
+
when 18
|
141
|
+
chars = card.chars.to_a
|
142
|
+
else
|
143
|
+
return false
|
144
|
+
end
|
145
|
+
|
146
|
+
cardtemp = 0
|
147
|
+
17.times do |i|
|
148
|
+
cardtemp += chars[i].to_i * arr_int[i]
|
149
|
+
end
|
150
|
+
arr_ch[cardtemp % 11].eql?(chars.last)
|
151
|
+
end
|
152
|
+
|
153
|
+
# 银行卡
|
154
|
+
def self.bank_card?(card)
|
155
|
+
return true if card.to_s =~ /^\d{9,20}$/
|
156
|
+
return false
|
157
|
+
end
|
158
|
+
|
159
|
+
# 方法说明
|
160
|
+
def self.under_size?(size_in_byte, limit_mb)
|
161
|
+
size_in_byte <= limit_mb * 1024 * 1024
|
162
|
+
end
|
163
|
+
|
164
|
+
# 方法说明
|
165
|
+
def self.price?(str)
|
166
|
+
return true if str.to_s =~ /^[0-9]+([.]{1}[0-9]{1,2})?$/
|
167
|
+
false
|
168
|
+
end
|
169
|
+
|
170
|
+
# 方法说明
|
171
|
+
def self.folder_name?(str)
|
172
|
+
return true if str.to_s =~ /^[^\\\/:*?"<>|]{1,}$/
|
173
|
+
false
|
174
|
+
end
|
175
|
+
|
176
|
+
# 方法说明
|
177
|
+
#
|
178
|
+
# @param 参数说明
|
179
|
+
# @return [返回数据类型] 返回说明
|
180
|
+
def self.positive_integer?(str)
|
181
|
+
return true if str.to_s =~ /^(0|[1-9]\d*)$/
|
182
|
+
false
|
183
|
+
end
|
184
|
+
|
185
|
+
# 方法说明
|
186
|
+
def self.max_length?(target, length = 255)
|
187
|
+
target.to_s.length > length
|
188
|
+
end
|
189
|
+
|
190
|
+
# 方法说明
|
191
|
+
def self.min_length?(target, length = 10)
|
192
|
+
target.to_s.length < length
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
196
|
+
end
|
data/yol_common.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'yol_common/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "yol_common"
|
8
|
+
spec.version = YolCommon::VERSION
|
9
|
+
spec.authors = ["luojie2019"]
|
10
|
+
spec.email = ["luojie@yolanda.hk@yeezon.com"]
|
11
|
+
spec.summary = %q{common helpers}
|
12
|
+
spec.description = %q{private gem}
|
13
|
+
spec.homepage = "https://github.com/luojie2019/yol_common"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
|
25
|
+
spec.add_dependency 'oj'
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yol_common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- luojie2019
|
@@ -73,9 +73,20 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
+
- ".DS_Store"
|
76
77
|
- ".gitignore"
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
77
80
|
- LICENSE
|
78
81
|
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- lib/.DS_Store
|
84
|
+
- lib/yol_common.rb
|
85
|
+
- lib/yol_common/helper.rb
|
86
|
+
- lib/yol_common/range.rb
|
87
|
+
- lib/yol_common/validator.rb
|
88
|
+
- lib/yol_common/version.rb
|
89
|
+
- yol_common.gemspec
|
79
90
|
homepage: https://github.com/luojie2019/yol_common
|
80
91
|
licenses:
|
81
92
|
- MIT
|