enotype 0.2.0 → 0.3.0

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: 696aaec3692ebde4b659d55dfa9204c518c1ef79dbd1cb3e471b8adfefd3b2d3
4
- data.tar.gz: 43ac82acba4c279448ce1772df426e7c5ea3171407491807d16255736e5401b6
3
+ metadata.gz: 7c84e902e9b398c4d93cc534301ee414c6dda73eecd051088d0d050e15a2bd65
4
+ data.tar.gz: c5c47fe3b59804e2b1b13093aedec95c6a73a499c9189ab38d4fb560457ac505
5
5
  SHA512:
6
- metadata.gz: 98e65e3c1ab680317b0d7c2f6fe467a21fb3aa8511e247c8eec49527072e4a24969d7e2f21ff5db911f16e3f168f164cfdf4d8feece7358ab69ff125bed6927c
7
- data.tar.gz: 5ee2dec7a1fd2c962006a3481e845521ad03fc4ca0a6a931ec849a5913fc2d7fb8474b5b532814967fda8dc15aa220ab829861e95e5461850f3ce26fcb799785
6
+ metadata.gz: 2c56dae8fca628ca7242adc567b388c5e7e587df97d141bddcedb9c8ec3407a11a511950d1bc6bd97334437044c0f0cbd696903a42875847dfa3c63f75801d7c
7
+ data.tar.gz: af234ae4de9952567ee6c2bfeb90b445e2537209f7d071a3a49d929e80f024300b69992ca291e1b2b733d3aa648904583350bf3c8bf12c1f6c3e8210d4525cb2
data/README.md CHANGED
@@ -166,6 +166,21 @@ Enotype::integer('42') # returns 42
166
166
  `'42,0'` raises an exception.
167
167
  `'4 2'` raises an exception.
168
168
  `'fortytwo'` raises an exception.
169
+ ### ipv4
170
+
171
+ ```ruby
172
+ require 'enotype'
173
+
174
+ Enotype::ipv4('0.0.0.0') # returns '0.0.0.0'
175
+ ```
176
+
177
+ `'0.0.0.0'` returns `'0.0.0.0'`.
178
+ `'255.255.255.255'` returns `'255.255.255.255'`.
179
+ `'192.168.0.1'` returns `'192.168.0.1'`.
180
+ `'10.10.10.10'` returns `'10.10.10.10'`.
181
+ `'255.255.255.256'` raises an exception.
182
+ `'localhost'` raises an exception.
183
+ `'4.staging.production.lan'` raises an exception.
169
184
  ### json
170
185
 
171
186
  ```ruby
data/lib/enotype/de.rb CHANGED
@@ -6,6 +6,7 @@ DATETIME_REGEXP = /^\s*(\d{4})(?:-(\d\d)(?:-(\d\d)(?:T(\d\d):(\d\d)(?::(\d\d)(?:
6
6
  EMAIL_REGEXP = /^\s*[^@\s]+@[^@\s]+\.[^@\s]+\s*$/
7
7
  FLOAT_REGEXP = /^\s*-?\d+(\.\d+)?\s*$/
8
8
  INTEGER_REGEXP = /^\s*-?\d+\s*$/
9
+ IPV4_REGEXP = /^\s*((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))\s*$/
9
10
  LAT_LNG_REGEXP = /^\s*(-?\d{1,3}(?:\.\d+)?)\s*,\s*(-?\d{1,3}(?:\.\d+)?)\s*$/
10
11
  SLUG_REGEXP = /^[0-9a-z\-_]+$/
11
12
  URL_REGEXP = /^\s*https?:\/\/[^\s.]+\.\S+\s*$/
@@ -80,6 +81,18 @@ module Enotype
80
81
  value.to_i
81
82
  end
82
83
 
84
+ def self.ipv4(value)
85
+ match = value.match(IPV4_REGEXP)
86
+
87
+ return match[1] if match &&
88
+ match[2].to_i.between?(0, 255) &&
89
+ match[3].to_i.between?(0, 255) &&
90
+ match[4].to_i.between?(0, 255) &&
91
+ match[5].to_i.between?(0, 255)
92
+
93
+ raise 'Eine valide IPv4 Adresse ist erforderlich, zum Beispiel \'192.168.0.1\'.'
94
+ end
95
+
83
96
  def self.json(value)
84
97
  begin
85
98
  JSON.parse(value)
data/lib/enotype/en.rb CHANGED
@@ -6,6 +6,7 @@ DATETIME_REGEXP = /^\s*(\d{4})(?:-(\d\d)(?:-(\d\d)(?:T(\d\d):(\d\d)(?::(\d\d)(?:
6
6
  EMAIL_REGEXP = /^\s*[^@\s]+@[^@\s]+\.[^@\s]+\s*$/
7
7
  FLOAT_REGEXP = /^\s*-?\d+(\.\d+)?\s*$/
8
8
  INTEGER_REGEXP = /^\s*-?\d+\s*$/
9
+ IPV4_REGEXP = /^\s*((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))\s*$/
9
10
  LAT_LNG_REGEXP = /^\s*(-?\d{1,3}(?:\.\d+)?)\s*,\s*(-?\d{1,3}(?:\.\d+)?)\s*$/
10
11
  SLUG_REGEXP = /^[0-9a-z\-_]+$/
11
12
  URL_REGEXP = /^\s*https?:\/\/[^\s.]+\.\S+\s*$/
@@ -80,6 +81,18 @@ module Enotype
80
81
  value.to_i
81
82
  end
82
83
 
84
+ def self.ipv4(value)
85
+ match = value.match(IPV4_REGEXP)
86
+
87
+ return match[1] if match &&
88
+ match[2].to_i.between?(0, 255) &&
89
+ match[3].to_i.between?(0, 255) &&
90
+ match[4].to_i.between?(0, 255) &&
91
+ match[5].to_i.between?(0, 255)
92
+
93
+ raise 'A valid IPv4 address is required, for instance \'192.168.0.1\'.'
94
+ end
95
+
83
96
  def self.json(value)
84
97
  begin
85
98
  JSON.parse(value)
data/lib/enotype/es.rb CHANGED
@@ -6,6 +6,7 @@ DATETIME_REGEXP = /^\s*(\d{4})(?:-(\d\d)(?:-(\d\d)(?:T(\d\d):(\d\d)(?::(\d\d)(?:
6
6
  EMAIL_REGEXP = /^\s*[^@\s]+@[^@\s]+\.[^@\s]+\s*$/
7
7
  FLOAT_REGEXP = /^\s*-?\d+(\.\d+)?\s*$/
8
8
  INTEGER_REGEXP = /^\s*-?\d+\s*$/
9
+ IPV4_REGEXP = /^\s*((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))\s*$/
9
10
  LAT_LNG_REGEXP = /^\s*(-?\d{1,3}(?:\.\d+)?)\s*,\s*(-?\d{1,3}(?:\.\d+)?)\s*$/
10
11
  SLUG_REGEXP = /^[0-9a-z\-_]+$/
11
12
  URL_REGEXP = /^\s*https?:\/\/[^\s.]+\.\S+\s*$/
@@ -80,6 +81,18 @@ module Enotype
80
81
  value.to_i
81
82
  end
82
83
 
84
+ def self.ipv4(value)
85
+ match = value.match(IPV4_REGEXP)
86
+
87
+ return match[1] if match &&
88
+ match[2].to_i.between?(0, 255) &&
89
+ match[3].to_i.between?(0, 255) &&
90
+ match[4].to_i.between?(0, 255) &&
91
+ match[5].to_i.between?(0, 255)
92
+
93
+ raise 'Se requiere una valida dirección IPv4, por ejemplo \'192.168.0.1\'.'
94
+ end
95
+
83
96
  def self.json(value)
84
97
  begin
85
98
  JSON.parse(value)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enotype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Repp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-20 00:00:00.000000000 Z
11
+ date: 2019-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,8 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.8'
27
- description: Validation and conversion of `string` representations into language-native
28
- types
27
+ description: A cross-language type library
29
28
  email: simon@fdpl.io
30
29
  executables: []
31
30
  extensions: []
@@ -40,7 +39,12 @@ files:
40
39
  homepage: https://eno-lang.org/enotype/
41
40
  licenses:
42
41
  - MIT
43
- metadata: {}
42
+ metadata:
43
+ bug_tracker_uri: https://github.com/eno-lang/enotype/issues
44
+ changelog_uri: https://github.com/eno-lang/enotype/CHANGELOG.md
45
+ documentation_uri: https://eno-lang.org/enotype/
46
+ homepage_uri: https://eno-lang.org/enotype/
47
+ source_code_uri: https://github.com/eno-lang/enotype/
44
48
  post_install_message:
45
49
  rdoc_options: []
46
50
  require_paths:
@@ -49,15 +53,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
53
  requirements:
50
54
  - - ">="
51
55
  - !ruby/object:Gem::Version
52
- version: 2.3.0
56
+ version: 2.4.0
53
57
  required_rubygems_version: !ruby/object:Gem::Requirement
54
58
  requirements:
55
59
  - - ">="
56
60
  - !ruby/object:Gem::Version
57
61
  version: '0'
58
62
  requirements: []
59
- rubyforge_project:
60
- rubygems_version: 2.7.8
63
+ rubygems_version: 3.0.3
61
64
  signing_key:
62
65
  specification_version: 4
63
66
  summary: A cross-language type library