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.
Files changed (226) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +50 -0
  3. data/Rakefile +51 -0
  4. data/lib/config/locales/bg.yml +41 -0
  5. data/lib/config/locales/de.yml +41 -0
  6. data/lib/config/locales/en.yml +45 -0
  7. data/lib/config/locales/es.yml +41 -0
  8. data/lib/config/locales/fr.yml +42 -0
  9. data/lib/config/locales/hu.yml +44 -0
  10. data/lib/config/locales/id.yml +46 -0
  11. data/lib/config/locales/it.yml +39 -0
  12. data/lib/config/locales/ja.yml +40 -0
  13. data/lib/config/locales/kr.yml +65 -0
  14. data/lib/config/locales/nl.yml +39 -0
  15. data/lib/config/locales/pl.yml +39 -0
  16. data/lib/config/locales/pt-BR.yml +40 -0
  17. data/lib/config/locales/pt.yml +40 -0
  18. data/lib/config/locales/ro.yml +46 -0
  19. data/lib/config/locales/ru.yml +41 -0
  20. data/lib/config/locales/sv.yml +40 -0
  21. data/lib/config/locales/vi.yml +45 -0
  22. data/lib/config/locales/zh-CN.yml +33 -0
  23. data/lib/mongoid.rb +140 -0
  24. data/lib/mongoid/atomicity.rb +111 -0
  25. data/lib/mongoid/attributes.rb +185 -0
  26. data/lib/mongoid/attributes/processing.rb +145 -0
  27. data/lib/mongoid/callbacks.rb +23 -0
  28. data/lib/mongoid/collection.rb +137 -0
  29. data/lib/mongoid/collections.rb +71 -0
  30. data/lib/mongoid/collections/master.rb +37 -0
  31. data/lib/mongoid/collections/operations.rb +42 -0
  32. data/lib/mongoid/collections/retry.rb +39 -0
  33. data/lib/mongoid/components.rb +45 -0
  34. data/lib/mongoid/config.rb +349 -0
  35. data/lib/mongoid/config/database.rb +167 -0
  36. data/lib/mongoid/config/replset_database.rb +78 -0
  37. data/lib/mongoid/contexts.rb +19 -0
  38. data/lib/mongoid/contexts/enumerable.rb +275 -0
  39. data/lib/mongoid/contexts/enumerable/sort.rb +43 -0
  40. data/lib/mongoid/contexts/mongo.rb +345 -0
  41. data/lib/mongoid/copyable.rb +46 -0
  42. data/lib/mongoid/criteria.rb +357 -0
  43. data/lib/mongoid/criterion/builder.rb +34 -0
  44. data/lib/mongoid/criterion/complex.rb +34 -0
  45. data/lib/mongoid/criterion/creational.rb +34 -0
  46. data/lib/mongoid/criterion/exclusion.rb +108 -0
  47. data/lib/mongoid/criterion/inclusion.rb +198 -0
  48. data/lib/mongoid/criterion/inspection.rb +22 -0
  49. data/lib/mongoid/criterion/optional.rb +193 -0
  50. data/lib/mongoid/criterion/selector.rb +143 -0
  51. data/lib/mongoid/criterion/unconvertable.rb +20 -0
  52. data/lib/mongoid/cursor.rb +86 -0
  53. data/lib/mongoid/default_scope.rb +36 -0
  54. data/lib/mongoid/dirty.rb +253 -0
  55. data/lib/mongoid/document.rb +284 -0
  56. data/lib/mongoid/errors.rb +13 -0
  57. data/lib/mongoid/errors/document_not_found.rb +29 -0
  58. data/lib/mongoid/errors/invalid_collection.rb +19 -0
  59. data/lib/mongoid/errors/invalid_database.rb +20 -0
  60. data/lib/mongoid/errors/invalid_field.rb +19 -0
  61. data/lib/mongoid/errors/invalid_options.rb +16 -0
  62. data/lib/mongoid/errors/invalid_type.rb +26 -0
  63. data/lib/mongoid/errors/mixed_relations.rb +37 -0
  64. data/lib/mongoid/errors/mongoid_error.rb +27 -0
  65. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +21 -0
  66. data/lib/mongoid/errors/unsaved_document.rb +23 -0
  67. data/lib/mongoid/errors/unsupported_version.rb +21 -0
  68. data/lib/mongoid/errors/validations.rb +24 -0
  69. data/lib/mongoid/extensions.rb +123 -0
  70. data/lib/mongoid/extensions/array/conversions.rb +23 -0
  71. data/lib/mongoid/extensions/array/parentization.rb +13 -0
  72. data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
  73. data/lib/mongoid/extensions/binary/conversions.rb +17 -0
  74. data/lib/mongoid/extensions/boolean/conversions.rb +27 -0
  75. data/lib/mongoid/extensions/date/conversions.rb +25 -0
  76. data/lib/mongoid/extensions/datetime/conversions.rb +12 -0
  77. data/lib/mongoid/extensions/false_class/equality.rb +13 -0
  78. data/lib/mongoid/extensions/float/conversions.rb +20 -0
  79. data/lib/mongoid/extensions/hash/conversions.rb +19 -0
  80. data/lib/mongoid/extensions/hash/criteria_helpers.rb +22 -0
  81. data/lib/mongoid/extensions/hash/scoping.rb +12 -0
  82. data/lib/mongoid/extensions/integer/conversions.rb +20 -0
  83. data/lib/mongoid/extensions/nil/collectionization.rb +12 -0
  84. data/lib/mongoid/extensions/object/checks.rb +32 -0
  85. data/lib/mongoid/extensions/object/conversions.rb +25 -0
  86. data/lib/mongoid/extensions/object/reflections.rb +17 -0
  87. data/lib/mongoid/extensions/object/yoda.rb +27 -0
  88. data/lib/mongoid/extensions/object_id/conversions.rb +96 -0
  89. data/lib/mongoid/extensions/proc/scoping.rb +12 -0
  90. data/lib/mongoid/extensions/range/conversions.rb +25 -0
  91. data/lib/mongoid/extensions/set/conversions.rb +20 -0
  92. data/lib/mongoid/extensions/string/conversions.rb +34 -0
  93. data/lib/mongoid/extensions/string/inflections.rb +97 -0
  94. data/lib/mongoid/extensions/symbol/conversions.rb +21 -0
  95. data/lib/mongoid/extensions/symbol/inflections.rb +40 -0
  96. data/lib/mongoid/extensions/time_conversions.rb +38 -0
  97. data/lib/mongoid/extensions/true_class/equality.rb +13 -0
  98. data/lib/mongoid/extras.rb +42 -0
  99. data/lib/mongoid/factory.rb +37 -0
  100. data/lib/mongoid/field.rb +162 -0
  101. data/lib/mongoid/fields.rb +183 -0
  102. data/lib/mongoid/finders.rb +127 -0
  103. data/lib/mongoid/hierarchy.rb +85 -0
  104. data/lib/mongoid/identity.rb +92 -0
  105. data/lib/mongoid/indexes.rb +38 -0
  106. data/lib/mongoid/inspection.rb +54 -0
  107. data/lib/mongoid/javascript.rb +21 -0
  108. data/lib/mongoid/javascript/functions.yml +37 -0
  109. data/lib/mongoid/json.rb +16 -0
  110. data/lib/mongoid/keys.rb +131 -0
  111. data/lib/mongoid/logger.rb +18 -0
  112. data/lib/mongoid/matchers.rb +32 -0
  113. data/lib/mongoid/matchers/all.rb +11 -0
  114. data/lib/mongoid/matchers/default.rb +70 -0
  115. data/lib/mongoid/matchers/exists.rb +13 -0
  116. data/lib/mongoid/matchers/gt.rb +11 -0
  117. data/lib/mongoid/matchers/gte.rb +11 -0
  118. data/lib/mongoid/matchers/in.rb +11 -0
  119. data/lib/mongoid/matchers/lt.rb +11 -0
  120. data/lib/mongoid/matchers/lte.rb +11 -0
  121. data/lib/mongoid/matchers/ne.rb +11 -0
  122. data/lib/mongoid/matchers/nin.rb +11 -0
  123. data/lib/mongoid/matchers/or.rb +30 -0
  124. data/lib/mongoid/matchers/size.rb +11 -0
  125. data/lib/mongoid/matchers/strategies.rb +63 -0
  126. data/lib/mongoid/multi_database.rb +11 -0
  127. data/lib/mongoid/multi_parameter_attributes.rb +82 -0
  128. data/lib/mongoid/named_scope.rb +137 -0
  129. data/lib/mongoid/nested_attributes.rb +51 -0
  130. data/lib/mongoid/observer.rb +67 -0
  131. data/lib/mongoid/paranoia.rb +103 -0
  132. data/lib/mongoid/paths.rb +61 -0
  133. data/lib/mongoid/persistence.rb +240 -0
  134. data/lib/mongoid/persistence/atomic.rb +88 -0
  135. data/lib/mongoid/persistence/atomic/add_to_set.rb +32 -0
  136. data/lib/mongoid/persistence/atomic/inc.rb +28 -0
  137. data/lib/mongoid/persistence/atomic/operation.rb +44 -0
  138. data/lib/mongoid/persistence/atomic/pull_all.rb +33 -0
  139. data/lib/mongoid/persistence/atomic/push.rb +28 -0
  140. data/lib/mongoid/persistence/command.rb +71 -0
  141. data/lib/mongoid/persistence/insert.rb +53 -0
  142. data/lib/mongoid/persistence/insert_embedded.rb +43 -0
  143. data/lib/mongoid/persistence/remove.rb +44 -0
  144. data/lib/mongoid/persistence/remove_all.rb +40 -0
  145. data/lib/mongoid/persistence/remove_embedded.rb +48 -0
  146. data/lib/mongoid/persistence/update.rb +77 -0
  147. data/lib/mongoid/railtie.rb +139 -0
  148. data/lib/mongoid/railties/database.rake +171 -0
  149. data/lib/mongoid/railties/document.rb +12 -0
  150. data/lib/mongoid/relations.rb +107 -0
  151. data/lib/mongoid/relations/accessors.rb +175 -0
  152. data/lib/mongoid/relations/auto_save.rb +34 -0
  153. data/lib/mongoid/relations/binding.rb +26 -0
  154. data/lib/mongoid/relations/bindings.rb +9 -0
  155. data/lib/mongoid/relations/bindings/embedded/in.rb +82 -0
  156. data/lib/mongoid/relations/bindings/embedded/many.rb +98 -0
  157. data/lib/mongoid/relations/bindings/embedded/one.rb +66 -0
  158. data/lib/mongoid/relations/bindings/referenced/in.rb +74 -0
  159. data/lib/mongoid/relations/bindings/referenced/many.rb +96 -0
  160. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +103 -0
  161. data/lib/mongoid/relations/bindings/referenced/one.rb +66 -0
  162. data/lib/mongoid/relations/builder.rb +42 -0
  163. data/lib/mongoid/relations/builders.rb +79 -0
  164. data/lib/mongoid/relations/builders/embedded/in.rb +25 -0
  165. data/lib/mongoid/relations/builders/embedded/many.rb +32 -0
  166. data/lib/mongoid/relations/builders/embedded/one.rb +26 -0
  167. data/lib/mongoid/relations/builders/nested_attributes/many.rb +126 -0
  168. data/lib/mongoid/relations/builders/nested_attributes/one.rb +135 -0
  169. data/lib/mongoid/relations/builders/referenced/in.rb +29 -0
  170. data/lib/mongoid/relations/builders/referenced/many.rb +47 -0
  171. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +29 -0
  172. data/lib/mongoid/relations/builders/referenced/one.rb +27 -0
  173. data/lib/mongoid/relations/cascading.rb +55 -0
  174. data/lib/mongoid/relations/cascading/delete.rb +19 -0
  175. data/lib/mongoid/relations/cascading/destroy.rb +19 -0
  176. data/lib/mongoid/relations/cascading/nullify.rb +18 -0
  177. data/lib/mongoid/relations/cascading/strategy.rb +26 -0
  178. data/lib/mongoid/relations/constraint.rb +42 -0
  179. data/lib/mongoid/relations/cyclic.rb +103 -0
  180. data/lib/mongoid/relations/embedded/atomic.rb +86 -0
  181. data/lib/mongoid/relations/embedded/atomic/operation.rb +63 -0
  182. data/lib/mongoid/relations/embedded/atomic/pull.rb +65 -0
  183. data/lib/mongoid/relations/embedded/atomic/push_all.rb +59 -0
  184. data/lib/mongoid/relations/embedded/atomic/set.rb +61 -0
  185. data/lib/mongoid/relations/embedded/atomic/unset.rb +41 -0
  186. data/lib/mongoid/relations/embedded/in.rb +173 -0
  187. data/lib/mongoid/relations/embedded/many.rb +499 -0
  188. data/lib/mongoid/relations/embedded/one.rb +170 -0
  189. data/lib/mongoid/relations/macros.rb +310 -0
  190. data/lib/mongoid/relations/many.rb +215 -0
  191. data/lib/mongoid/relations/metadata.rb +539 -0
  192. data/lib/mongoid/relations/nested_builder.rb +68 -0
  193. data/lib/mongoid/relations/one.rb +47 -0
  194. data/lib/mongoid/relations/polymorphic.rb +54 -0
  195. data/lib/mongoid/relations/proxy.rb +143 -0
  196. data/lib/mongoid/relations/referenced/batch.rb +71 -0
  197. data/lib/mongoid/relations/referenced/batch/insert.rb +57 -0
  198. data/lib/mongoid/relations/referenced/in.rb +216 -0
  199. data/lib/mongoid/relations/referenced/many.rb +516 -0
  200. data/lib/mongoid/relations/referenced/many_to_many.rb +396 -0
  201. data/lib/mongoid/relations/referenced/one.rb +222 -0
  202. data/lib/mongoid/relations/reflections.rb +45 -0
  203. data/lib/mongoid/safe.rb +23 -0
  204. data/lib/mongoid/safety.rb +207 -0
  205. data/lib/mongoid/scope.rb +31 -0
  206. data/lib/mongoid/serialization.rb +99 -0
  207. data/lib/mongoid/sharding.rb +51 -0
  208. data/lib/mongoid/state.rb +67 -0
  209. data/lib/mongoid/timestamps.rb +14 -0
  210. data/lib/mongoid/timestamps/created.rb +31 -0
  211. data/lib/mongoid/timestamps/updated.rb +33 -0
  212. data/lib/mongoid/validations.rb +124 -0
  213. data/lib/mongoid/validations/associated.rb +44 -0
  214. data/lib/mongoid/validations/referenced.rb +58 -0
  215. data/lib/mongoid/validations/uniqueness.rb +85 -0
  216. data/lib/mongoid/version.rb +4 -0
  217. data/lib/mongoid/versioning.rb +113 -0
  218. data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
  219. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +20 -0
  220. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  221. data/lib/rails/generators/mongoid/model/templates/model.rb +19 -0
  222. data/lib/rails/generators/mongoid/observer/observer_generator.rb +17 -0
  223. data/lib/rails/generators/mongoid/observer/templates/observer.rb +4 -0
  224. data/lib/rails/generators/mongoid_generator.rb +70 -0
  225. data/lib/rails/mongoid.rb +58 -0
  226. metadata +406 -0
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Default parent Mongoid error for all custom errors. This handles the base
6
+ # key for the translations and provides the convenience method for
7
+ # translating the messages.
8
+ class MongoidError < StandardError
9
+ BASE_KEY = "mongoid.errors.messages"
10
+
11
+ # Given the key of the specific error and the options hash, translate the
12
+ # message.
13
+ #
14
+ # Options:
15
+ #
16
+ # key: The key of the error in the locales.
17
+ # options: The objects to pass to create the message.
18
+ #
19
+ # Returns:
20
+ #
21
+ # A localized error message string.
22
+ def translate(key, options)
23
+ ::I18n.translate("#{BASE_KEY}.#{key}", options)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module Mongoid #:nodoc
2
+ module Errors #:nodoc
3
+
4
+ # This error is raised when trying to create set nested records above the
5
+ # specified :limit
6
+ #
7
+ # Example:
8
+ #
9
+ #<tt>TooManyNestedAttributeRecords.new('association', limit)
10
+ class TooManyNestedAttributeRecords < MongoidError
11
+ def initialize(association, limit)
12
+ super(
13
+ translate(
14
+ "too_many_nested_attribute_records",
15
+ { :association => association, :limit => limit }
16
+ )
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when attempting to call create or create! through a
6
+ # references_many when the parent document has not been saved. This
7
+ # prevents the child from getting presisted and immediately being orphaned.
8
+ class UnsavedDocument < MongoidError
9
+
10
+ attr_reader :base, :document
11
+
12
+ def initialize(base, document)
13
+ @base, @document = base, document
14
+ super(
15
+ translate(
16
+ "unsaved_document",
17
+ { :base => base.class.name, :document => document.class.name }
18
+ )
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when the database version is not supported by Mongoid.
6
+ #
7
+ # Example:
8
+ #
9
+ # <tt>UnsupportedVersion.new(Mongo::ServerVersion.new("1.3.1"))</tt>
10
+ class UnsupportedVersion < MongoidError
11
+ def initialize(version)
12
+ super(
13
+ translate(
14
+ "unsupported_version",
15
+ { :version => version, :mongo_version => Mongoid::MONGODB_VERSION }
16
+ )
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc
3
+ module Errors #:nodoc
4
+
5
+ # Raised when a persistence method ending in ! fails validation. The message
6
+ # will contain the full error messages from the +Document+ in question.
7
+ #
8
+ # Example:
9
+ #
10
+ # <tt>Validations.new(person.errors)</tt>
11
+ class Validations < MongoidError
12
+ attr_reader :document
13
+ def initialize(document)
14
+ @document = document
15
+ super(
16
+ translate(
17
+ "validations",
18
+ { :errors => document.errors.full_messages.join(", ") }
19
+ )
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,123 @@
1
+ # encoding: utf-8
2
+ require "mongoid/extensions/time_conversions"
3
+ require "mongoid/extensions/array/conversions"
4
+ require "mongoid/extensions/array/parentization"
5
+ require "mongoid/extensions/set/conversions"
6
+ require "mongoid/extensions/big_decimal/conversions"
7
+ require "mongoid/extensions/binary/conversions"
8
+ require "mongoid/extensions/boolean/conversions"
9
+ require "mongoid/extensions/date/conversions"
10
+ require "mongoid/extensions/datetime/conversions"
11
+ require "mongoid/extensions/false_class/equality"
12
+ require "mongoid/extensions/float/conversions"
13
+ require "mongoid/extensions/hash/conversions"
14
+ require "mongoid/extensions/hash/criteria_helpers"
15
+ require "mongoid/extensions/hash/scoping"
16
+ require "mongoid/extensions/integer/conversions"
17
+ require "mongoid/extensions/nil/collectionization"
18
+ require "mongoid/extensions/object/checks"
19
+ require "mongoid/extensions/object/conversions"
20
+ require "mongoid/extensions/object/reflections"
21
+ require "mongoid/extensions/object/yoda"
22
+ require "mongoid/extensions/proc/scoping"
23
+ require "mongoid/extensions/range/conversions"
24
+ require "mongoid/extensions/string/conversions"
25
+ require "mongoid/extensions/string/inflections"
26
+ require "mongoid/extensions/symbol/inflections"
27
+ require "mongoid/extensions/symbol/conversions"
28
+ require "mongoid/extensions/true_class/equality"
29
+ require "mongoid/extensions/object_id/conversions"
30
+
31
+ class Array #:nodoc
32
+ include Mongoid::Extensions::Array::Conversions
33
+ include Mongoid::Extensions::Array::Parentization
34
+ end
35
+
36
+ class Set #:nodoc
37
+ include Mongoid::Extensions::Set::Conversions
38
+ end
39
+
40
+ class BigDecimal #:nodoc
41
+ extend Mongoid::Extensions::BigDecimal::Conversions
42
+ end
43
+
44
+ class Binary #:nodoc
45
+ extend Mongoid::Extensions::Binary::Conversions
46
+ end
47
+
48
+ class Boolean #:nodoc
49
+ include Mongoid::Extensions::Boolean::Conversions
50
+ end
51
+
52
+ class DateTime #:nodoc
53
+ extend Mongoid::Extensions::TimeConversions
54
+ extend Mongoid::Extensions::DateTime::Conversions
55
+ end
56
+
57
+ class Date #:nodoc
58
+ extend Mongoid::Extensions::TimeConversions
59
+ extend Mongoid::Extensions::Date::Conversions
60
+ end
61
+
62
+ class FalseClass #:nodoc
63
+ include Mongoid::Extensions::FalseClass::Equality
64
+ end
65
+
66
+ class Float #:nodoc
67
+ extend Mongoid::Extensions::Float::Conversions
68
+ end
69
+
70
+ class Hash #:nodoc
71
+ include Mongoid::Extensions::Hash::CriteriaHelpers
72
+ include Mongoid::Extensions::Hash::Scoping
73
+ include Mongoid::Extensions::Hash::Conversions
74
+ end
75
+
76
+ class Integer #:nodoc
77
+ extend Mongoid::Extensions::Integer::Conversions
78
+ end
79
+
80
+ class NilClass #:nodoc
81
+ include Mongoid::Extensions::Nil::Collectionization
82
+ end
83
+
84
+ class Object #:nodoc:
85
+ include Mongoid::Extensions::Object::Checks
86
+ include Mongoid::Extensions::Object::Conversions
87
+ include Mongoid::Extensions::Object::Reflections
88
+ include Mongoid::Extensions::Object::Yoda
89
+ end
90
+
91
+ class Proc #:nodoc:
92
+ include Mongoid::Extensions::Proc::Scoping
93
+ end
94
+
95
+ class Range
96
+ include Mongoid::Extensions::Range::Conversions
97
+ end
98
+
99
+ class String #:nodoc
100
+ include Mongoid::Extensions::String::Inflections
101
+ include Mongoid::Extensions::String::Conversions
102
+ end
103
+
104
+ class Symbol #:nodoc
105
+ remove_method :size if instance_methods.include? :size # temporal fix for ruby 1.9
106
+ include Mongoid::Extensions::Symbol::Inflections
107
+ include Mongoid::Extensions::Symbol::Conversions
108
+ end
109
+
110
+ class Time #:nodoc
111
+ extend Mongoid::Extensions::TimeConversions
112
+ end
113
+
114
+ class TrueClass #:nodoc
115
+ include Mongoid::Extensions::TrueClass::Equality
116
+ end
117
+
118
+ class BSON::ObjectId #:nodoc
119
+ extend Mongoid::Extensions::ObjectId::Conversions
120
+ def as_json(options = nil)
121
+ to_s
122
+ end
123
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Array #:nodoc:
5
+ # This module converts arrays into mongoid related objects.
6
+ module Conversions #:nodoc:
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods #:nodoc:
10
+ def raise_or_return(value)
11
+ unless value.nil? || value.is_a?(::Array)
12
+ raise Mongoid::Errors::InvalidType.new(::Array, value)
13
+ end
14
+ value
15
+ end
16
+
17
+ alias :get :raise_or_return
18
+ alias :set :raise_or_return
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Array #:nodoc:
5
+ module Parentization #:nodoc:
6
+ # Adds the parent document to each element in the array.
7
+ def parentize(parent)
8
+ each { |obj| obj.parentize(parent) }
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ require "bigdecimal"
3
+
4
+ module Mongoid #:nodoc:
5
+ module Extensions #:nodoc:
6
+ module BigDecimal #:nodoc:
7
+ module Conversions #:nodoc:
8
+ # Get the string as a +BigDecimal+
9
+ def get(value)
10
+ value ? ::BigDecimal.new(value) : value
11
+ end
12
+ # Set the value in the hash as a string.
13
+ def set(value)
14
+ value ? value.to_s : value
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Binary #:nodoc:
5
+ module Conversions #:nodoc:
6
+ # Get the value from the db hash.
7
+ def get(value)
8
+ value
9
+ end
10
+ # Set the value in the db hash.
11
+ def set(value)
12
+ value
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 Boolean #:nodoc:
5
+ module Conversions #:nodoc:
6
+ extend ActiveSupport::Concern
7
+
8
+ BOOLEAN_MAP = {
9
+ true => true, "true" => true, "TRUE" => true, "1" => true, 1 => true, 1.0 => true,
10
+ false => false, "false" => false, "FALSE" => false, "0" => false, 0 => false, 0.0 => false
11
+ }
12
+
13
+ module ClassMethods #:nodoc
14
+
15
+ def set(value)
16
+ value = BOOLEAN_MAP[value]
17
+ value.nil? ? nil : value
18
+ end
19
+
20
+ def get(value)
21
+ value
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Date #:nodoc:
5
+ module Conversions #:nodoc:
6
+ def get(value)
7
+ return nil if value.blank?
8
+ if Mongoid::Config.use_utc?
9
+ value.to_date
10
+ else
11
+ ::Date.new(value.year, value.month, value.day)
12
+ end
13
+ end
14
+
15
+ protected
16
+
17
+ def convert_to_time(value)
18
+ value = ::Date.parse(value) if value.is_a?(::String)
19
+ value = ::Date.civil(*value) if value.is_a?(::Array)
20
+ ::Time.utc(value.year, value.month, value.day)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module DateTime #:nodoc:
5
+ module Conversions #:nodoc:
6
+ def get(value)
7
+ super.try(:to_datetime)
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module FalseClass #:nodoc:
5
+ module Equality #:nodoc:
6
+ def is_a?(other)
7
+ return true if other.name == "Boolean"
8
+ super(other)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Float #:nodoc:
5
+ module Conversions #:nodoc:
6
+ def set(value)
7
+ return nil if value.blank?
8
+ begin
9
+ Float(value)
10
+ rescue ArgumentError => e
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,19 @@
1
+ # encoding: utf-8
2
+ module Mongoid #:nodoc:
3
+ module Extensions #:nodoc:
4
+ module Hash #:nodoc:
5
+ module Conversions #:nodoc:
6
+ extend ActiveSupport::Concern
7
+
8
+ module ClassMethods #:nodoc:
9
+ def get(value)
10
+ value
11
+ end
12
+ def set(value)
13
+ value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end