mongoid-braxton 2.0.2
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.
- data/LICENSE +20 -0
- data/README.rdoc +50 -0
- data/Rakefile +51 -0
- data/lib/config/locales/bg.yml +41 -0
- data/lib/config/locales/de.yml +41 -0
- data/lib/config/locales/en.yml +45 -0
- data/lib/config/locales/es.yml +41 -0
- data/lib/config/locales/fr.yml +42 -0
- data/lib/config/locales/hu.yml +44 -0
- data/lib/config/locales/id.yml +46 -0
- data/lib/config/locales/it.yml +39 -0
- data/lib/config/locales/ja.yml +40 -0
- data/lib/config/locales/kr.yml +65 -0
- data/lib/config/locales/nl.yml +39 -0
- data/lib/config/locales/pl.yml +39 -0
- data/lib/config/locales/pt-BR.yml +40 -0
- data/lib/config/locales/pt.yml +40 -0
- data/lib/config/locales/ro.yml +46 -0
- data/lib/config/locales/ru.yml +41 -0
- data/lib/config/locales/sv.yml +40 -0
- data/lib/config/locales/vi.yml +45 -0
- data/lib/config/locales/zh-CN.yml +33 -0
- data/lib/mongoid.rb +140 -0
- data/lib/mongoid/atomicity.rb +111 -0
- data/lib/mongoid/attributes.rb +185 -0
- data/lib/mongoid/attributes/processing.rb +145 -0
- data/lib/mongoid/callbacks.rb +23 -0
- data/lib/mongoid/collection.rb +137 -0
- data/lib/mongoid/collections.rb +71 -0
- data/lib/mongoid/collections/master.rb +37 -0
- data/lib/mongoid/collections/operations.rb +42 -0
- data/lib/mongoid/collections/retry.rb +39 -0
- data/lib/mongoid/components.rb +45 -0
- data/lib/mongoid/config.rb +349 -0
- data/lib/mongoid/config/database.rb +167 -0
- data/lib/mongoid/config/replset_database.rb +78 -0
- data/lib/mongoid/contexts.rb +19 -0
- data/lib/mongoid/contexts/enumerable.rb +275 -0
- data/lib/mongoid/contexts/enumerable/sort.rb +43 -0
- data/lib/mongoid/contexts/mongo.rb +345 -0
- data/lib/mongoid/copyable.rb +46 -0
- data/lib/mongoid/criteria.rb +357 -0
- data/lib/mongoid/criterion/builder.rb +34 -0
- data/lib/mongoid/criterion/complex.rb +34 -0
- data/lib/mongoid/criterion/creational.rb +34 -0
- data/lib/mongoid/criterion/exclusion.rb +108 -0
- data/lib/mongoid/criterion/inclusion.rb +198 -0
- data/lib/mongoid/criterion/inspection.rb +22 -0
- data/lib/mongoid/criterion/optional.rb +193 -0
- data/lib/mongoid/criterion/selector.rb +143 -0
- data/lib/mongoid/criterion/unconvertable.rb +20 -0
- data/lib/mongoid/cursor.rb +86 -0
- data/lib/mongoid/default_scope.rb +36 -0
- data/lib/mongoid/dirty.rb +253 -0
- data/lib/mongoid/document.rb +284 -0
- data/lib/mongoid/errors.rb +13 -0
- data/lib/mongoid/errors/document_not_found.rb +29 -0
- data/lib/mongoid/errors/invalid_collection.rb +19 -0
- data/lib/mongoid/errors/invalid_database.rb +20 -0
- data/lib/mongoid/errors/invalid_field.rb +19 -0
- data/lib/mongoid/errors/invalid_options.rb +16 -0
- data/lib/mongoid/errors/invalid_type.rb +26 -0
- data/lib/mongoid/errors/mixed_relations.rb +37 -0
- data/lib/mongoid/errors/mongoid_error.rb +27 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +21 -0
- data/lib/mongoid/errors/unsaved_document.rb +23 -0
- data/lib/mongoid/errors/unsupported_version.rb +21 -0
- data/lib/mongoid/errors/validations.rb +24 -0
- data/lib/mongoid/extensions.rb +123 -0
- data/lib/mongoid/extensions/array/conversions.rb +23 -0
- data/lib/mongoid/extensions/array/parentization.rb +13 -0
- data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
- data/lib/mongoid/extensions/binary/conversions.rb +17 -0
- data/lib/mongoid/extensions/boolean/conversions.rb +27 -0
- data/lib/mongoid/extensions/date/conversions.rb +25 -0
- data/lib/mongoid/extensions/datetime/conversions.rb +12 -0
- data/lib/mongoid/extensions/false_class/equality.rb +13 -0
- data/lib/mongoid/extensions/float/conversions.rb +20 -0
- data/lib/mongoid/extensions/hash/conversions.rb +19 -0
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +22 -0
- data/lib/mongoid/extensions/hash/scoping.rb +12 -0
- data/lib/mongoid/extensions/integer/conversions.rb +20 -0
- data/lib/mongoid/extensions/nil/collectionization.rb +12 -0
- data/lib/mongoid/extensions/object/checks.rb +32 -0
- data/lib/mongoid/extensions/object/conversions.rb +25 -0
- data/lib/mongoid/extensions/object/reflections.rb +17 -0
- data/lib/mongoid/extensions/object/yoda.rb +27 -0
- data/lib/mongoid/extensions/object_id/conversions.rb +96 -0
- data/lib/mongoid/extensions/proc/scoping.rb +12 -0
- data/lib/mongoid/extensions/range/conversions.rb +25 -0
- data/lib/mongoid/extensions/set/conversions.rb +20 -0
- data/lib/mongoid/extensions/string/conversions.rb +34 -0
- data/lib/mongoid/extensions/string/inflections.rb +97 -0
- data/lib/mongoid/extensions/symbol/conversions.rb +21 -0
- data/lib/mongoid/extensions/symbol/inflections.rb +40 -0
- data/lib/mongoid/extensions/time_conversions.rb +38 -0
- data/lib/mongoid/extensions/true_class/equality.rb +13 -0
- data/lib/mongoid/extras.rb +42 -0
- data/lib/mongoid/factory.rb +37 -0
- data/lib/mongoid/field.rb +162 -0
- data/lib/mongoid/fields.rb +183 -0
- data/lib/mongoid/finders.rb +127 -0
- data/lib/mongoid/hierarchy.rb +85 -0
- data/lib/mongoid/identity.rb +92 -0
- data/lib/mongoid/indexes.rb +38 -0
- data/lib/mongoid/inspection.rb +54 -0
- data/lib/mongoid/javascript.rb +21 -0
- data/lib/mongoid/javascript/functions.yml +37 -0
- data/lib/mongoid/json.rb +16 -0
- data/lib/mongoid/keys.rb +131 -0
- data/lib/mongoid/logger.rb +18 -0
- data/lib/mongoid/matchers.rb +32 -0
- data/lib/mongoid/matchers/all.rb +11 -0
- data/lib/mongoid/matchers/default.rb +70 -0
- data/lib/mongoid/matchers/exists.rb +13 -0
- data/lib/mongoid/matchers/gt.rb +11 -0
- data/lib/mongoid/matchers/gte.rb +11 -0
- data/lib/mongoid/matchers/in.rb +11 -0
- data/lib/mongoid/matchers/lt.rb +11 -0
- data/lib/mongoid/matchers/lte.rb +11 -0
- data/lib/mongoid/matchers/ne.rb +11 -0
- data/lib/mongoid/matchers/nin.rb +11 -0
- data/lib/mongoid/matchers/or.rb +30 -0
- data/lib/mongoid/matchers/size.rb +11 -0
- data/lib/mongoid/matchers/strategies.rb +63 -0
- data/lib/mongoid/multi_database.rb +11 -0
- data/lib/mongoid/multi_parameter_attributes.rb +82 -0
- data/lib/mongoid/named_scope.rb +137 -0
- data/lib/mongoid/nested_attributes.rb +51 -0
- data/lib/mongoid/observer.rb +67 -0
- data/lib/mongoid/paranoia.rb +103 -0
- data/lib/mongoid/paths.rb +61 -0
- data/lib/mongoid/persistence.rb +240 -0
- data/lib/mongoid/persistence/atomic.rb +88 -0
- data/lib/mongoid/persistence/atomic/add_to_set.rb +32 -0
- data/lib/mongoid/persistence/atomic/inc.rb +28 -0
- data/lib/mongoid/persistence/atomic/operation.rb +44 -0
- data/lib/mongoid/persistence/atomic/pull_all.rb +33 -0
- data/lib/mongoid/persistence/atomic/push.rb +28 -0
- data/lib/mongoid/persistence/command.rb +71 -0
- data/lib/mongoid/persistence/insert.rb +53 -0
- data/lib/mongoid/persistence/insert_embedded.rb +43 -0
- data/lib/mongoid/persistence/remove.rb +44 -0
- data/lib/mongoid/persistence/remove_all.rb +40 -0
- data/lib/mongoid/persistence/remove_embedded.rb +48 -0
- data/lib/mongoid/persistence/update.rb +77 -0
- data/lib/mongoid/railtie.rb +139 -0
- data/lib/mongoid/railties/database.rake +171 -0
- data/lib/mongoid/railties/document.rb +12 -0
- data/lib/mongoid/relations.rb +107 -0
- data/lib/mongoid/relations/accessors.rb +175 -0
- data/lib/mongoid/relations/auto_save.rb +34 -0
- data/lib/mongoid/relations/binding.rb +26 -0
- data/lib/mongoid/relations/bindings.rb +9 -0
- data/lib/mongoid/relations/bindings/embedded/in.rb +82 -0
- data/lib/mongoid/relations/bindings/embedded/many.rb +98 -0
- data/lib/mongoid/relations/bindings/embedded/one.rb +66 -0
- data/lib/mongoid/relations/bindings/referenced/in.rb +74 -0
- data/lib/mongoid/relations/bindings/referenced/many.rb +96 -0
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +103 -0
- data/lib/mongoid/relations/bindings/referenced/one.rb +66 -0
- data/lib/mongoid/relations/builder.rb +42 -0
- data/lib/mongoid/relations/builders.rb +79 -0
- data/lib/mongoid/relations/builders/embedded/in.rb +25 -0
- data/lib/mongoid/relations/builders/embedded/many.rb +32 -0
- data/lib/mongoid/relations/builders/embedded/one.rb +26 -0
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +126 -0
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
- data/lib/mongoid/relations/builders/referenced/in.rb +29 -0
- data/lib/mongoid/relations/builders/referenced/many.rb +47 -0
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +29 -0
- data/lib/mongoid/relations/builders/referenced/one.rb +27 -0
- data/lib/mongoid/relations/cascading.rb +55 -0
- data/lib/mongoid/relations/cascading/delete.rb +19 -0
- data/lib/mongoid/relations/cascading/destroy.rb +19 -0
- data/lib/mongoid/relations/cascading/nullify.rb +18 -0
- data/lib/mongoid/relations/cascading/strategy.rb +26 -0
- data/lib/mongoid/relations/constraint.rb +42 -0
- data/lib/mongoid/relations/cyclic.rb +103 -0
- data/lib/mongoid/relations/embedded/atomic.rb +86 -0
- data/lib/mongoid/relations/embedded/atomic/operation.rb +63 -0
- data/lib/mongoid/relations/embedded/atomic/pull.rb +65 -0
- data/lib/mongoid/relations/embedded/atomic/push_all.rb +59 -0
- data/lib/mongoid/relations/embedded/atomic/set.rb +61 -0
- data/lib/mongoid/relations/embedded/atomic/unset.rb +41 -0
- data/lib/mongoid/relations/embedded/in.rb +173 -0
- data/lib/mongoid/relations/embedded/many.rb +499 -0
- data/lib/mongoid/relations/embedded/one.rb +170 -0
- data/lib/mongoid/relations/macros.rb +310 -0
- data/lib/mongoid/relations/many.rb +215 -0
- data/lib/mongoid/relations/metadata.rb +539 -0
- data/lib/mongoid/relations/nested_builder.rb +68 -0
- data/lib/mongoid/relations/one.rb +47 -0
- data/lib/mongoid/relations/polymorphic.rb +54 -0
- data/lib/mongoid/relations/proxy.rb +143 -0
- data/lib/mongoid/relations/referenced/batch.rb +71 -0
- data/lib/mongoid/relations/referenced/batch/insert.rb +57 -0
- data/lib/mongoid/relations/referenced/in.rb +216 -0
- data/lib/mongoid/relations/referenced/many.rb +516 -0
- data/lib/mongoid/relations/referenced/many_to_many.rb +396 -0
- data/lib/mongoid/relations/referenced/one.rb +222 -0
- data/lib/mongoid/relations/reflections.rb +45 -0
- data/lib/mongoid/safe.rb +23 -0
- data/lib/mongoid/safety.rb +207 -0
- data/lib/mongoid/scope.rb +31 -0
- data/lib/mongoid/serialization.rb +99 -0
- data/lib/mongoid/sharding.rb +51 -0
- data/lib/mongoid/state.rb +67 -0
- data/lib/mongoid/timestamps.rb +14 -0
- data/lib/mongoid/timestamps/created.rb +31 -0
- data/lib/mongoid/timestamps/updated.rb +33 -0
- data/lib/mongoid/validations.rb +124 -0
- data/lib/mongoid/validations/associated.rb +44 -0
- data/lib/mongoid/validations/referenced.rb +58 -0
- data/lib/mongoid/validations/uniqueness.rb +85 -0
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +113 -0
- data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +20 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb +19 -0
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
- data/lib/rails/generators/mongoid/observer/templates/observer.rb +4 -0
- data/lib/rails/generators/mongoid_generator.rb +70 -0
- data/lib/rails/mongoid.rb +58 -0
- metadata +406 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Hash #:nodoc:
|
|
5
|
+
module CriteriaHelpers #:nodoc:
|
|
6
|
+
def expand_complex_criteria
|
|
7
|
+
hsh = {}
|
|
8
|
+
each_pair do |k,v|
|
|
9
|
+
case k
|
|
10
|
+
when Mongoid::Criterion::Complex
|
|
11
|
+
hsh[k.key] ||= {}
|
|
12
|
+
hsh[k.key].merge!({"$#{k.operator}" => v})
|
|
13
|
+
else
|
|
14
|
+
hsh[k] = v
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
hsh
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Integer #:nodoc:
|
|
5
|
+
module Conversions #:nodoc:
|
|
6
|
+
def set(value)
|
|
7
|
+
return nil if value.blank?
|
|
8
|
+
begin
|
|
9
|
+
value.to_s =~ /\./ ? Float(value) : Integer(value)
|
|
10
|
+
rescue
|
|
11
|
+
value
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
def get(value)
|
|
15
|
+
value
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Object #:nodoc:
|
|
5
|
+
|
|
6
|
+
# This module has object checks in it.
|
|
7
|
+
module Checks #:nodoc:
|
|
8
|
+
|
|
9
|
+
# Since Active Support's blank? check looks to see if the object
|
|
10
|
+
# responds to #empty? and will call it if it does, we need another way
|
|
11
|
+
# to check if the object is empty or nil in case the user has defined a
|
|
12
|
+
# field called "empty" on the document.
|
|
13
|
+
#
|
|
14
|
+
# @example Is the array vacant?
|
|
15
|
+
# [].vacant?
|
|
16
|
+
#
|
|
17
|
+
# @example Is the hash vacant?
|
|
18
|
+
# {}.vacant?
|
|
19
|
+
#
|
|
20
|
+
# @example Is the object vacant?
|
|
21
|
+
# nil.vacant?
|
|
22
|
+
#
|
|
23
|
+
# @return [ true, false ] True if empty or nil, false if not.
|
|
24
|
+
#
|
|
25
|
+
# @since 2.0.2
|
|
26
|
+
def _vacant?
|
|
27
|
+
is_a?(::Enumerable) || is_a?(::String) ? empty? : !self
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Object #:nodoc:
|
|
5
|
+
# This module converts objects into mongoid related objects.
|
|
6
|
+
module Conversions #:nodoc:
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
module ClassMethods
|
|
10
|
+
def set(value)
|
|
11
|
+
value.respond_to?(:attributes) ? value.attributes : value
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def get(value)
|
|
15
|
+
if value && respond_to?(:instantiate)
|
|
16
|
+
instantiate(value)
|
|
17
|
+
else
|
|
18
|
+
value
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Object #:nodoc:
|
|
5
|
+
module Reflections #:nodoc:
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
def ivar(name)
|
|
9
|
+
if instance_variable_defined?("@#{name}")
|
|
10
|
+
return instance_variable_get("@#{name}")
|
|
11
|
+
end
|
|
12
|
+
nil
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Object #:nodoc:
|
|
5
|
+
|
|
6
|
+
# This module behaves like the master jedi.
|
|
7
|
+
module Yoda #:nodoc:
|
|
8
|
+
|
|
9
|
+
# Do or do not, there is no try. -- Yoda.
|
|
10
|
+
#
|
|
11
|
+
# @example Do or do not.
|
|
12
|
+
# object.do_or_do_not(:use, "The Force")
|
|
13
|
+
#
|
|
14
|
+
# @param [ String, Symbol ] name The method name.
|
|
15
|
+
# @param [ Array ] *args The arguments.
|
|
16
|
+
#
|
|
17
|
+
# @return [ Object, nil ] The result of the method call or nil if the
|
|
18
|
+
# method does not exist.
|
|
19
|
+
#
|
|
20
|
+
# @since 2.0.0.rc.1
|
|
21
|
+
def do_or_do_not(name, *args)
|
|
22
|
+
respond_to?(name) ? send(name, *args) : nil
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module ObjectId #:nodoc:
|
|
5
|
+
|
|
6
|
+
# Provides conversions to and from BSON::ObjectIds and Strings, Arrays,
|
|
7
|
+
# and Hashes.
|
|
8
|
+
module Conversions
|
|
9
|
+
|
|
10
|
+
# Set the BSON::ObjectId value.
|
|
11
|
+
#
|
|
12
|
+
# @example Set the value.
|
|
13
|
+
# BSON::ObjectId.set("4c52c439931a90ab29000003")
|
|
14
|
+
#
|
|
15
|
+
# @param [ String, BSON::ObjectId ] value The value to set.
|
|
16
|
+
#
|
|
17
|
+
# @return [ BSON::ObjectId ] The set value.
|
|
18
|
+
#
|
|
19
|
+
# @since 1.0
|
|
20
|
+
def set(value)
|
|
21
|
+
if value.is_a?(::String)
|
|
22
|
+
BSON::ObjectId.from_string(value) unless value.blank?
|
|
23
|
+
else
|
|
24
|
+
value
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Get the BSON::ObjectId value.
|
|
29
|
+
#
|
|
30
|
+
# @example Get the value.
|
|
31
|
+
# BSON::ObjectId.set(BSON::ObjectId.new)
|
|
32
|
+
#
|
|
33
|
+
# @param [ BSON::ObjectId ] value The value to get.
|
|
34
|
+
#
|
|
35
|
+
# @return [ BSON::ObjectId ] The value.
|
|
36
|
+
#
|
|
37
|
+
# @since 1.0
|
|
38
|
+
def get(value)
|
|
39
|
+
value
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Convert the supplied arguments to object ids based on the class
|
|
43
|
+
# settings.
|
|
44
|
+
#
|
|
45
|
+
# @todo Durran: This method can be refactored.
|
|
46
|
+
#
|
|
47
|
+
# @example Convert a string to an object id
|
|
48
|
+
# BSON::ObjectId.convert(Person, "4c52c439931a90ab29000003")
|
|
49
|
+
#
|
|
50
|
+
# @example Convert an array of strings to object ids.
|
|
51
|
+
# BSON::ObjectId.convert(Person, [ "4c52c439931a90ab29000003" ])
|
|
52
|
+
#
|
|
53
|
+
# @example Convert a hash of id strings to object ids.
|
|
54
|
+
# BSON::ObjectId.convert(Person, { :_id => "4c52c439931a90ab29000003" })
|
|
55
|
+
#
|
|
56
|
+
# @param [ Class ] klass The class to convert the ids for.
|
|
57
|
+
# @param [ Object, Array, Hash ] args The object to convert.
|
|
58
|
+
#
|
|
59
|
+
# @raise BSON::InvalidObjectId If using object ids and passed bad
|
|
60
|
+
# strings.
|
|
61
|
+
#
|
|
62
|
+
# @return [ BSON::ObjectId, Array, Hash ] The converted object ids.
|
|
63
|
+
#
|
|
64
|
+
# @since 2.0.0.rc.7
|
|
65
|
+
def convert(klass, args, reject_blank = true)
|
|
66
|
+
return args if args.is_a?(BSON::ObjectId) || !klass.using_object_ids?
|
|
67
|
+
case args
|
|
68
|
+
when ::String
|
|
69
|
+
return nil if args.blank?
|
|
70
|
+
if args.is_a?(Mongoid::Criterion::Unconvertable)
|
|
71
|
+
args
|
|
72
|
+
else
|
|
73
|
+
BSON::ObjectId.from_string(args)
|
|
74
|
+
end
|
|
75
|
+
when ::Array
|
|
76
|
+
args = args.reject(&:blank?) if reject_blank
|
|
77
|
+
args.map do |arg|
|
|
78
|
+
convert(klass, arg, reject_blank)
|
|
79
|
+
end
|
|
80
|
+
when ::Hash
|
|
81
|
+
args.tap do |hash|
|
|
82
|
+
hash.each_pair do |key, value|
|
|
83
|
+
next unless key.to_s =~ /id/
|
|
84
|
+
begin
|
|
85
|
+
hash[key] = convert(klass, value, reject_blank)
|
|
86
|
+
rescue BSON::InvalidObjectId; end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
else
|
|
90
|
+
args
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Range #:nodoc:
|
|
5
|
+
module Conversions #:nodoc:
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
def to_hash
|
|
9
|
+
{ "min" => min, "max" => max }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
module ClassMethods #:nodoc:
|
|
13
|
+
|
|
14
|
+
def get(value)
|
|
15
|
+
value.nil? ? nil : ::Range.new(value["min"], value["max"])
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def set(value)
|
|
19
|
+
value.nil? ? nil : value.to_hash
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module Set #:nodoc:
|
|
5
|
+
# This module converts set into mongoid related objects.
|
|
6
|
+
module Conversions #:nodoc:
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
module ClassMethods #:nodoc:
|
|
10
|
+
def get(value)
|
|
11
|
+
::Set.new(value)
|
|
12
|
+
end
|
|
13
|
+
def set(value)
|
|
14
|
+
value.to_a
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module String #:nodoc:
|
|
5
|
+
module Conversions #:nodoc:
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
# Convert the string to an array with the string in it.
|
|
9
|
+
#
|
|
10
|
+
# Example:
|
|
11
|
+
#
|
|
12
|
+
# <tt>"Testing".to_a</tt>
|
|
13
|
+
#
|
|
14
|
+
# Returns:
|
|
15
|
+
#
|
|
16
|
+
# An array with only the string in it.
|
|
17
|
+
def to_a
|
|
18
|
+
[ self ]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
module ClassMethods #:nodoc:
|
|
22
|
+
|
|
23
|
+
def get(value)
|
|
24
|
+
value
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def set(value)
|
|
28
|
+
value.to_s unless value.nil?
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module Mongoid #:nodoc:
|
|
3
|
+
module Extensions #:nodoc:
|
|
4
|
+
module String #:nodoc:
|
|
5
|
+
module Inflections #:nodoc:
|
|
6
|
+
|
|
7
|
+
ActiveSupport::Inflector.inflections do |inflect|
|
|
8
|
+
inflect.singular("address", "address")
|
|
9
|
+
inflect.singular("addresses", "address")
|
|
10
|
+
inflect.irregular("canvas", "canvases")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Represents how special characters will get converted when creating a
|
|
14
|
+
# composite key that should be unique and part of a url.
|
|
15
|
+
CHAR_CONV = {
|
|
16
|
+
" " => "-",
|
|
17
|
+
"!" => "-excl-",
|
|
18
|
+
"\"" => "-bckslsh-",
|
|
19
|
+
"#" => "-hash-",
|
|
20
|
+
"$" => "-dol-",
|
|
21
|
+
"%" => "-perc-",
|
|
22
|
+
"&" => "-and-",
|
|
23
|
+
"'" => "-quo-",
|
|
24
|
+
"(" => "-oparen-",
|
|
25
|
+
")" => "-cparen-",
|
|
26
|
+
"*" => "-astx-",
|
|
27
|
+
"+" => "-plus-",
|
|
28
|
+
"," => "-comma-",
|
|
29
|
+
"-" => "-dash-",
|
|
30
|
+
"." => "-period-",
|
|
31
|
+
"/" => "-fwdslsh-",
|
|
32
|
+
":" => "-colon-",
|
|
33
|
+
";" => "-semicol-",
|
|
34
|
+
"<" => "-lt-",
|
|
35
|
+
"=" => "-eq-",
|
|
36
|
+
">" => "-gt-",
|
|
37
|
+
"?" => "-ques-",
|
|
38
|
+
"@" => "-at-",
|
|
39
|
+
"[" => "-obrck-",
|
|
40
|
+
"\\" => "-bckslsh-",
|
|
41
|
+
"]" => "-clbrck-",
|
|
42
|
+
"^" => "-carat-",
|
|
43
|
+
"_" => "-undscr-",
|
|
44
|
+
"`" => "-bcktick-",
|
|
45
|
+
"{" => "-ocurly-",
|
|
46
|
+
"|" => "-pipe-",
|
|
47
|
+
"}" => "-clcurly-",
|
|
48
|
+
"~" => "-tilda-"
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
REVERSALS = {
|
|
52
|
+
"asc" => "desc",
|
|
53
|
+
"ascending" => "descending",
|
|
54
|
+
"desc" => "asc",
|
|
55
|
+
"descending" => "ascending"
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
def collectionize
|
|
59
|
+
tableize.gsub("/", "_")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def identify
|
|
63
|
+
if Mongoid.parameterize_keys
|
|
64
|
+
key = ""
|
|
65
|
+
each_char { |c| key += (CHAR_CONV[c] || c.downcase) }; key
|
|
66
|
+
else
|
|
67
|
+
self
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def labelize
|
|
72
|
+
underscore.humanize
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def invert
|
|
76
|
+
REVERSALS[self]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def singular?
|
|
80
|
+
singularize == self
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def plural?
|
|
84
|
+
pluralize == self
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def reader
|
|
88
|
+
writer? ? gsub("=", "") : self
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def writer?
|
|
92
|
+
include?("=")
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|