uri_format_validator 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,13 +7,13 @@ before_install:
7
7
 
8
8
  script:
9
9
  - bundle exec rspec
10
+ - bundle exec cucumber
10
11
 
11
12
  rvm:
12
13
  - "2.4"
13
14
  - "2.3"
14
15
  - "2.2.2"
15
16
  - "ruby-head"
16
- - "rbx-3"
17
17
  - "jruby"
18
18
  - "jruby-head"
19
19
 
@@ -1,6 +1,13 @@
1
1
  == Not released yet
2
2
 
3
- == 1.0.0
3
+ == 0.2.0
4
+
5
+ * Drop support for Rubinius
6
+ * Rename validator from `uri_format` to `uri`
7
+ * Add first Cucumber + Aruba living documentation
8
+ * Switch to Addressable's URI parser
9
+
10
+ == 0.1.0
4
11
 
5
12
  * Improve error message in English, add Polish translation
6
13
  * First useful version
@@ -31,7 +31,7 @@ in your models, like that:
31
31
  [source,ruby]
32
32
  ----
33
33
  class User < ActiveRecord::Base
34
- validates :home_site_url, uri_format: true
34
+ validates :home_site_url, uri: true
35
35
  end
36
36
  ----
37
37
 
@@ -53,28 +53,28 @@ and fragment.
53
53
 
54
54
  [source,ruby]
55
55
  ----
56
- validates :home_site_url, uri_format: { scheme: /https?/ }
57
- validates :home_site_url, uri_format: { scheme: %w[ssh telnet] }
56
+ validates :home_site_url, uri: { scheme: /https?/ }
57
+ validates :home_site_url, uri: { scheme: %w[ssh telnet] }
58
58
 
59
- validates :home_site_url, uri_format: { authority: /\.example\./ }
60
- validates :home_site_url, uri_format: { authority: %w[example.com example.test] }
59
+ validates :home_site_url, uri: { authority: /\.example\./ }
60
+ validates :home_site_url, uri: { authority: %w[example.com example.test] }
61
61
 
62
62
  # require path component (`/` is not enough)
63
- validates :home_site_url, uri_format: { path: true }
63
+ validates :home_site_url, uri: { path: true }
64
64
  # disallow presence of path component
65
- validates :home_site_url, uri_format: { path: false }
65
+ validates :home_site_url, uri: { path: false }
66
66
  # match path against regular expression
67
- validates :home_site_url, uri_format: { path: /regexp/ }
67
+ validates :home_site_url, uri: { path: /regexp/ }
68
68
 
69
69
  # require query component
70
- validates :home_site_url, uri_format: { query: true }
70
+ validates :home_site_url, uri: { query: true }
71
71
  # disallow presence of query component
72
- validates :home_site_url, uri_format: { query: false }
72
+ validates :home_site_url, uri: { query: false }
73
73
 
74
74
  # require fragment component
75
- validates :home_site_url, uri_format: { fragment: true }
75
+ validates :home_site_url, uri: { fragment: true }
76
76
  # disallow presence of fragment component
77
- validates :home_site_url, uri_format: { fragment: false }
77
+ validates :home_site_url, uri: { fragment: false }
78
78
  ----
79
79
 
80
80
  When `scheme` option is unspecified, only http and https are allowed.
@@ -86,7 +86,7 @@ to allow relative and disallow absolute URLs:
86
86
 
87
87
  [source,ruby]
88
88
  ----
89
- validates :home_site_url, uri_format: { authority: false }
89
+ validates :home_site_url, uri: { authority: false }
90
90
  ----
91
91
 
92
92
  === Reachable URLs
@@ -97,7 +97,7 @@ with 2xx status code. Otherwise, given value is considered invalid.
97
97
 
98
98
  [source,ruby]
99
99
  ----
100
- validates :home_site_url, uri_format: { retrievable: true }
100
+ validates :home_site_url, uri: { retrievable: true }
101
101
  ----
102
102
 
103
103
  === Error messages
@@ -106,7 +106,7 @@ You can also override the default error message:
106
106
 
107
107
  [source,ruby]
108
108
  ----
109
- validates :my_url_attribute, uri_format: true, message: 'is not a valid URL'
109
+ validates :my_url_attribute, uri: true, message: 'is not a valid URL'
110
110
  ----
111
111
 
112
112
  Alternatively, you can provide your own localization string for
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'cucumber' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ require "rubygems"
16
+ require "bundler/setup"
17
+
18
+ load Gem.bin_path("cucumber", "cucumber")
@@ -1,7 +1,10 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
- gemspec path: '..'
3
+ gemspec path: ".."
4
4
 
5
- gem 'codecov', require: false, group: :test
6
- gem 'rubocop', require: false
7
- gem 'simplecov', require: false, group: :test
5
+ # These ones are specified here because we don't want them to be autorequired
6
+ # for some reasons. For instance, Rubocop won't work under Rubinius
7
+ # (dependencies do utilize refinements).
8
+ gem "codecov", require: false
9
+ gem "rubocop", require: false
10
+ gem "simplecov", require: false
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', '~> 4.0.0'
4
+ gem "activemodel", "~> 4.0.0"
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', '~> 4.1.0'
4
+ gem "activemodel", "~> 4.1.0"
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', '~> 4.2.0'
4
+ gem "activemodel", "~> 4.2.0"
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', '~> 5.0.0'
4
+ gem "activemodel", "~> 5.0.0"
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', '~> 5.1.0'
4
+ gem "activemodel", "~> 5.1.0"
@@ -1,3 +1,4 @@
1
- eval File.read(File.expand_path('../common.gemfile', __FILE__))
1
+ # rubocop:disable Security/Eval
2
+ eval File.read(File.expand_path("../common.gemfile", __FILE__))
2
3
 
3
- gem 'activemodel', github: 'rails/rails'
4
+ gem "activemodel", github: "rails/rails"
@@ -1,7 +1,7 @@
1
1
  # (c) Copyright 2017 Ribose Inc.
2
2
  #
3
3
 
4
- require "uri_format_validator/validators/uri_format_validator"
4
+ require "uri_format_validator/validators/uri_validator"
5
5
  require "uri_format_validator/validators/helper_methods"
6
6
 
7
7
  module UriFormatValidator
@@ -12,7 +12,7 @@ module UriFormatValidator
12
12
  # validates_uri_format_of :permalink
13
13
  # end
14
14
  def validates_uri_format_of(*attr_names)
15
- validates_with UriFormatValidator, _merge_attributes(attr_names)
15
+ validates_with UriValidator, _merge_attributes(attr_names)
16
16
  end
17
17
  end
18
18
  end
@@ -2,7 +2,7 @@
2
2
  #
3
3
 
4
4
  require "active_model"
5
- require "uri"
5
+ require "addressable"
6
6
  require "active_support/core_ext"
7
7
  require "net/http"
8
8
  require "resolv"
@@ -12,7 +12,7 @@ module UriFormatValidator
12
12
  #
13
13
  # TODO: documentation
14
14
  #
15
- class UriFormatValidator < ::ActiveModel::EachValidator
15
+ class UriValidator < ::ActiveModel::EachValidator
16
16
  SCHEMES = %w[
17
17
  aaa aaas about acap acct cap cid coap coaps crid data dav dict dns
18
18
  example file ftp geo go gopher h323 http https iax icap im imap info ipp
@@ -68,12 +68,9 @@ module UriFormatValidator
68
68
  validate_against_options(uri, :path, :query, :fragment)
69
69
  end
70
70
 
71
- # Warning! The +URI+ method behaviour is inconsistent across VMs.
72
- # For instance, Rubinius allows leading and trailing spaces. Non-nil
73
- # return value doesn't guarantee that URI is indeed well-formed.
74
71
  def string_to_uri(uri_string)
75
- URI(uri_string)
76
- rescue URI::InvalidURIError
72
+ Addressable::URI.parse(uri_string)
73
+ rescue Addressable::URI::InvalidURIError
77
74
  nil
78
75
  end
79
76
 
@@ -2,5 +2,5 @@
2
2
  #
3
3
 
4
4
  module UriFormatValidator
5
- VERSION = "0.1.0".freeze
5
+ VERSION = "0.2.1".freeze
6
6
  end
@@ -25,8 +25,11 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = ">= 2.2.2"
26
26
 
27
27
  spec.add_runtime_dependency "activemodel", ">= 4.0.0", "< 6"
28
+ spec.add_runtime_dependency "addressable", "~> 2.5"
28
29
 
30
+ spec.add_development_dependency "aruba", "~> 0.14"
29
31
  spec.add_development_dependency "bundler", "~> 1.14"
32
+ spec.add_development_dependency "cucumber", "~> 3.0"
30
33
  spec.add_development_dependency "pry"
31
34
  spec.add_development_dependency "rake", "~> 10.0"
32
35
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uri_format_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-03 00:00:00.000000000 Z
11
+ date: 2017-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -30,6 +30,34 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: addressable
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.5'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: aruba
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.14'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.14'
33
61
  - !ruby/object:Gem::Dependency
34
62
  name: bundler
35
63
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +72,20 @@ dependencies:
44
72
  - - "~>"
45
73
  - !ruby/object:Gem::Version
46
74
  version: '1.14'
75
+ - !ruby/object:Gem::Dependency
76
+ name: cucumber
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.0'
47
89
  - !ruby/object:Gem::Dependency
48
90
  name: pry
49
91
  requirement: !ruby/object:Gem::Requirement
@@ -149,11 +191,11 @@ files:
149
191
  - ROADMAP.adoc
150
192
  - Rakefile
151
193
  - bin/console
194
+ - bin/cucumber
152
195
  - bin/rake
153
196
  - bin/rspec
154
197
  - bin/rubocop
155
198
  - bin/setup
156
- - examples/basic.rb
157
199
  - gemfiles/common.gemfile
158
200
  - gemfiles/rails-4.0.gemfile
159
201
  - gemfiles/rails-4.1.gemfile
@@ -168,7 +210,7 @@ files:
168
210
  - lib/uri_format_validator/reacher.rb
169
211
  - lib/uri_format_validator/validators.rb
170
212
  - lib/uri_format_validator/validators/helper_methods.rb
171
- - lib/uri_format_validator/validators/uri_format_validator.rb
213
+ - lib/uri_format_validator/validators/uri_validator.rb
172
214
  - lib/uri_format_validator/version.rb
173
215
  - uri_format_validator.gemspec
174
216
  homepage: https://github.com/riboseinc/uri_format_validator
@@ -1,5 +0,0 @@
1
- class MyModel
2
- validates :favourite_website_url, uri_format: { resolvability: :retrievable }
3
- validates :resume_cv_url, uri_format: { resolvability: :reachable }
4
- validates :friend_website_url, uri_format: { scheme: %w[http https ftp] }
5
- end