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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3bc830058c7c1818c8651133243dbd9f425c426e5cd95893edcfdc04a11a930
4
- data.tar.gz: a9b315582d1840909f0031ca34312fdf02fb3710da8c8a66114ea2a9296e5e27
3
+ metadata.gz: ec20ea2bc4315db90f207d91f183f9ed950166605ba547405716168f3f544d1a
4
+ data.tar.gz: 9731a41f9b1cb097c098d9c694d8d191a2b7b2d2995606998c6dac1d935d32ab
5
5
  SHA512:
6
- metadata.gz: e3d27ecad4628aef4f26b8a202b018f4df423d37883c90e83269fb79e6660b2b15ebb5508cfdcb7529d589ad83a9517a4792de10757da7065f8bfd666d8c0fc1
7
- data.tar.gz: 7d9422adb57fa00358058f7682da4b76a5bd3757bf3304e7054cc7bede81f0dd34db2ec5e014396af5d8b2da36908394d3c8e371a23cc35e64a0b8df622cf1bd
6
+ metadata.gz: 7bccd16b584d70f285d29e6073cba494bfcf371e7e2d22ed2c75ea6d067b1f37502fccfb87dd7000cdd09e73a378f5fc469a9da7ef37cd68fa8ef31e8eff1cc4
7
+ data.tar.gz: c69102883e0ed3a007e6d3443505b14d434c2d8a61760eee30c70452ed3372d9b0760b133ce98d0c77c8344a490e9e510fbcc965c63d9784ca33c409b76d3aee
data/.DS_Store ADDED
Binary file
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://gems.ruby-china.com/'
2
+
3
+ # Specify your gem's dependencies in shop_common.gemspec
4
+ gemspec
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
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/lib/.DS_Store ADDED
Binary file
data/lib/yol_common.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "yol_common/version"
2
+ require "yol_common/helper"
3
+ require "yol_common/validator"
4
+ require "yol_common/range"
5
+
6
+
7
+ module YolCommon
8
+
9
+ end
@@ -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,9 @@
1
+ require 'date'
2
+
3
+ class Range
4
+ def intersection(other)
5
+ return nil if (self.max < other.begin or other.max < self.begin)
6
+ [self.begin,other.begin].max..[self.max,other.max].min
7
+ end
8
+ alias_method :&,:intersection
9
+ 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则会报错:inval​id by​te se​quenc​e 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
@@ -0,0 +1,3 @@
1
+ module YolCommon
2
+ VERSION = "0.0.2"
3
+ end
@@ -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.1
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