mack-data_mapper 0.8.2 → 0.8.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 (176) hide show
  1. data/lib/gems/{addressable-2.0.0 → addressable-2.0.1}/lib/addressable/idna.rb +0 -0
  2. data/lib/gems/{addressable-2.0.0 → addressable-2.0.1}/lib/addressable/uri.rb +62 -21
  3. data/lib/gems/{addressable-2.0.0 → addressable-2.0.1}/lib/addressable/version.rb +1 -1
  4. data/lib/gems/addressable-2.0.1/tasks/clobber.rake +2 -0
  5. data/lib/gems/addressable-2.0.1/tasks/gem.rake +68 -0
  6. data/lib/gems/addressable-2.0.1/tasks/git.rake +40 -0
  7. data/lib/gems/addressable-2.0.1/tasks/metrics.rake +22 -0
  8. data/lib/gems/addressable-2.0.1/tasks/rdoc.rake +29 -0
  9. data/lib/gems/addressable-2.0.1/tasks/rubyforge.rake +89 -0
  10. data/lib/gems/addressable-2.0.1/tasks/spec.rake +64 -0
  11. data/lib/gems/data_objects-0.9.10.1/lib/data_objects.rb +46 -0
  12. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/command.rb +30 -0
  13. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/connection.rb +107 -0
  14. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/field.rb +19 -0
  15. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/logger.rb +233 -0
  16. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/quoting.rb +103 -0
  17. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/reader.rb +22 -0
  18. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/result.rb +13 -0
  19. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/transaction.rb +45 -0
  20. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/uri.rb +34 -0
  21. data/lib/gems/data_objects-0.9.10.1/lib/data_objects/version.rb +3 -0
  22. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates.rb +1 -1
  23. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/adapters/data_objects_adapter.rb +0 -0
  24. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/aggregate_functions.rb +0 -0
  25. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/collection.rb +4 -0
  26. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/model.rb +4 -0
  27. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/repository.rb +0 -0
  28. data/lib/gems/{dm-aggregates-0.9.7 → dm-aggregates-0.9.9}/lib/dm-aggregates/support/symbol.rb +0 -0
  29. data/lib/gems/dm-aggregates-0.9.9/lib/dm-aggregates/version.rb +5 -0
  30. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core.rb +5 -5
  31. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters.rb +0 -0
  32. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/abstract_adapter.rb +0 -0
  33. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/data_objects_adapter.rb +1 -1
  34. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/in_memory_adapter.rb +0 -0
  35. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/mysql_adapter.rb +1 -1
  36. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/postgres_adapter.rb +1 -1
  37. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/adapters/sqlite3_adapter.rb +1 -1
  38. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations.rb +0 -0
  39. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/many_to_many.rb +0 -0
  40. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/many_to_one.rb +1 -1
  41. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/one_to_many.rb +3 -6
  42. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/one_to_one.rb +0 -0
  43. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/relationship.rb +0 -0
  44. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/associations/relationship_chain.rb +0 -0
  45. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/auto_migrations.rb +0 -0
  46. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/collection.rb +26 -0
  47. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/dependency_queue.rb +0 -0
  48. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/hook.rb +0 -0
  49. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/identity_map.rb +0 -0
  50. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/is.rb +0 -0
  51. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/logger.rb +0 -0
  52. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/migrations/destructive_migrations.rb +0 -0
  53. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/migrator.rb +0 -0
  54. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/model.rb +29 -3
  55. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/naming_conventions.rb +0 -0
  56. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/property.rb +13 -0
  57. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/property_set.rb +0 -0
  58. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/query.rb +51 -3
  59. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/repository.rb +8 -0
  60. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/resource.rb +19 -6
  61. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/scope.rb +0 -0
  62. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support.rb +0 -0
  63. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support/array.rb +0 -0
  64. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support/assertions.rb +0 -0
  65. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support/errors.rb +0 -0
  66. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support/kernel.rb +0 -0
  67. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/support/symbol.rb +0 -0
  68. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/transaction.rb +0 -0
  69. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/type.rb +0 -0
  70. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/type_map.rb +0 -0
  71. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types.rb +0 -0
  72. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/boolean.rb +0 -0
  73. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/discriminator.rb +0 -0
  74. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/object.rb +0 -0
  75. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/paranoid_boolean.rb +0 -0
  76. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/paranoid_datetime.rb +0 -0
  77. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/serial.rb +0 -0
  78. data/lib/gems/{dm-core-0.9.7 → dm-core-0.9.9}/lib/dm-core/types/text.rb +0 -0
  79. data/lib/gems/dm-core-0.9.9/lib/dm-core/version.rb +3 -0
  80. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/dm-migrations.rb +0 -0
  81. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/dm-migrations/version.rb +1 -1
  82. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/migration.rb +5 -3
  83. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/migration_runner.rb +0 -0
  84. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/spec/example/migration_example_group.rb +0 -0
  85. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/spec/matchers/migration_matchers.rb +0 -0
  86. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql.rb +0 -0
  87. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/column.rb +0 -0
  88. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/mysql.rb +0 -0
  89. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/postgresql.rb +0 -0
  90. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/sqlite3.rb +0 -0
  91. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/table.rb +0 -0
  92. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/table_creator.rb +0 -0
  93. data/lib/gems/{dm-migrations-0.9.7 → dm-migrations-0.9.9}/lib/sql/table_modifier.rb +0 -0
  94. data/lib/gems/dm-migrations-0.9.9/tasks/db.rb +22 -0
  95. data/lib/gems/dm-migrations-0.9.9/tasks/install.rb +13 -0
  96. data/lib/gems/dm-migrations-0.9.9/tasks/spec.rb +25 -0
  97. data/lib/gems/{dm-observer-0.9.7 → dm-observer-0.9.9}/lib/dm-observer.rb +1 -1
  98. data/lib/gems/{dm-observer-0.9.7 → dm-observer-0.9.9}/lib/dm-observer/version.rb +1 -1
  99. data/lib/gems/dm-observer-0.9.9/tasks/install.rb +13 -0
  100. data/lib/gems/dm-observer-0.9.9/tasks/spec.rb +25 -0
  101. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer.rb +4 -0
  102. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/common.rb +24 -0
  103. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/to_csv.rb +35 -0
  104. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/to_json.rb +73 -0
  105. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/to_xml.rb +61 -0
  106. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/to_yaml.rb +48 -0
  107. data/lib/gems/{dm-serializer-0.9.7 → dm-serializer-0.9.9}/lib/dm-serializer/version.rb +1 -1
  108. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/xml_serializers.rb +17 -0
  109. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/xml_serializers/libxml.rb +29 -0
  110. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/xml_serializers/nokogiri.rb +28 -0
  111. data/lib/gems/dm-serializer-0.9.9/lib/dm-serializer/xml_serializers/rexml.rb +23 -0
  112. data/lib/gems/dm-serializer-0.9.9/tasks/install.rb +13 -0
  113. data/lib/gems/dm-serializer-0.9.9/tasks/spec.rb +25 -0
  114. data/lib/gems/dm-timestamps-0.9.9/lib/dm-timestamps.rb +58 -0
  115. data/lib/gems/{dm-timestamps-0.9.7 → dm-timestamps-0.9.9}/lib/dm-timestamps/version.rb +1 -1
  116. data/lib/gems/dm-timestamps-0.9.9/tasks/install.rb +13 -0
  117. data/lib/gems/dm-timestamps-0.9.9/tasks/spec.rb +25 -0
  118. data/lib/gems/dm-types-0.9.9/lib/dm-types.rb +26 -0
  119. data/lib/gems/dm-types-0.9.9/lib/dm-types/bcrypt_hash.rb +33 -0
  120. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/csv.rb +0 -0
  121. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/enum.rb +4 -4
  122. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/epoch_time.rb +0 -0
  123. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/file_path.rb +0 -0
  124. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/flag.rb +0 -0
  125. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/ip_address.rb +0 -0
  126. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/json.rb +3 -6
  127. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/regexp.rb +0 -0
  128. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/serial.rb +0 -0
  129. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/slug.rb +0 -0
  130. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/uri.rb +2 -0
  131. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/uuid.rb +3 -0
  132. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/version.rb +1 -1
  133. data/lib/gems/{dm-types-0.9.7 → dm-types-0.9.9}/lib/dm-types/yaml.rb +1 -2
  134. data/lib/gems/dm-types-0.9.9/tasks/install.rb +13 -0
  135. data/lib/gems/dm-types-0.9.9/tasks/spec.rb +25 -0
  136. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations.rb +1 -1
  137. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/absent_field_validator.rb +0 -0
  138. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/acceptance_validator.rb +0 -0
  139. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/auto_validate.rb +0 -0
  140. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/block_validator.rb +0 -0
  141. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/confirmation_validator.rb +0 -0
  142. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/contextual_validators.rb +2 -3
  143. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/custom_validator.rb +0 -0
  144. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/format_validator.rb +0 -0
  145. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/formats/email.rb +1 -0
  146. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/formats/url.rb +0 -0
  147. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/generic_validator.rb +0 -0
  148. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/length_validator.rb +0 -0
  149. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/method_validator.rb +0 -0
  150. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/numeric_validator.rb +0 -0
  151. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/primitive_validator.rb +0 -0
  152. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/required_field_validator.rb +0 -0
  153. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/support/object.rb +0 -0
  154. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/uniqueness_validator.rb +1 -1
  155. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/validation_errors.rb +0 -0
  156. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/version.rb +1 -1
  157. data/lib/gems/{dm-validations-0.9.7 → dm-validations-0.9.9}/lib/dm-validations/within_validator.rb +0 -0
  158. data/lib/gems/dm-validations-0.9.9/tasks/install.rb +13 -0
  159. data/lib/gems/dm-validations-0.9.9/tasks/spec.rb +25 -0
  160. data/lib/gems/json_pure-1.1.3/tools/fuzz.rb +140 -0
  161. data/lib/gems/json_pure-1.1.3/tools/server.rb +62 -0
  162. data/lib/mack-data_mapper/dm_patches/migrations.rb +22 -1
  163. data/lib/mack-data_mapper/migration_generator/templates/db/migrations/%=@migration_name%.rb.template +1 -1
  164. metadata +216 -172
  165. data/lib/gems/dm-aggregates-0.9.7/lib/dm-aggregates/version.rb +0 -7
  166. data/lib/gems/dm-core-0.9.7/lib/dm-core/version.rb +0 -3
  167. data/lib/gems/dm-core-0.9.7/script/all +0 -5
  168. data/lib/gems/dm-core-0.9.7/script/performance.rb +0 -284
  169. data/lib/gems/dm-core-0.9.7/script/profile.rb +0 -87
  170. data/lib/gems/dm-serializer-0.9.7/lib/dm-serializer.rb +0 -183
  171. data/lib/gems/dm-timestamps-0.9.7/lib/dm-timestamps.rb +0 -57
  172. data/lib/gems/dm-types-0.9.7/lib/dm-types.rb +0 -28
  173. data/lib/gems/dm-types-0.9.7/lib/dm-types/bcrypt_hash.rb +0 -31
  174. data/lib/gems/json_pure-1.1.3/GPL +0 -340
  175. data/lib/gems/uuidtools-1.0.3/lib/uuidtools.rb +0 -648
  176. data/lib/gems/uuidtools-1.0.3/lib/uuidtools/version.rb +0 -32
@@ -0,0 +1,61 @@
1
+ require 'dm-serializer/common'
2
+ require 'dm-serializer/xml_serializers'
3
+ require 'rexml/document'
4
+
5
+ module DataMapper
6
+ module Serialize
7
+ # Serialize a Resource to XML
8
+ #
9
+ # @return <REXML::Document> an XML representation of this Resource
10
+ def to_xml(opts = {})
11
+ to_xml_document(opts).to_s
12
+ end
13
+
14
+ protected
15
+ # This method requires certain methods to be implemented in the individual
16
+ # serializer library subclasses:
17
+ # new_document
18
+ # root_node
19
+ # add_property_node
20
+ # add_node
21
+ def to_xml_document(opts={}, doc = nil)
22
+ xml = XMLSerializers::SERIALIZER
23
+ doc ||= xml.new_document
24
+ default_xml_element_name = lambda { Extlib::Inflection.underscore(self.class.name).tr("/", "-") }
25
+ root = xml.root_node(doc, opts[:element_name] || default_xml_element_name[])
26
+ properties_to_serialize(opts).each do |property|
27
+ value = send(property.name)
28
+ attrs = (property.type == String) ? {} : {'type' => property.type.to_s.downcase}
29
+ xml.add_node(root, property.name.to_s, value, attrs)
30
+ end
31
+
32
+ (opts[:methods] || []).each do |meth|
33
+ if self.respond_to?(meth)
34
+ xml_name = meth.to_s.gsub(/[^a-z0-9_]/, '')
35
+ value = send(meth)
36
+ xml.add_node(root, xml_name, value.to_s) unless value.nil?
37
+ end
38
+ end
39
+ doc
40
+ end
41
+ end
42
+
43
+ class Collection
44
+ def to_xml(opts = {})
45
+ to_xml_document(opts).to_s
46
+ end
47
+
48
+ protected
49
+
50
+ def to_xml_document(opts = {})
51
+ xml = DataMapper::Serialize::XMLSerializers::SERIALIZER
52
+ doc = xml.new_document
53
+ default_collection_element_name = lambda {Extlib::Inflection.pluralize(Extlib::Inflection.underscore(self.model.to_s)).tr("/", "-")}
54
+ root = xml.root_node(doc, opts[:collection_element_name] || default_collection_element_name[], {'type' => 'array'})
55
+ self.each do |item|
56
+ item.send(:to_xml_document, opts, doc)
57
+ end
58
+ doc
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,48 @@
1
+ require 'dm-serializer/common'
2
+
3
+ module DataMapper
4
+ module Serialize
5
+ # Serialize a Resource to YAML
6
+ #
7
+ # @return <YAML> a YAML representation of this Resource
8
+ def to_yaml(opts_or_emitter = {})
9
+ if opts_or_emitter.is_a?(YAML::Syck::Emitter)
10
+ emitter = opts_or_emitter
11
+ opts = {}
12
+ else
13
+ emitter = {}
14
+ opts = opts_or_emitter
15
+ end
16
+
17
+ YAML::quick_emit(object_id,emitter) do |out|
18
+ out.map(nil,to_yaml_style) do |map|
19
+ propset = properties_to_serialize(opts)
20
+ propset.each do |property|
21
+ value = send(property.name.to_sym)
22
+ map.add(property.name, value.is_a?(Class) ? value.to_s : value)
23
+ end
24
+ # add methods
25
+ (opts[:methods] || []).each do |meth|
26
+ if self.respond_to?(meth)
27
+ map.add(meth.to_sym, send(meth))
28
+ end
29
+ end
30
+ (instance_variable_get("@yaml_addes") || []).each do |k,v|
31
+ map.add(k.to_s,v)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ class Collection
39
+ def to_yaml(opts_or_emitter = {})
40
+ if opts_or_emitter.is_a?(YAML::Syck::Emitter)
41
+ to_a.to_yaml(opts_or_emitter)
42
+ else
43
+ # FIXME: Don't double handle the YAML (remove the YAML.load)
44
+ to_a.collect {|x| YAML.load(x.to_yaml(opts_or_emitter)) }.to_yaml
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module Serializer
3
- VERSION = "0.9.7"
3
+ VERSION = '0.9.9'
4
4
  end
5
5
  end
@@ -0,0 +1,17 @@
1
+ require 'dm-serializer/xml_serializers/rexml'
2
+ require 'dm-serializer/xml_serializers/nokogiri'
3
+ require 'dm-serializer/xml_serializers/libxml'
4
+
5
+ module DataMapper
6
+ module Serialize
7
+ module XMLSerializers
8
+ SERIALIZER = if defined?(::LibXML)
9
+ LibXML
10
+ elsif defined?(::Nokogiri)
11
+ Nokogiri
12
+ else
13
+ REXML
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ module DataMapper
2
+ module Serialize
3
+ module XMLSerializers
4
+ module LibXML
5
+ def self.new_document
6
+ ::LibXML::XML::Document.new
7
+ end
8
+
9
+ def self.root_node(doc, name, attrs = {})
10
+ root = ::LibXML::XML::Node.new(name)
11
+ attrs.each do |attr_name, attr_val|
12
+ root[attr_name] = attr_val
13
+ end
14
+ doc.root.nil? ? doc.root = root : doc.root << root
15
+ root
16
+ end
17
+
18
+ def self.add_node(parent, name, value, attrs = {})
19
+ value_str = value.to_s unless value.nil?
20
+ node = ::LibXML::XML::Node.new(name, value_str)
21
+ attrs.each do |attr_name, attr_val|
22
+ node[attr_name] = attr_val
23
+ end
24
+ parent << node
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ module DataMapper
2
+ module Serialize
3
+ module XMLSerializers
4
+ module Nokogiri
5
+ def self.new_document
6
+ ::Nokogiri::XML::Document.new
7
+ end
8
+
9
+ def self.root_node(doc, name, attrs = {})
10
+ root = ::Nokogiri::XML::Node.new(name, doc)
11
+ attrs.each do |attr_name, attr_val|
12
+ root[attr_name] = attr_val
13
+ end
14
+ doc.root.nil? ? doc.root = root : doc.root << root
15
+ root
16
+ end
17
+
18
+ def self.add_node(parent, name, value, attrs = {})
19
+ node = ::Nokogiri::XML::Node.new(name, parent.document)
20
+ node << ::Nokogiri::XML::Text.new(value.to_s, parent.document) unless value.nil?
21
+ attrs.each {|attr_name, attr_val| node[attr_name] = attr_val }
22
+ parent << node
23
+ node
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ module DataMapper
2
+ module Serialize
3
+ module XMLSerializers
4
+ module REXML
5
+ def self.new_document
6
+ ::REXML::Document.new
7
+ end
8
+
9
+ def self.root_node(document, name, attrs = {})
10
+ add_node(document.root || document, name, nil, attrs)
11
+ end
12
+
13
+ def self.add_node(parent, name, value, attrs = {})
14
+ node = parent.add_element(name)
15
+ attrs.each {|attr_name, attr_val| node.attributes[attr_name] = attr_val}
16
+ node << ::REXML::Text.new(value.to_s) unless value.nil?
17
+ node
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ def sudo_gem(cmd)
2
+ sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
+ end
4
+
5
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
+ task :install => [ :package ] do
7
+ sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
+ end
9
+
10
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
+ task :uninstall => [ :clobber ] do
12
+ sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
+ end
@@ -0,0 +1,25 @@
1
+ begin
2
+ gem 'rspec', '~>1.1.11'
3
+ require 'spec'
4
+ require 'spec/rake/spectask'
5
+
6
+ task :default => [ :spec ]
7
+
8
+ desc 'Run specifications'
9
+ Spec::Rake::SpecTask.new(:spec) do |t|
10
+ t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
11
+ t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
12
+
13
+ begin
14
+ gem 'rcov', '~>0.8'
15
+ t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
16
+ t.rcov_opts << '--exclude' << 'spec'
17
+ t.rcov_opts << '--text-summary'
18
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
19
+ rescue LoadError
20
+ # rcov not installed
21
+ end
22
+ end
23
+ rescue LoadError
24
+ # rspec not installed
25
+ end
@@ -0,0 +1,58 @@
1
+ require 'rubygems'
2
+
3
+ gem 'dm-core', '~>0.9.9'
4
+ require 'dm-core'
5
+
6
+ module DataMapper
7
+ module Timestamp
8
+ Resource.append_inclusions self
9
+
10
+ TIMESTAMP_PROPERTIES = {
11
+ :updated_at => [ DateTime, lambda { |r, p| DateTime.now } ],
12
+ :updated_on => [ Date, lambda { |r, p| Date.today } ],
13
+ :created_at => [ DateTime, lambda { |r, p| r.created_at || (DateTime.now if r.new_record?) } ],
14
+ :created_on => [ Date, lambda { |r, p| r.created_on || (Date.today if r.new_record?) } ],
15
+ }.freeze
16
+
17
+ def self.included(model)
18
+ model.before :create, :set_timestamps
19
+ model.before :update, :set_timestamps
20
+ model.extend ClassMethods
21
+ end
22
+
23
+ private
24
+
25
+ def set_timestamps
26
+ return unless dirty?
27
+ TIMESTAMP_PROPERTIES.each do |name,(_type,proc)|
28
+ if model.properties.has_property?(name)
29
+ model.properties[name].set(self, proc.call(self, model.properties[name])) unless attribute_dirty?(name)
30
+ end
31
+ end
32
+ end
33
+
34
+ module ClassMethods
35
+ def timestamps(*names)
36
+ raise ArgumentError, 'You need to pass at least one argument' if names.empty?
37
+
38
+ names.each do |name|
39
+ case name
40
+ when *TIMESTAMP_PROPERTIES.keys
41
+ type = TIMESTAMP_PROPERTIES[name].first
42
+ property name, type, :nullable => false, :auto_validation => false
43
+ when :at
44
+ timestamps(:created_at, :updated_at)
45
+ when :on
46
+ timestamps(:created_on, :updated_on)
47
+ else
48
+ raise InvalidTimestampName, "Invalid timestamp property name '#{name}'"
49
+ end
50
+ end
51
+ end
52
+ end # module ClassMethods
53
+
54
+ class InvalidTimestampName < RuntimeError; end
55
+ end # module Timestamp
56
+ # include Timestamp or Timestamps, it still works
57
+ Timestamps = Timestamp
58
+ end # module DataMapper
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module Timestamps
3
- VERSION = "0.9.7"
3
+ VERSION = '0.9.9'
4
4
  end
5
5
  end
@@ -0,0 +1,13 @@
1
+ def sudo_gem(cmd)
2
+ sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
3
+ end
4
+
5
+ desc "Install #{GEM_NAME} #{GEM_VERSION}"
6
+ task :install => [ :package ] do
7
+ sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
8
+ end
9
+
10
+ desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
11
+ task :uninstall => [ :clobber ] do
12
+ sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
13
+ end
@@ -0,0 +1,25 @@
1
+ begin
2
+ gem 'rspec', '~>1.1.11'
3
+ require 'spec'
4
+ require 'spec/rake/spectask'
5
+
6
+ task :default => [ :spec ]
7
+
8
+ desc 'Run specifications'
9
+ Spec::Rake::SpecTask.new(:spec) do |t|
10
+ t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
11
+ t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
12
+
13
+ begin
14
+ gem 'rcov', '~>0.8'
15
+ t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
16
+ t.rcov_opts << '--exclude' << 'spec'
17
+ t.rcov_opts << '--text-summary'
18
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
19
+ rescue LoadError
20
+ # rcov not installed
21
+ end
22
+ end
23
+ rescue LoadError
24
+ # rspec not installed
25
+ end
@@ -0,0 +1,26 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ gem 'dm-core', '~>0.9.9'
5
+ require 'dm-core'
6
+
7
+ module DataMapper
8
+ module Types
9
+ dir = (Pathname(__FILE__).dirname.expand_path / 'dm-types').to_s
10
+
11
+ autoload :BCryptHash, dir / 'bcrypt_hash'
12
+ autoload :Csv, dir / 'csv'
13
+ autoload :Enum, dir / 'enum'
14
+ autoload :EpochTime, dir / 'epoch_time'
15
+ autoload :FilePath, dir / 'file_path'
16
+ autoload :Flag, dir / 'flag'
17
+ autoload :IPAddress, dir / 'ip_address'
18
+ autoload :Json, dir / 'json'
19
+ autoload :Regexp, dir / 'regexp'
20
+ autoload :Serial, dir / 'serial'
21
+ autoload :Slug, dir / 'slug'
22
+ autoload :URI, dir / 'uri'
23
+ autoload :UUID, dir / 'uuid'
24
+ autoload :Yaml, dir / 'yaml'
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+
3
+ gem 'bcrypt-ruby', '~>2.0.3'
4
+ require 'bcrypt'
5
+
6
+ module DataMapper
7
+ module Types
8
+ class BCryptHash < DataMapper::Type
9
+ primitive String
10
+ size 60
11
+
12
+ def self.load(value, property)
13
+ typecast(value, property)
14
+ end
15
+
16
+ def self.dump(value, property)
17
+ typecast(value, property)
18
+ end
19
+
20
+ def self.typecast(value, property)
21
+ if value.nil?
22
+ nil
23
+ else
24
+ begin
25
+ value.is_a?(BCrypt::Password) ? value : BCrypt::Password.new(value)
26
+ rescue BCrypt::Errors::InvalidHash
27
+ BCrypt::Password.create(value, :cost => BCrypt::Engine::DEFAULT_COST)
28
+ end
29
+ end
30
+ end
31
+ end # class BCryptHash
32
+ end # module Types
33
+ end # module DataMapper
@@ -34,8 +34,8 @@ module DataMapper
34
34
 
35
35
  def self.dump(value, property)
36
36
  case value
37
- when Array then value.collect { |v| self.dump(v, property) }
38
- else self.flag_map.invert[value]
37
+ when Array then value.collect { |v| self.dump(v, property) }
38
+ else self.flag_map.invert[value]
39
39
  end
40
40
  end
41
41
 
@@ -46,7 +46,7 @@ module DataMapper
46
46
  when Symbol then value.to_sym
47
47
  when String then value.to_s
48
48
  when Fixnum then value.to_i
49
- else value
49
+ else value
50
50
  end
51
51
  end
52
52
  end # class Enum
@@ -61,7 +61,7 @@ module DataMapper
61
61
  return unless property.options[:auto_validation]
62
62
 
63
63
  if property.type.ancestors.include?(Types::Enum)
64
- validates_within property.name, options_with_message({:set => property.type.flag_map.values}, property, :within)
64
+ validates_within property.name, options_with_message({:set => property.type.flag_map.values}, property, :within)
65
65
  end
66
66
  end
67
67
  end