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 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