client_side_validations-mongoid 2.4.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/client_side_validations/mongoid/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Brian Cardarella"]
6
+ gem.email = ["bcardarella@gmail.com"]
7
+ gem.description = %q{Mongoid Plugin for ClientSideValidaitons}
8
+ gem.summary = %q{Mongoid Plugin for ClientSideValidations}
9
+ gem.homepage = 'https://github.com/dockyard/client_side_validations-mongoid'
10
+
11
+ gem.files = `git ls-files -- {lib/*,vendor/*,*.gemspec}`.split("\n")
12
+ gem.name = 'client_side_validations-mongoid'
13
+ gem.require_paths = ['lib']
14
+ gem.version = ClientSideValidations::Mongoid::VERSION
15
+
16
+ gem.add_dependency 'client_side_validations', '~> 3.2.0.beta.1'
17
+ gem.add_dependency 'mongoid', '~> 2.4.0'
18
+
19
+ gem.add_development_dependency 'bson_ext'
20
+ gem.add_development_dependency 'rails', '~> 3.2.0'
21
+ gem.add_development_dependency 'mocha'
22
+
23
+ # For QUnit testing
24
+ gem.add_development_dependency 'sinatra', '~> 1.0'
25
+ gem.add_development_dependency 'shotgun'
26
+ gem.add_development_dependency 'thin'
27
+ gem.add_development_dependency 'json'
28
+ end
@@ -0,0 +1,25 @@
1
+ module ClientSideValidations::Mongoid
2
+ class Middleware
3
+
4
+ def self.is_class?(klass)
5
+ klass < ::Mongoid::Document
6
+ end
7
+
8
+ # Still need to handle embedded documents
9
+ def self.is_unique?(klass, attribute, value, params)
10
+ if params[:case_sensitive] == 'false'
11
+ value = Regexp.new("^#{Regexp.escape(value.to_s)}$", Regexp::IGNORECASE)
12
+ end
13
+
14
+ criteria = klass.where(attribute => value)
15
+ criteria = criteria.where(:_id => {'$ne' => BSON::ObjectId(params[:id])}) if params[:id]
16
+
17
+ (params[:scope] || {}).each do |key, value|
18
+ criteria = criteria.where(key => value)
19
+ end
20
+
21
+ !criteria.exists?
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,10 @@
1
+ module ClientSideValidations::Mongoid
2
+ module Presence
3
+ private
4
+
5
+ def message_type
6
+ :blank
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,28 @@
1
+ module ClientSideValidations::Mongoid
2
+ module Uniqueness
3
+ def client_side_hash(model, attribute)
4
+ hash = {}
5
+ hash[:message] = model.errors.generate_message(attribute, message_type, options.except(:scope))
6
+ hash[:case_sensitive] = options[:case_sensitive] if options.key?(:case_sensitive)
7
+ hash[:id] = model.id unless model.new_record?
8
+ if options.key?(:scope) && options[:scope].present?
9
+ hash[:scope] = Array.wrap(options[:scope]).inject({}) do |scope_hash, scope_item|
10
+ scope_hash.merge!(scope_item => model.send(scope_item))
11
+ end
12
+ end
13
+
14
+ unless model.class.name.demodulize == model.class.name
15
+ hash[:class] = model.class.name.underscore
16
+ end
17
+
18
+ hash
19
+ end
20
+
21
+ private
22
+
23
+ def message_type
24
+ :taken
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,5 @@
1
+ module ClientSideValidations
2
+ module Mongoid
3
+ VERSION = '2.4.0.beta.2'
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ require 'client_side_validations/active_model'
2
+ require 'client_side_validations/middleware'
3
+ require 'client_side_validations/mongoid/middleware'
4
+
5
+ %w{presence uniqueness}.each do |validator|
6
+ require "client_side_validations/mongoid/#{validator}"
7
+ validator.capitalize!
8
+ eval "Mongoid::Validations::#{validator}Validator.send(:include, ClientSideValidations::Mongoid::#{validator})"
9
+ end
10
+
11
+ ClientSideValidations::Middleware::Uniqueness.register_orm(ClientSideValidations::Mongoid::Middleware)
12
+
@@ -0,0 +1 @@
1
+ require 'client_side_validations/mongoid'
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: client_side_validations-mongoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.4.0.beta.2
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Brian Cardarella
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-22 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: client_side_validations
16
+ requirement: &70322746206920 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.0.beta.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70322746206920
25
+ - !ruby/object:Gem::Dependency
26
+ name: mongoid
27
+ requirement: &70322746204280 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 2.4.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70322746204280
36
+ - !ruby/object:Gem::Dependency
37
+ name: bson_ext
38
+ requirement: &70322746203860 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70322746203860
47
+ - !ruby/object:Gem::Dependency
48
+ name: rails
49
+ requirement: &70322746203240 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70322746203240
58
+ - !ruby/object:Gem::Dependency
59
+ name: mocha
60
+ requirement: &70322746202800 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70322746202800
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra
71
+ requirement: &70322746202240 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '1.0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70322746202240
80
+ - !ruby/object:Gem::Dependency
81
+ name: shotgun
82
+ requirement: &70322746201780 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70322746201780
91
+ - !ruby/object:Gem::Dependency
92
+ name: thin
93
+ requirement: &70322746201200 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70322746201200
102
+ - !ruby/object:Gem::Dependency
103
+ name: json
104
+ requirement: &70322746200680 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70322746200680
113
+ description: Mongoid Plugin for ClientSideValidaitons
114
+ email:
115
+ - bcardarella@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - client_side_validations-mongoid.gemspec
121
+ - lib/client_side_validations-mongoid.rb
122
+ - lib/client_side_validations/mongoid.rb
123
+ - lib/client_side_validations/mongoid/middleware.rb
124
+ - lib/client_side_validations/mongoid/presence.rb
125
+ - lib/client_side_validations/mongoid/uniqueness.rb
126
+ - lib/client_side_validations/mongoid/version.rb
127
+ homepage: https://github.com/dockyard/client_side_validations-mongoid
128
+ licenses: []
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>'
143
+ - !ruby/object:Gem::Version
144
+ version: 1.3.1
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 1.8.10
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: Mongoid Plugin for ClientSideValidations
151
+ test_files: []