yol_common 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|