nimboids-client_side_validations 3.0.3

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.
Files changed (101) hide show
  1. data/client_side_validations.gemspec +45 -0
  2. data/javascript/rails.validations.js +393 -0
  3. data/lib/client_side_validations.rb +8 -0
  4. data/lib/client_side_validations/action_view.rb +13 -0
  5. data/lib/client_side_validations/action_view/form_builder.rb +64 -0
  6. data/lib/client_side_validations/action_view/form_helper.rb +69 -0
  7. data/lib/client_side_validations/action_view/form_tag_helper.rb +12 -0
  8. data/lib/client_side_validations/active_model.rb +52 -0
  9. data/lib/client_side_validations/active_model/acceptance.rb +10 -0
  10. data/lib/client_side_validations/active_model/exclusion.rb +15 -0
  11. data/lib/client_side_validations/active_model/format.rb +10 -0
  12. data/lib/client_side_validations/active_model/inclusion.rb +15 -0
  13. data/lib/client_side_validations/active_model/length.rb +22 -0
  14. data/lib/client_side_validations/active_model/numericality.rb +26 -0
  15. data/lib/client_side_validations/active_model/presence.rb +10 -0
  16. data/lib/client_side_validations/active_record.rb +11 -0
  17. data/lib/client_side_validations/active_record/middleware.rb +25 -0
  18. data/lib/client_side_validations/active_record/uniqueness.rb +26 -0
  19. data/lib/client_side_validations/core_ext.rb +3 -0
  20. data/lib/client_side_validations/core_ext/range.rb +10 -0
  21. data/lib/client_side_validations/core_ext/regexp.rb +14 -0
  22. data/lib/client_side_validations/formtastic.rb +21 -0
  23. data/lib/client_side_validations/middleware.rb +83 -0
  24. data/lib/client_side_validations/mongoid.rb +9 -0
  25. data/lib/client_side_validations/mongoid/middleware.rb +20 -0
  26. data/lib/client_side_validations/mongoid/uniqueness.rb +26 -0
  27. data/lib/client_side_validations/simple_form.rb +24 -0
  28. data/lib/client_side_validations/version.rb +3 -0
  29. data/lib/generators/client_side_validations/install_generator.rb +22 -0
  30. data/lib/generators/templates/README +7 -0
  31. data/lib/generators/templates/client_side_validations.rb +14 -0
  32. data/test/action_view/cases/helper.rb +152 -0
  33. data/test/action_view/cases/test_helpers.rb +237 -0
  34. data/test/action_view/cases/test_legacy_helpers.rb +150 -0
  35. data/test/action_view/models.rb +3 -0
  36. data/test/action_view/models/comment.rb +35 -0
  37. data/test/action_view/models/post.rb +35 -0
  38. data/test/active_model/cases/helper.rb +4 -0
  39. data/test/active_model/cases/test_acceptance_validator.rb +16 -0
  40. data/test/active_model/cases/test_base.rb +11 -0
  41. data/test/active_model/cases/test_confirmation_validator.rb +16 -0
  42. data/test/active_model/cases/test_exclusion_validator.rb +20 -0
  43. data/test/active_model/cases/test_format_validator.rb +21 -0
  44. data/test/active_model/cases/test_inclusion_validator.rb +21 -0
  45. data/test/active_model/cases/test_length_validator.rb +61 -0
  46. data/test/active_model/cases/test_numericality_validator.rb +46 -0
  47. data/test/active_model/cases/test_presence_validator.rb +16 -0
  48. data/test/active_model/cases/test_validations.rb +151 -0
  49. data/test/active_model/models/person.rb +17 -0
  50. data/test/active_record/cases/helper.rb +12 -0
  51. data/test/active_record/cases/test_base.rb +11 -0
  52. data/test/active_record/cases/test_middleware.rb +150 -0
  53. data/test/active_record/cases/test_uniqueness_validator.rb +45 -0
  54. data/test/active_record/models/guid.rb +7 -0
  55. data/test/active_record/models/user.rb +10 -0
  56. data/test/base_helper.rb +6 -0
  57. data/test/core_ext/cases/test_core_ext.rb +45 -0
  58. data/test/formtastic/cases/helper.rb +2 -0
  59. data/test/formtastic/cases/test_form_builder.rb +11 -0
  60. data/test/formtastic/cases/test_form_helper.rb +22 -0
  61. data/test/generators/cases/test_install_generator.rb +15 -0
  62. data/test/javascript/config.ru +3 -0
  63. data/test/javascript/public/test/callbacks/elementAfter.js +54 -0
  64. data/test/javascript/public/test/callbacks/elementBefore.js +54 -0
  65. data/test/javascript/public/test/callbacks/elementFail.js +70 -0
  66. data/test/javascript/public/test/callbacks/elementPass.js +70 -0
  67. data/test/javascript/public/test/callbacks/formAfter.js +45 -0
  68. data/test/javascript/public/test/callbacks/formBefore.js +45 -0
  69. data/test/javascript/public/test/callbacks/formFail.js +51 -0
  70. data/test/javascript/public/test/callbacks/formPass.js +50 -0
  71. data/test/javascript/public/test/form_builders/validateForm.js +66 -0
  72. data/test/javascript/public/test/form_builders/validateFormtastic.js +54 -0
  73. data/test/javascript/public/test/form_builders/validateSimpleForm.js +57 -0
  74. data/test/javascript/public/test/settings.js +15 -0
  75. data/test/javascript/public/test/validateElement.js +144 -0
  76. data/test/javascript/public/test/validators/acceptance.js +42 -0
  77. data/test/javascript/public/test/validators/confirmation.js +25 -0
  78. data/test/javascript/public/test/validators/exclusion.js +41 -0
  79. data/test/javascript/public/test/validators/format.js +27 -0
  80. data/test/javascript/public/test/validators/inclusion.js +42 -0
  81. data/test/javascript/public/test/validators/length.js +70 -0
  82. data/test/javascript/public/test/validators/numericality.js +140 -0
  83. data/test/javascript/public/test/validators/presence.js +15 -0
  84. data/test/javascript/public/test/validators/uniqueness.js +89 -0
  85. data/test/javascript/public/vendor/jquery.metadata.js +122 -0
  86. data/test/javascript/public/vendor/qunit.css +196 -0
  87. data/test/javascript/public/vendor/qunit.js +1374 -0
  88. data/test/javascript/server.rb +78 -0
  89. data/test/javascript/views/index.erb +20 -0
  90. data/test/javascript/views/layout.erb +21 -0
  91. data/test/middleware/cases/helper.rb +15 -0
  92. data/test/middleware/cases/test_middleware.rb +8 -0
  93. data/test/mongoid/cases/helper.rb +16 -0
  94. data/test/mongoid/cases/test_base.rb +15 -0
  95. data/test/mongoid/cases/test_middleware.rb +68 -0
  96. data/test/mongoid/cases/test_uniqueness_validator.rb +44 -0
  97. data/test/mongoid/models/book.rb +8 -0
  98. data/test/simple_form/cases/helper.rb +2 -0
  99. data/test/simple_form/cases/test_form_builder.rb +14 -0
  100. data/test/simple_form/cases/test_form_helper.rb +22 -0
  101. metadata +435 -0
@@ -0,0 +1,78 @@
1
+ require 'sinatra'
2
+ require 'json'
3
+ require 'ruby-debug'
4
+
5
+ use Rack::Static, :urls => ['/javascript'], :root => File.expand_path('../..', settings.root)
6
+
7
+ helpers do
8
+ def jquery_link version
9
+ if params[:version] == version
10
+ "[#{version}]"
11
+ else
12
+ "<a href='/?version=#{version}'>#{version}</a>"
13
+ end
14
+ end
15
+
16
+ def jquery_src
17
+ if params[:version] == 'edge' then '/vendor/jquery.js'
18
+ else "http://code.jquery.com/jquery-#{params[:version]}.js"
19
+ end
20
+ end
21
+
22
+ def test_base
23
+ names = ['/vendor/qunit.js', 'settings']
24
+ names.map { |name| script_tag name }.join("\n")
25
+ end
26
+
27
+ def test *types
28
+ types.map do |type|
29
+ Dir.glob(File.expand_path("public/test/#{type}", settings.root) + '/*.js').map { |file| File.basename(file) }.map do |file|
30
+ script_tag "/test/#{type}/#{file}"
31
+ end.join("\n")
32
+ end.join("\n")
33
+ end
34
+
35
+ def script_tag src
36
+ src = "/test/#{src}.js" unless src.index('/')
37
+ %(<script src='#{src}' type='text/javascript'></script>)
38
+ end
39
+ end
40
+
41
+ get '/' do
42
+ params[:version] ||= '1.4.4'
43
+ erb :index
44
+ end
45
+
46
+ get '/validators/uniqueness.json' do
47
+ content_type 'application/json'
48
+
49
+ if scope = params[:scope]
50
+ if scope[:name] == 'test name' || scope[:name] == 'taken name'
51
+ status 200
52
+ 'false'
53
+ else
54
+ status 404
55
+ 'true'
56
+ end
57
+ elsif params[:case_sensitive] == 'false' && (params[:user][:email] || params[:users][:email]) == 'taken@test.com'
58
+ status 200
59
+ 'false'
60
+ else
61
+ status 404
62
+ 'true'
63
+ end
64
+
65
+ end
66
+
67
+ post '/users' do
68
+ data = { :params => params }.update(request.env)
69
+ payload = data.to_json.gsub('<', '&lt;').gsub('>', '&gt;')
70
+ <<-HTML
71
+ <script>
72
+ if (window.top && window.top !== window)
73
+ window.top.jQuery.event.trigger('iframe:loaded', #{payload})
74
+ </script>
75
+ <p id="response">Form submitted</p>
76
+ HTML
77
+ end
78
+
@@ -0,0 +1,20 @@
1
+ <% @title = "client-side-validations test" %>
2
+
3
+ <%= test_base %>
4
+ <%= script_tag 'validateElement' %>
5
+ <%= test :validators, :form_builders, :callbacks %>
6
+
7
+ <h1 id="qunit-header"><%= @title %></h1>
8
+ <div id="jquery-version">
9
+ jQuery version:
10
+ <% %w{1.4.1 1.4.2 1.4.3 1.4.4 1.5 1.5.1}.each do |version| %>
11
+ <%= jquery_link version %> •
12
+ <% end %>
13
+ <%= jquery_link 'edge' if File.exist?(settings.root + '/public/vendor/jquery.js') %>
14
+ </div>
15
+ <h2 id="qunit-banner"></h2>
16
+ <div id="qunit-testrunner-toolbar"></div>
17
+ <h2 id="qunit-userAgent"></h2>
18
+ <ol id="qunit-tests"></ol>
19
+
20
+ <div id="qunit-fixture"></div>
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html id="html">
3
+ <head>
4
+ <title><%= @title %></title>
5
+ <link href="/vendor/qunit.css" media="screen" rel="stylesheet" type="text/css" media="screen, projection" />
6
+ <style>
7
+ #jquery-version {
8
+ color: #8699A4; text-align: right; font-family: sans-serif; line-height: 1;
9
+ margin-top: -1.8em; padding: 0 2em .8em 0;
10
+ }
11
+ #jquery-version a { color: white; text-decoration: underline; }
12
+ </style>
13
+
14
+ <%= script_tag jquery_src %>
15
+ <%= script_tag "/javascript/rails.validations.js" %>
16
+ </head>
17
+
18
+ <body id="body">
19
+ <%= yield %>
20
+ </body>
21
+ </html>
@@ -0,0 +1,15 @@
1
+ require 'base_helper'
2
+ require 'rails'
3
+
4
+ # Pulled from railties/test/abstract_unit in Rails 3.1
5
+ module TestApp
6
+ class Application < Rails::Application
7
+ config.root = File.dirname(__FILE__)
8
+ config.active_support.deprecation = :log
9
+ config.logger = Logger.new(STDOUT)
10
+ end
11
+ end
12
+
13
+ require 'client_side_validations/middleware'
14
+
15
+ TestApp::Application.initialize!
@@ -0,0 +1,8 @@
1
+ require 'middleware/cases/helper'
2
+
3
+ class ClientSideValidationsMiddleWareTest < Test::Unit::TestCase
4
+ def test_if_middleware_is_auto_included
5
+ assert Rails.configuration.middleware.include?(ClientSideValidations::Middleware::Validators)
6
+ end
7
+ end
8
+
@@ -0,0 +1,16 @@
1
+ require 'base_helper'
2
+ require 'mongoid'
3
+ require 'client_side_validations/mongoid'
4
+
5
+ Mongoid.configure do |config|
6
+ name = "client_side_validations_development"
7
+ host = "localhost"
8
+ config.master = Mongo::Connection.new.db(name)
9
+ config.slaves = [
10
+ Mongo::Connection.new(host).db(name)
11
+ ]
12
+ config.persist_in_safe_mode = false
13
+ end
14
+
15
+ require 'mongoid/models/book'
16
+
@@ -0,0 +1,15 @@
1
+ require 'mongoid/cases/helper'
2
+
3
+ class ClientSideValidations::MongoidTestBase < Test::Unit::TestCase
4
+ include Mongoid::Validations
5
+
6
+ def setup
7
+ @book = Book.new
8
+ end
9
+
10
+ def test_uniqueness_client_side_hash
11
+ expected_hash = { :message => "is already taken" }
12
+ assert_equal expected_hash, UniquenessValidator.new(:attributes => [:name]).client_side_hash(@book, :age)
13
+ end
14
+ end
15
+
@@ -0,0 +1,68 @@
1
+ require 'middleware/cases/helper'
2
+ require 'mongoid/cases/helper'
3
+
4
+ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
5
+ include Rack::Test::Methods
6
+
7
+ def setup
8
+ # I've been burned enough times with not having the db clear
9
+ # I should probably use a db cleaner instead of this
10
+ Book.delete_all
11
+ end
12
+
13
+ def teardown
14
+ Book.delete_all
15
+ end
16
+
17
+ def app
18
+ app = Proc.new { |env| [200, {}, ['success']] }
19
+ ClientSideValidations::Middleware::Validators.new(app)
20
+ end
21
+
22
+ def test_uniqueness_when_resource_exists
23
+ Book.create(:author_email => 'book@test.com')
24
+ get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com' }
25
+
26
+ assert_equal 'false', last_response.body
27
+ assert last_response.ok?
28
+ end
29
+
30
+ def test_uniqueness_when_resource_does_not_exist
31
+ get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com' }
32
+
33
+ assert_equal 'true', last_response.body
34
+ assert last_response.not_found?
35
+ end
36
+
37
+ def test_uniqueness_when_id_is_given
38
+ book = Book.create(:author_email => 'book@test.com')
39
+ get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'id' => book.id }
40
+
41
+ assert_equal 'true', last_response.body
42
+ assert last_response.not_found?
43
+ end
44
+
45
+ def test_uniqueness_when_scope_is_given
46
+ Book.create(:author_email => 'book@test.com', :age => 25)
47
+ get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30 } }
48
+
49
+ assert_equal 'true', last_response.body
50
+ assert last_response.not_found?
51
+ end
52
+
53
+ def test_uniqueness_when_multiple_scopes_are_given
54
+ Book.create(:author_email => 'book@test.com', :age => 30, :author_name => 'Brian')
55
+ get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30, 'author_name' => 'Robert' } }
56
+
57
+ assert_equal 'true', last_response.body
58
+ assert last_response.not_found?
59
+ end
60
+
61
+ def test_uniqueness_when_case_insensitive
62
+ Book.create(:author_name => 'Brian')
63
+ get '/validators/uniqueness.json', { 'book[author_name]' => 'BRIAN', 'case_sensitive' => false }
64
+
65
+ assert_equal 'false', last_response.body
66
+ assert last_response.ok?
67
+ end
68
+ end
@@ -0,0 +1,44 @@
1
+ require 'mongoid/cases/test_base'
2
+
3
+ class Mongoid::UniqunessValidatorTest < ClientSideValidations::MongoidTestBase
4
+
5
+ def test_uniqueness_client_side_hash
6
+ expected_hash = { :message => "is already taken" }
7
+ assert_equal expected_hash, UniquenessValidator.new(:attributes => [:name]).client_side_hash(@book, :age)
8
+ end
9
+
10
+ def test_uniqueness_client_side_hash_with_custom_message
11
+ expected_hash = { :message => "is not available" }
12
+ assert_equal expected_hash, UniquenessValidator.new(:attributes => [:name], :message => "is not available").client_side_hash(@book, :age)
13
+ end
14
+
15
+ def test_uniqueness_client_side_hash
16
+ @book.stubs(:new_record?).returns(false)
17
+ @book.stubs(:id).returns(1)
18
+ expected_hash = { :message => "is already taken", :id => 1 }
19
+ assert_equal expected_hash, UniquenessValidator.new(:attributes => [:name]).client_side_hash(@book, :age)
20
+ end
21
+
22
+ def test_uniqueness_client_side_hash_with_single_scope_item
23
+ @book.stubs(:author_email).returns("test@test.com")
24
+ expected_hash = { :message => "is already taken", :scope => {:author_email => "test@test.com"} }
25
+ result_hash = UniquenessValidator.new(:attributes => [:author_name], :scope => :author_email).client_side_hash(@book, :author_name)
26
+ assert_equal expected_hash, result_hash
27
+ end
28
+
29
+ def test_uniqueness_client_side_hash_with_multiple_scope_items
30
+ @book.stubs(:age).returns(30)
31
+ @book.stubs(:author_email).returns("test@test.com")
32
+ expected_hash = { :message => "is already taken", :scope => {:age => 30, :author_email => "test@test.com"} }
33
+ result_hash = UniquenessValidator.new(:attributes => [:author_name], :scope => [:age, :author_email]).client_side_hash(@book, :author_name)
34
+ assert_equal expected_hash, result_hash
35
+ end
36
+
37
+ def test_uniqueness_client_side_hash_with_empty_scope_array
38
+ expected_hash = { :message => "is already taken" }
39
+ result_hash = UniquenessValidator.new(:attributes => [:author_name], :scope => []).client_side_hash(@book, :author_name)
40
+ assert_equal expected_hash, result_hash
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,8 @@
1
+ class Book
2
+ include Mongoid::Document
3
+
4
+ field :age, :type => Integer
5
+ field :author_name, :type => String
6
+ field :author_email, :type => String
7
+ end
8
+
@@ -0,0 +1,2 @@
1
+ require 'simple_form'
2
+ require 'client_side_validations/simple_form'
@@ -0,0 +1,14 @@
1
+ require 'simple_form/cases/helper'
2
+
3
+ class ClientSideValidations::SimpleForm::FormBuilderTest < Test::Unit::TestCase
4
+ def test_client_side_form_js_hash
5
+ expected = {
6
+ :type => 'SimpleForm::FormBuilder',
7
+ :error_class => :error,
8
+ :error_tag => :span,
9
+ :wrapper_error_class => :field_with_errors,
10
+ :wrapper_tag => :div
11
+ }
12
+ assert_equal expected, SimpleForm::FormBuilder.client_side_form_settings(nil, nil)
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ require 'action_view/cases/helper'
2
+ require 'simple_form/cases/helper'
3
+
4
+ class ClientSideValidations::SimpleForm::FormHelperTest < ActionView::TestCase
5
+ include ActionViewTestSetup
6
+ include SimpleForm::ActionViewExtensions::FormHelper
7
+
8
+ def client_side_form_settings_helper
9
+ ""
10
+ end
11
+
12
+ def test_simple_form_for
13
+ simple_form_for(@post, :validate => true) do |f|
14
+ concat f.input(:cost)
15
+ end
16
+
17
+ expected = %{<form accept-charset="UTF-8" action="/posts/123" class="simple_form post" data-validate="true" id="edit_post_123" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /></div><div class="input string required"><label class="string required" for="post_cost"><abbr title="required">*</abbr> Cost</label><input class="string required" data-validate="true" id="post_cost" name="post[cost]" required="required" size="50" type="text" /></div></form><script>var edit_post_123 = {"type":"SimpleForm::FormBuilder","error_class":"error","error_tag":"span","wrapper_error_class":"field_with_errors","wrapper_tag":"div","validators":{"post[cost]":{"presence":{"message":"can't be blank"}}}};</script>}
18
+ assert_equal expected, output_buffer, "\n\n *** If you're running Ruby 1.8 and this test fails is is most likely due to 1.8's lack of insertion order persistence with Hashes ***\n"
19
+ end
20
+
21
+ end
22
+
metadata ADDED
@@ -0,0 +1,435 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nimboids-client_side_validations
3
+ version: !ruby/object:Gem::Version
4
+ hash: 1
5
+ prerelease:
6
+ segments:
7
+ - 3
8
+ - 0
9
+ - 3
10
+ version: 3.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Brian Cardarella
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-14 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activesupport
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 3
31
+ - 0
32
+ - 0
33
+ version: 3.0.0
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 7
45
+ segments:
46
+ - 3
47
+ - 0
48
+ - 0
49
+ version: 3.0.0
50
+ type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: sqlite3
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: bson_ext
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ type: :development
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: mongoid
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ hash: 15
89
+ segments:
90
+ - 2
91
+ - 0
92
+ - 0
93
+ version: 2.0.0
94
+ type: :development
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
97
+ name: mocha
98
+ prerelease: false
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ type: :development
109
+ version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
111
+ name: simple_form
112
+ prerelease: false
113
+ requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ type: :development
123
+ version_requirements: *id007
124
+ - !ruby/object:Gem::Dependency
125
+ name: formtastic
126
+ prerelease: false
127
+ requirement: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ hash: 3
133
+ segments:
134
+ - 0
135
+ version: "0"
136
+ type: :development
137
+ version_requirements: *id008
138
+ - !ruby/object:Gem::Dependency
139
+ name: sinatra
140
+ prerelease: false
141
+ requirement: &id009 !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ hash: 15
147
+ segments:
148
+ - 1
149
+ - 0
150
+ version: "1.0"
151
+ type: :development
152
+ version_requirements: *id009
153
+ - !ruby/object:Gem::Dependency
154
+ name: shotgun
155
+ prerelease: false
156
+ requirement: &id010 !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ hash: 3
162
+ segments:
163
+ - 0
164
+ version: "0"
165
+ type: :development
166
+ version_requirements: *id010
167
+ - !ruby/object:Gem::Dependency
168
+ name: thin
169
+ prerelease: false
170
+ requirement: &id011 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ hash: 3
176
+ segments:
177
+ - 0
178
+ version: "0"
179
+ type: :development
180
+ version_requirements: *id011
181
+ - !ruby/object:Gem::Dependency
182
+ name: json
183
+ prerelease: false
184
+ requirement: &id012 !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ hash: 3
190
+ segments:
191
+ - 0
192
+ version: "0"
193
+ type: :development
194
+ version_requirements: *id012
195
+ - !ruby/object:Gem::Dependency
196
+ name: minitest
197
+ prerelease: false
198
+ requirement: &id013 !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ hash: 3
204
+ segments:
205
+ - 0
206
+ version: "0"
207
+ type: :development
208
+ version_requirements: *id013
209
+ - !ruby/object:Gem::Dependency
210
+ name: ruby-debug
211
+ prerelease: false
212
+ requirement: &id014 !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ hash: 3
218
+ segments:
219
+ - 0
220
+ version: "0"
221
+ type: :development
222
+ version_requirements: *id014
223
+ description: Client Side Validations
224
+ email:
225
+ - bcardarella@gmail.com
226
+ executables: []
227
+
228
+ extensions: []
229
+
230
+ extra_rdoc_files: []
231
+
232
+ files:
233
+ - client_side_validations.gemspec
234
+ - javascript/rails.validations.js
235
+ - lib/client_side_validations.rb
236
+ - lib/client_side_validations/action_view.rb
237
+ - lib/client_side_validations/action_view/form_builder.rb
238
+ - lib/client_side_validations/action_view/form_helper.rb
239
+ - lib/client_side_validations/action_view/form_tag_helper.rb
240
+ - lib/client_side_validations/active_model.rb
241
+ - lib/client_side_validations/active_model/acceptance.rb
242
+ - lib/client_side_validations/active_model/exclusion.rb
243
+ - lib/client_side_validations/active_model/format.rb
244
+ - lib/client_side_validations/active_model/inclusion.rb
245
+ - lib/client_side_validations/active_model/length.rb
246
+ - lib/client_side_validations/active_model/numericality.rb
247
+ - lib/client_side_validations/active_model/presence.rb
248
+ - lib/client_side_validations/active_record.rb
249
+ - lib/client_side_validations/active_record/middleware.rb
250
+ - lib/client_side_validations/active_record/uniqueness.rb
251
+ - lib/client_side_validations/core_ext.rb
252
+ - lib/client_side_validations/core_ext/range.rb
253
+ - lib/client_side_validations/core_ext/regexp.rb
254
+ - lib/client_side_validations/formtastic.rb
255
+ - lib/client_side_validations/middleware.rb
256
+ - lib/client_side_validations/mongoid.rb
257
+ - lib/client_side_validations/mongoid/middleware.rb
258
+ - lib/client_side_validations/mongoid/uniqueness.rb
259
+ - lib/client_side_validations/simple_form.rb
260
+ - lib/client_side_validations/version.rb
261
+ - lib/generators/client_side_validations/install_generator.rb
262
+ - lib/generators/templates/README
263
+ - lib/generators/templates/client_side_validations.rb
264
+ - test/action_view/cases/helper.rb
265
+ - test/action_view/cases/test_helpers.rb
266
+ - test/action_view/cases/test_legacy_helpers.rb
267
+ - test/action_view/models.rb
268
+ - test/action_view/models/comment.rb
269
+ - test/action_view/models/post.rb
270
+ - test/active_model/cases/helper.rb
271
+ - test/active_model/cases/test_acceptance_validator.rb
272
+ - test/active_model/cases/test_base.rb
273
+ - test/active_model/cases/test_confirmation_validator.rb
274
+ - test/active_model/cases/test_exclusion_validator.rb
275
+ - test/active_model/cases/test_format_validator.rb
276
+ - test/active_model/cases/test_inclusion_validator.rb
277
+ - test/active_model/cases/test_length_validator.rb
278
+ - test/active_model/cases/test_numericality_validator.rb
279
+ - test/active_model/cases/test_presence_validator.rb
280
+ - test/active_model/cases/test_validations.rb
281
+ - test/active_model/models/person.rb
282
+ - test/active_record/cases/helper.rb
283
+ - test/active_record/cases/test_base.rb
284
+ - test/active_record/cases/test_middleware.rb
285
+ - test/active_record/cases/test_uniqueness_validator.rb
286
+ - test/active_record/models/guid.rb
287
+ - test/active_record/models/user.rb
288
+ - test/base_helper.rb
289
+ - test/core_ext/cases/test_core_ext.rb
290
+ - test/formtastic/cases/helper.rb
291
+ - test/formtastic/cases/test_form_builder.rb
292
+ - test/formtastic/cases/test_form_helper.rb
293
+ - test/generators/cases/test_install_generator.rb
294
+ - test/javascript/config.ru
295
+ - test/javascript/public/test/callbacks/elementAfter.js
296
+ - test/javascript/public/test/callbacks/elementBefore.js
297
+ - test/javascript/public/test/callbacks/elementFail.js
298
+ - test/javascript/public/test/callbacks/elementPass.js
299
+ - test/javascript/public/test/callbacks/formAfter.js
300
+ - test/javascript/public/test/callbacks/formBefore.js
301
+ - test/javascript/public/test/callbacks/formFail.js
302
+ - test/javascript/public/test/callbacks/formPass.js
303
+ - test/javascript/public/test/form_builders/validateForm.js
304
+ - test/javascript/public/test/form_builders/validateFormtastic.js
305
+ - test/javascript/public/test/form_builders/validateSimpleForm.js
306
+ - test/javascript/public/test/settings.js
307
+ - test/javascript/public/test/validateElement.js
308
+ - test/javascript/public/test/validators/acceptance.js
309
+ - test/javascript/public/test/validators/confirmation.js
310
+ - test/javascript/public/test/validators/exclusion.js
311
+ - test/javascript/public/test/validators/format.js
312
+ - test/javascript/public/test/validators/inclusion.js
313
+ - test/javascript/public/test/validators/length.js
314
+ - test/javascript/public/test/validators/numericality.js
315
+ - test/javascript/public/test/validators/presence.js
316
+ - test/javascript/public/test/validators/uniqueness.js
317
+ - test/javascript/public/vendor/jquery.metadata.js
318
+ - test/javascript/public/vendor/qunit.css
319
+ - test/javascript/public/vendor/qunit.js
320
+ - test/javascript/server.rb
321
+ - test/javascript/views/index.erb
322
+ - test/javascript/views/layout.erb
323
+ - test/middleware/cases/helper.rb
324
+ - test/middleware/cases/test_middleware.rb
325
+ - test/mongoid/cases/helper.rb
326
+ - test/mongoid/cases/test_base.rb
327
+ - test/mongoid/cases/test_middleware.rb
328
+ - test/mongoid/cases/test_uniqueness_validator.rb
329
+ - test/mongoid/models/book.rb
330
+ - test/simple_form/cases/helper.rb
331
+ - test/simple_form/cases/test_form_builder.rb
332
+ - test/simple_form/cases/test_form_helper.rb
333
+ homepage: https://github.com/nimboids/client_side_validations
334
+ licenses: []
335
+
336
+ post_install_message:
337
+ rdoc_options: []
338
+
339
+ require_paths:
340
+ - lib
341
+ required_ruby_version: !ruby/object:Gem::Requirement
342
+ none: false
343
+ requirements:
344
+ - - ">="
345
+ - !ruby/object:Gem::Version
346
+ hash: 3
347
+ segments:
348
+ - 0
349
+ version: "0"
350
+ required_rubygems_version: !ruby/object:Gem::Requirement
351
+ none: false
352
+ requirements:
353
+ - - ">="
354
+ - !ruby/object:Gem::Version
355
+ hash: 3
356
+ segments:
357
+ - 0
358
+ version: "0"
359
+ requirements: []
360
+
361
+ rubyforge_project: client_side_validations
362
+ rubygems_version: 1.7.2
363
+ signing_key:
364
+ specification_version: 3
365
+ summary: Client Side Validations
366
+ test_files:
367
+ - test/action_view/cases/helper.rb
368
+ - test/action_view/cases/test_helpers.rb
369
+ - test/action_view/cases/test_legacy_helpers.rb
370
+ - test/action_view/models.rb
371
+ - test/action_view/models/comment.rb
372
+ - test/action_view/models/post.rb
373
+ - test/active_model/cases/helper.rb
374
+ - test/active_model/cases/test_acceptance_validator.rb
375
+ - test/active_model/cases/test_base.rb
376
+ - test/active_model/cases/test_confirmation_validator.rb
377
+ - test/active_model/cases/test_exclusion_validator.rb
378
+ - test/active_model/cases/test_format_validator.rb
379
+ - test/active_model/cases/test_inclusion_validator.rb
380
+ - test/active_model/cases/test_length_validator.rb
381
+ - test/active_model/cases/test_numericality_validator.rb
382
+ - test/active_model/cases/test_presence_validator.rb
383
+ - test/active_model/cases/test_validations.rb
384
+ - test/active_model/models/person.rb
385
+ - test/active_record/cases/helper.rb
386
+ - test/active_record/cases/test_base.rb
387
+ - test/active_record/cases/test_middleware.rb
388
+ - test/active_record/cases/test_uniqueness_validator.rb
389
+ - test/active_record/models/guid.rb
390
+ - test/active_record/models/user.rb
391
+ - test/base_helper.rb
392
+ - test/core_ext/cases/test_core_ext.rb
393
+ - test/formtastic/cases/helper.rb
394
+ - test/formtastic/cases/test_form_builder.rb
395
+ - test/formtastic/cases/test_form_helper.rb
396
+ - test/generators/cases/test_install_generator.rb
397
+ - test/javascript/config.ru
398
+ - test/javascript/public/test/callbacks/elementAfter.js
399
+ - test/javascript/public/test/callbacks/elementBefore.js
400
+ - test/javascript/public/test/callbacks/elementFail.js
401
+ - test/javascript/public/test/callbacks/elementPass.js
402
+ - test/javascript/public/test/callbacks/formAfter.js
403
+ - test/javascript/public/test/callbacks/formBefore.js
404
+ - test/javascript/public/test/callbacks/formFail.js
405
+ - test/javascript/public/test/callbacks/formPass.js
406
+ - test/javascript/public/test/form_builders/validateForm.js
407
+ - test/javascript/public/test/form_builders/validateFormtastic.js
408
+ - test/javascript/public/test/form_builders/validateSimpleForm.js
409
+ - test/javascript/public/test/settings.js
410
+ - test/javascript/public/test/validateElement.js
411
+ - test/javascript/public/test/validators/acceptance.js
412
+ - test/javascript/public/test/validators/confirmation.js
413
+ - test/javascript/public/test/validators/exclusion.js
414
+ - test/javascript/public/test/validators/format.js
415
+ - test/javascript/public/test/validators/inclusion.js
416
+ - test/javascript/public/test/validators/length.js
417
+ - test/javascript/public/test/validators/numericality.js
418
+ - test/javascript/public/test/validators/presence.js
419
+ - test/javascript/public/test/validators/uniqueness.js
420
+ - test/javascript/public/vendor/jquery.metadata.js
421
+ - test/javascript/public/vendor/qunit.css
422
+ - test/javascript/public/vendor/qunit.js
423
+ - test/javascript/server.rb
424
+ - test/javascript/views/index.erb
425
+ - test/javascript/views/layout.erb
426
+ - test/middleware/cases/helper.rb
427
+ - test/middleware/cases/test_middleware.rb
428
+ - test/mongoid/cases/helper.rb
429
+ - test/mongoid/cases/test_base.rb
430
+ - test/mongoid/cases/test_middleware.rb
431
+ - test/mongoid/cases/test_uniqueness_validator.rb
432
+ - test/mongoid/models/book.rb
433
+ - test/simple_form/cases/helper.rb
434
+ - test/simple_form/cases/test_form_builder.rb
435
+ - test/simple_form/cases/test_form_helper.rb