enotype 0.2.0 → 0.3.0

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