enterprisifier 0.0.1

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 (303) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.md +3 -0
  5. data/Rakefile +57 -0
  6. data/VERSION +1 -0
  7. data/lib/enterprisifier.rb +7 -0
  8. data/lib/enterprisifier/code_generation.rb +1 -0
  9. data/lib/enterprisifier/code_generation/code_builder.rb +33 -0
  10. data/lib/enterprisifier/code_generation/code_generator.rb +281 -0
  11. data/lib/enterprisifier/code_generation/generator.rb +102 -0
  12. data/lib/enterprisifier/code_generation/generators/attribute_generator.rb +22 -0
  13. data/lib/enterprisifier/code_generation/generators/choice_generator.rb +12 -0
  14. data/lib/enterprisifier/code_generation/generators/complex_content_generator.rb +12 -0
  15. data/lib/enterprisifier/code_generation/generators/complex_type_generator.rb +12 -0
  16. data/lib/enterprisifier/code_generation/generators/element_generator.rb +28 -0
  17. data/lib/enterprisifier/code_generation/generators/extension_generator.rb +11 -0
  18. data/lib/enterprisifier/code_generation/generators/group_generator.rb +27 -0
  19. data/lib/enterprisifier/code_generation/generators/restriction_generator.rb +11 -0
  20. data/lib/enterprisifier/code_generation/generators/sequence_generator.rb +12 -0
  21. data/lib/enterprisifier/code_generation/generators/simple_content_generator.rb +12 -0
  22. data/lib/enterprisifier/code_generation/generators/simple_type_generator.rb +11 -0
  23. data/lib/enterprisifier/code_generation/generators/union_generator.rb +34 -0
  24. data/lib/enterprisifier/constants.rb +3 -0
  25. data/lib/enterprisifier/logging.rb +5 -0
  26. data/lib/enterprisifier/marshalling.rb +0 -0
  27. data/lib/enterprisifier/marshalling/builder.rb +11 -0
  28. data/lib/enterprisifier/marshalling/instantiatable_element.rb +170 -0
  29. data/lib/enterprisifier/marshalling/namespace.rb +23 -0
  30. data/lib/enterprisifier/marshalling/reification.rb +30 -0
  31. data/lib/enterprisifier/marshalling/schema_composition.rb +170 -0
  32. data/lib/enterprisifier/marshalling/xsd/schema/attribute.rb +48 -0
  33. data/lib/enterprisifier/marshalling/xsd/schema/choice.rb +18 -0
  34. data/lib/enterprisifier/marshalling/xsd/schema/complex_content.rb +18 -0
  35. data/lib/enterprisifier/marshalling/xsd/schema/complex_type.rb +28 -0
  36. data/lib/enterprisifier/marshalling/xsd/schema/element.rb +92 -0
  37. data/lib/enterprisifier/marshalling/xsd/schema/extension.rb +29 -0
  38. data/lib/enterprisifier/marshalling/xsd/schema/group.rb +22 -0
  39. data/lib/enterprisifier/marshalling/xsd/schema/restriction.rb +29 -0
  40. data/lib/enterprisifier/marshalling/xsd/schema/sequence.rb +21 -0
  41. data/lib/enterprisifier/marshalling/xsd/schema/simple_content.rb +18 -0
  42. data/lib/enterprisifier/marshalling/xsd/schema/simple_type.rb +23 -0
  43. data/lib/enterprisifier/marshalling/xsd/schema/union.rb +23 -0
  44. data/lib/enterprisifier/marshalling/xsd/types/boolean.rb +14 -0
  45. data/lib/enterprisifier/marshalling/xsd/types/date.rb +13 -0
  46. data/lib/enterprisifier/marshalling/xsd/types/date_time.rb +13 -0
  47. data/lib/enterprisifier/marshalling/xsd/types/decimal.rb +13 -0
  48. data/lib/enterprisifier/marshalling/xsd/types/string.rb +14 -0
  49. data/lib/enterprisifier/marshalling/xsd/types/time.rb +14 -0
  50. data/lib/enterprisifier/schema.rb +1 -0
  51. data/lib/enterprisifier/schema/base_element.rb +156 -0
  52. data/lib/enterprisifier/schema/element_factory.rb +29 -0
  53. data/lib/enterprisifier/schema/elements/annotation.rb +20 -0
  54. data/lib/enterprisifier/schema/elements/attribute.rb +22 -0
  55. data/lib/enterprisifier/schema/elements/choice.rb +13 -0
  56. data/lib/enterprisifier/schema/elements/complex_content.rb +13 -0
  57. data/lib/enterprisifier/schema/elements/complex_type.rb +13 -0
  58. data/lib/enterprisifier/schema/elements/documentation.rb +12 -0
  59. data/lib/enterprisifier/schema/elements/element.rb +23 -0
  60. data/lib/enterprisifier/schema/elements/enumeration.rb +12 -0
  61. data/lib/enterprisifier/schema/elements/extension.rb +12 -0
  62. data/lib/enterprisifier/schema/elements/fraction_digits.rb +12 -0
  63. data/lib/enterprisifier/schema/elements/group.rb +12 -0
  64. data/lib/enterprisifier/schema/elements/import.rb +28 -0
  65. data/lib/enterprisifier/schema/elements/include.rb +28 -0
  66. data/lib/enterprisifier/schema/elements/max_inclusive.rb +12 -0
  67. data/lib/enterprisifier/schema/elements/min_inclusive.rb +12 -0
  68. data/lib/enterprisifier/schema/elements/pattern.rb +12 -0
  69. data/lib/enterprisifier/schema/elements/restriction.rb +12 -0
  70. data/lib/enterprisifier/schema/elements/schema.rb +71 -0
  71. data/lib/enterprisifier/schema/elements/sequence.rb +12 -0
  72. data/lib/enterprisifier/schema/elements/simple_content.rb +12 -0
  73. data/lib/enterprisifier/schema/elements/simple_type.rb +12 -0
  74. data/lib/enterprisifier/schema/elements/union.rb +17 -0
  75. data/lib/enterprisifier/schema/elements/unknown_element.rb +12 -0
  76. data/lib/enterprisifier/schema/loader.rb +61 -0
  77. data/test/enterprisifier_test.rb +35 -0
  78. data/test/example/e_business_for_media/aaaa/elements/aaaa_message_header.rb +15 -0
  79. data/test/example/e_business_for_media/aaaa/elements/aaaa_values.rb +52 -0
  80. data/test/example/e_business_for_media/aaaa/elements/action.rb +17 -0
  81. data/test/example/e_business_for_media/aaaa/elements/business_object.rb +17 -0
  82. data/test/example/e_business_for_media/aaaa/elements/media.rb +17 -0
  83. data/test/example/e_business_for_media/aaaa/elements/schema_name.rb +17 -0
  84. data/test/example/e_business_for_media/aaaa/elements/schema_version.rb +17 -0
  85. data/test/example/e_business_for_media/aaaa/elements/unique_message_id.rb +19 -0
  86. data/test/example/e_business_for_media/aaaa/types/aaaa_message_type.rb +58 -0
  87. data/test/example/e_business_for_media/aaaa/types/action_string.rb +18 -0
  88. data/test/example/e_business_for_media/aaaa/types/business_object_string.rb +18 -0
  89. data/test/example/e_business_for_media/aaaa/types/guid.rb +20 -0
  90. data/test/example/e_business_for_media/aaaa/types/media_string.rb +19 -0
  91. data/test/example/e_business_for_media/aaaa/types/schema_name_string.rb +18 -0
  92. data/test/example/e_business_for_media/aaaa/types/schema_version_string.rb +18 -0
  93. data/test/example/e_business_for_media/aaaa/types/unique_message_id.rb +18 -0
  94. data/test/example/e_business_for_media/iab/attributes/currency.rb +17 -0
  95. data/test/example/e_business_for_media/iab/attributes/id_owner.rb +19 -0
  96. data/test/example/e_business_for_media/iab/attributes/name.rb +19 -0
  97. data/test/example/e_business_for_media/iab/attributes/prefix.rb +18 -0
  98. data/test/example/e_business_for_media/iab/attributes/primary.rb +33 -0
  99. data/test/example/e_business_for_media/iab/attributes/script.rb +23 -0
  100. data/test/example/e_business_for_media/iab/attributes/sms_enabled.rb +20 -0
  101. data/test/example/e_business_for_media/iab/attributes/type.rb +30 -0
  102. data/test/example/e_business_for_media/iab/attributes/valid_from.rb +18 -0
  103. data/test/example/e_business_for_media/iab/attributes/valid_to.rb +18 -0
  104. data/test/example/e_business_for_media/iab/elements/ad_server.rb +17 -0
  105. data/test/example/e_business_for_media/iab/elements/additional_metrics.rb +16 -0
  106. data/test/example/e_business_for_media/iab/elements/address.rb +16 -0
  107. data/test/example/e_business_for_media/iab/elements/address_line.rb +22 -0
  108. data/test/example/e_business_for_media/iab/elements/advertiser.rb +17 -0
  109. data/test/example/e_business_for_media/iab/elements/affix.rb +53 -0
  110. data/test/example/e_business_for_media/iab/elements/agency.rb +19 -0
  111. data/test/example/e_business_for_media/iab/elements/agency_commission.rb +19 -0
  112. data/test/example/e_business_for_media/iab/elements/alternate_script.rb +147 -0
  113. data/test/example/e_business_for_media/iab/elements/amount.rb +16 -0
  114. data/test/example/e_business_for_media/iab/elements/area_city_code.rb +18 -0
  115. data/test/example/e_business_for_media/iab/elements/attachments.rb +18 -0
  116. data/test/example/e_business_for_media/iab/elements/audience.rb +17 -0
  117. data/test/example/e_business_for_media/iab/elements/background.rb +15 -0
  118. data/test/example/e_business_for_media/iab/elements/basis.rb +26 -0
  119. data/test/example/e_business_for_media/iab/elements/billing_frequency.rb +15 -0
  120. data/test/example/e_business_for_media/iab/elements/billing_info.rb +16 -0
  121. data/test/example/e_business_for_media/iab/elements/billing_notes.rb +16 -0
  122. data/test/example/e_business_for_media/iab/elements/billing_partner.rb +16 -0
  123. data/test/example/e_business_for_media/iab/elements/billing_statistics_source.rb +16 -0
  124. data/test/example/e_business_for_media/iab/elements/brand_name.rb +17 -0
  125. data/test/example/e_business_for_media/iab/elements/budget.rb +16 -0
  126. data/test/example/e_business_for_media/iab/elements/building_number.rb +23 -0
  127. data/test/example/e_business_for_media/iab/elements/campaign_brief.rb +38 -0
  128. data/test/example/e_business_for_media/iab/elements/campaign_reference_id.rb +18 -0
  129. data/test/example/e_business_for_media/iab/elements/campaign_reference_info.rb +16 -0
  130. data/test/example/e_business_for_media/iab/elements/category.rb +16 -0
  131. data/test/example/e_business_for_media/iab/elements/context.rb +17 -0
  132. data/test/example/e_business_for_media/iab/elements/contract_details.rb +17 -0
  133. data/test/example/e_business_for_media/iab/elements/count.rb +16 -0
  134. data/test/example/e_business_for_media/iab/elements/country_code.rb +23 -0
  135. data/test/example/e_business_for_media/iab/elements/created_date.rb +15 -0
  136. data/test/example/e_business_for_media/iab/elements/creating_system.rb +16 -0
  137. data/test/example/e_business_for_media/iab/elements/date.rb +16 -0
  138. data/test/example/e_business_for_media/iab/elements/delivery.rb +17 -0
  139. data/test/example/e_business_for_media/iab/elements/delivery_address.rb +72 -0
  140. data/test/example/e_business_for_media/iab/elements/description.rb +16 -0
  141. data/test/example/e_business_for_media/iab/elements/desired_positioning_notes.rb +16 -0
  142. data/test/example/e_business_for_media/iab/elements/destination_system.rb +16 -0
  143. data/test/example/e_business_for_media/iab/elements/discount.rb +19 -0
  144. data/test/example/e_business_for_media/iab/elements/distribution.rb +15 -0
  145. data/test/example/e_business_for_media/iab/elements/document_id.rb +20 -0
  146. data/test/example/e_business_for_media/iab/elements/document_name.rb +16 -0
  147. data/test/example/e_business_for_media/iab/elements/document_sender.rb +17 -0
  148. data/test/example/e_business_for_media/iab/elements/due_date.rb +15 -0
  149. data/test/example/e_business_for_media/iab/elements/end_date.rb +16 -0
  150. data/test/example/e_business_for_media/iab/elements/extension.rb +17 -0
  151. data/test/example/e_business_for_media/iab/elements/family_name.rb +55 -0
  152. data/test/example/e_business_for_media/iab/elements/fax.rb +16 -0
  153. data/test/example/e_business_for_media/iab/elements/flight_exclusivity_guidelines.rb +16 -0
  154. data/test/example/e_business_for_media/iab/elements/format.rb +16 -0
  155. data/test/example/e_business_for_media/iab/elements/formatted_name.rb +22 -0
  156. data/test/example/e_business_for_media/iab/elements/formatted_number.rb +18 -0
  157. data/test/example/e_business_for_media/iab/elements/geographic_considerations.rb +15 -0
  158. data/test/example/e_business_for_media/iab/elements/given_name.rb +19 -0
  159. data/test/example/e_business_for_media/iab/elements/goal.rb +29 -0
  160. data/test/example/e_business_for_media/iab/elements/gross_cost.rb +16 -0
  161. data/test/example/e_business_for_media/iab/elements/iab_advertiser_info.rb +15 -0
  162. data/test/example/e_business_for_media/iab/elements/iab_billing_info.rb +15 -0
  163. data/test/example/e_business_for_media/iab/elements/iab_message_base.rb +15 -0
  164. data/test/example/e_business_for_media/iab/elements/iab_message_header.rb +17 -0
  165. data/test/example/e_business_for_media/iab/elements/iab_publisher_info.rb +15 -0
  166. data/test/example/e_business_for_media/iab/elements/iab_type_of_contact.rb +17 -0
  167. data/test/example/e_business_for_media/iab/elements/id.rb +17 -0
  168. data/test/example/e_business_for_media/iab/elements/id_value.rb +34 -0
  169. data/test/example/e_business_for_media/iab/elements/in_reference_to.rb +33 -0
  170. data/test/example/e_business_for_media/iab/elements/industry.rb +17 -0
  171. data/test/example/e_business_for_media/iab/elements/instructions.rb +15 -0
  172. data/test/example/e_business_for_media/iab/elements/international_country_code.rb +17 -0
  173. data/test/example/e_business_for_media/iab/elements/internet_email_address.rb +16 -0
  174. data/test/example/e_business_for_media/iab/elements/internet_web_address.rb +17 -0
  175. data/test/example/e_business_for_media/iab/elements/legal_name.rb +19 -0
  176. data/test/example/e_business_for_media/iab/elements/link.rb +16 -0
  177. data/test/example/e_business_for_media/iab/elements/location.rb +17 -0
  178. data/test/example/e_business_for_media/iab/elements/make_good_policy.rb +16 -0
  179. data/test/example/e_business_for_media/iab/elements/middle_name.rb +17 -0
  180. data/test/example/e_business_for_media/iab/elements/mobile.rb +17 -0
  181. data/test/example/e_business_for_media/iab/elements/municipality.rb +17 -0
  182. data/test/example/e_business_for_media/iab/elements/name.rb +16 -0
  183. data/test/example/e_business_for_media/iab/elements/national_number.rb +19 -0
  184. data/test/example/e_business_for_media/iab/elements/net_cost.rb +16 -0
  185. data/test/example/e_business_for_media/iab/elements/non_standard_value.rb +16 -0
  186. data/test/example/e_business_for_media/iab/elements/notes.rb +16 -0
  187. data/test/example/e_business_for_media/iab/elements/order_status.rb +17 -0
  188. data/test/example/e_business_for_media/iab/elements/other_contacts.rb +18 -0
  189. data/test/example/e_business_for_media/iab/elements/other_id.rb +20 -0
  190. data/test/example/e_business_for_media/iab/elements/other_target.rb +17 -0
  191. data/test/example/e_business_for_media/iab/elements/out_clause.rb +16 -0
  192. data/test/example/e_business_for_media/iab/elements/pager.rb +16 -0
  193. data/test/example/e_business_for_media/iab/elements/partner.rb +19 -0
  194. data/test/example/e_business_for_media/iab/elements/payment_terms.rb +16 -0
  195. data/test/example/e_business_for_media/iab/elements/payment_type.rb +15 -0
  196. data/test/example/e_business_for_media/iab/elements/percent.rb +16 -0
  197. data/test/example/e_business_for_media/iab/elements/person_name.rb +16 -0
  198. data/test/example/e_business_for_media/iab/elements/post_office_box.rb +18 -0
  199. data/test/example/e_business_for_media/iab/elements/postal_address.rb +16 -0
  200. data/test/example/e_business_for_media/iab/elements/postal_code.rb +18 -0
  201. data/test/example/e_business_for_media/iab/elements/preferred_given_name.rb +18 -0
  202. data/test/example/e_business_for_media/iab/elements/primary_contact.rb +16 -0
  203. data/test/example/e_business_for_media/iab/elements/primary_id.rb +17 -0
  204. data/test/example/e_business_for_media/iab/elements/primary_success_metric.rb +15 -0
  205. data/test/example/e_business_for_media/iab/elements/product_name.rb +17 -0
  206. data/test/example/e_business_for_media/iab/elements/property_name.rb +16 -0
  207. data/test/example/e_business_for_media/iab/elements/publisher.rb +17 -0
  208. data/test/example/e_business_for_media/iab/elements/referenced_document_id.rb +15 -0
  209. data/test/example/e_business_for_media/iab/elements/referenced_version.rb +22 -0
  210. data/test/example/e_business_for_media/iab/elements/region.rb +21 -0
  211. data/test/example/e_business_for_media/iab/elements/request_for_proposal.rb +16 -0
  212. data/test/example/e_business_for_media/iab/elements/rfp_details.rb +15 -0
  213. data/test/example/e_business_for_media/iab/elements/rfp_response_requirements.rb +15 -0
  214. data/test/example/e_business_for_media/iab/elements/role.rb +31 -0
  215. data/test/example/e_business_for_media/iab/elements/selection_criteria.rb +16 -0
  216. data/test/example/e_business_for_media/iab/elements/sent_date.rb +15 -0
  217. data/test/example/e_business_for_media/iab/elements/standard_value.rb +16 -0
  218. data/test/example/e_business_for_media/iab/elements/start_date.rb +16 -0
  219. data/test/example/e_business_for_media/iab/elements/street_name.rb +21 -0
  220. data/test/example/e_business_for_media/iab/elements/subscriber_number.rb +19 -0
  221. data/test/example/e_business_for_media/iab/elements/target_audience.rb +15 -0
  222. data/test/example/e_business_for_media/iab/elements/targeting.rb +42 -0
  223. data/test/example/e_business_for_media/iab/elements/telephone.rb +16 -0
  224. data/test/example/e_business_for_media/iab/elements/terms_and_conditions.rb +27 -0
  225. data/test/example/e_business_for_media/iab/elements/terms_attachment.rb +15 -0
  226. data/test/example/e_business_for_media/iab/elements/terms_text.rb +15 -0
  227. data/test/example/e_business_for_media/iab/elements/time.rb +17 -0
  228. data/test/example/e_business_for_media/iab/elements/title.rb +17 -0
  229. data/test/example/e_business_for_media/iab/elements/ttytdd.rb +17 -0
  230. data/test/example/e_business_for_media/iab/elements/type.rb +15 -0
  231. data/test/example/e_business_for_media/iab/elements/unit.rb +21 -0
  232. data/test/example/e_business_for_media/iab/elements/use.rb +17 -0
  233. data/test/example/e_business_for_media/iab/elements/value.rb +15 -0
  234. data/test/example/e_business_for_media/iab/elements/version.rb +24 -0
  235. data/test/example/e_business_for_media/iab/elements/when_available.rb +19 -0
  236. data/test/example/e_business_for_media/iab/elements/zero_cost.rb +15 -0
  237. data/test/example/e_business_for_media/iab/groups/telcom_number_group.rb +52 -0
  238. data/test/example/e_business_for_media/iab/types/attachment_type.rb +32 -0
  239. data/test/example/e_business_for_media/iab/types/base_cost.rb +32 -0
  240. data/test/example/e_business_for_media/iab/types/base_target_type.rb +31 -0
  241. data/test/example/e_business_for_media/iab/types/base_unit.rb +27 -0
  242. data/test/example/e_business_for_media/iab/types/campaign_reference_info_type.rb +81 -0
  243. data/test/example/e_business_for_media/iab/types/contact_method_location_pattern_extension_type.rb +22 -0
  244. data/test/example/e_business_for_media/iab/types/contact_method_location_type.rb +24 -0
  245. data/test/example/e_business_for_media/iab/types/contact_method_type.rb +81 -0
  246. data/test/example/e_business_for_media/iab/types/contact_method_use_pattern_extension_type.rb +22 -0
  247. data/test/example/e_business_for_media/iab/types/contact_method_use_type.rb +23 -0
  248. data/test/example/e_business_for_media/iab/types/contact_method_when_available_type.rb +20 -0
  249. data/test/example/e_business_for_media/iab/types/contract_details_type.rb +46 -0
  250. data/test/example/e_business_for_media/iab/types/cost_method_enumeration.rb +29 -0
  251. data/test/example/e_business_for_media/iab/types/cost_method_type.rb +28 -0
  252. data/test/example/e_business_for_media/iab/types/currency_code_type.rb +20 -0
  253. data/test/example/e_business_for_media/iab/types/discount_type.rb +36 -0
  254. data/test/example/e_business_for_media/iab/types/entity_id_type.rb +57 -0
  255. data/test/example/e_business_for_media/iab/types/generic_target_type.rb +31 -0
  256. data/test/example/e_business_for_media/iab/types/iab_advertiser_info_type.rb +38 -0
  257. data/test/example/e_business_for_media/iab/types/iab_billing_info_type.rb +54 -0
  258. data/test/example/e_business_for_media/iab/types/iab_contact_method_type.rb +44 -0
  259. data/test/example/e_business_for_media/iab/types/iab_date_time_type.rb +28 -0
  260. data/test/example/e_business_for_media/iab/types/iab_distribution_enumerated_type.rb +22 -0
  261. data/test/example/e_business_for_media/iab/types/iab_distribution_type.rb +20 -0
  262. data/test/example/e_business_for_media/iab/types/iab_message_base_type.rb +47 -0
  263. data/test/example/e_business_for_media/iab/types/iab_message_header_type.rb +34 -0
  264. data/test/example/e_business_for_media/iab/types/iab_partner_info_type.rb +67 -0
  265. data/test/example/e_business_for_media/iab/types/iab_payment_terms_enumerated_type.rb +23 -0
  266. data/test/example/e_business_for_media/iab/types/iab_payment_terms_type.rb +20 -0
  267. data/test/example/e_business_for_media/iab/types/iab_payment_type_enumerated_type.rb +21 -0
  268. data/test/example/e_business_for_media/iab/types/iab_publisher_info_type.rb +29 -0
  269. data/test/example/e_business_for_media/iab/types/iab_type_of_contact_type.rb +30 -0
  270. data/test/example/e_business_for_media/iab/types/internet_email_address_type.rb +19 -0
  271. data/test/example/e_business_for_media/iab/types/internet_web_address_type.rb +20 -0
  272. data/test/example/e_business_for_media/iab/types/mobile_telcom_number_type.rb +33 -0
  273. data/test/example/e_business_for_media/iab/types/monetary_type.rb +28 -0
  274. data/test/example/e_business_for_media/iab/types/percentage_type.rb +21 -0
  275. data/test/example/e_business_for_media/iab/types/person_name_type.rb +282 -0
  276. data/test/example/e_business_for_media/iab/types/postal_address_type.rb +120 -0
  277. data/test/example/e_business_for_media/iab/types/request_for_proposal_type.rb +35 -0
  278. data/test/example/e_business_for_media/iab/types/rfp_details_type.rb +118 -0
  279. data/test/example/e_business_for_media/iab/types/rfp_response_requirements_type.rb +33 -0
  280. data/test/example/e_business_for_media/iab/types/telcom_number_type.rb +34 -0
  281. data/test/example/e_business_for_media/iab/types/unit_type.rb +28 -0
  282. data/test/example/e_business_for_media/iab/types/unit_type_enumeration.rb +27 -0
  283. data/test/example/e_business_for_media/iab/types/zero_cost_type.rb +29 -0
  284. data/test/example/e_business_for_media/iab/types/zero_cost_type_enumeration.rb +21 -0
  285. data/test/marshalling_test.rb +13 -0
  286. data/test/mocks.rb +10 -0
  287. data/test/teststrap.rb +23 -0
  288. data/test/xsd/AAAA_Common.xsd +76 -0
  289. data/test/xsd/HRXMLlicense.txt +32 -0
  290. data/test/xsd/IAB_Acknowledgement.xsd +181 -0
  291. data/test/xsd/IAB_AdvertiserCommon.xsd +40 -0
  292. data/test/xsd/IAB_BillingCommon.xsd +75 -0
  293. data/test/xsd/IAB_CampaignCommon.xsd +80 -0
  294. data/test/xsd/IAB_Common.xsd +1176 -0
  295. data/test/xsd/IAB_ContractCommon.xsd +54 -0
  296. data/test/xsd/IAB_InsertionOrderCommon.xsd +40 -0
  297. data/test/xsd/IAB_LineItemCommon.xsd +328 -0
  298. data/test/xsd/IAB_MessageCommon.xsd +66 -0
  299. data/test/xsd/IAB_OrderCommon.xsd +98 -0
  300. data/test/xsd/IAB_ProposalCommon.xsd +30 -0
  301. data/test/xsd/IAB_PublisherCommon.xsd +26 -0
  302. data/test/xsd/IAB_RFPCommon.xsd +126 -0
  303. metadata +626 -0
@@ -0,0 +1,21 @@
1
+ require 'enterprisifier/marshalling/schema_composition'
2
+ require 'enterprisifier/marshalling/xsd/schema/element'
3
+ require 'enterprisifier/marshalling/xsd/schema/group'
4
+ require 'enterprisifier/marshalling/xsd/schema/choice'
5
+ require 'enterprisifier/marshalling/xsd/schema/sequence'
6
+
7
+ module Enterprisifier
8
+ module Marshalling
9
+ module XSD
10
+ module Schema
11
+ class Sequence
12
+ include Enterprisifier::Marshalling::SchemaComposition
13
+ composed_of :Element, :Group, :Choice, :Sequence
14
+ macros :max_occurs, :min_occurs
15
+
16
+ end # Sequence
17
+ end # Schema
18
+ end # XSD
19
+ end # Marshalling
20
+ end # Enterprisifier
21
+
@@ -0,0 +1,18 @@
1
+ require 'enterprisifier/marshalling/schema_composition'
2
+ require 'enterprisifier/marshalling/xsd/schema/restriction'
3
+ require 'enterprisifier/marshalling/xsd/schema/extension'
4
+
5
+ module Enterprisifier
6
+ module Marshalling
7
+ module XSD
8
+ module Schema
9
+ class SimpleContent
10
+ include Enterprisifier::Marshalling::SchemaComposition
11
+ composed_of :Restriction, :Extension
12
+
13
+
14
+ end # SimpleContent
15
+ end # Schema
16
+ end # XSD
17
+ end # Marshalling
18
+ end # Enterprisifier
@@ -0,0 +1,23 @@
1
+ require 'enterprisifier/marshalling/schema_composition'
2
+ require 'enterprisifier/marshalling/xsd/schema/restriction'
3
+ require 'enterprisifier/marshalling/xsd/schema/union'
4
+
5
+ module Enterprisifier
6
+ module Marshalling
7
+ module XSD
8
+ module Schema
9
+ class SimpleType
10
+ include Enterprisifier::Marshalling::SchemaComposition
11
+ composed_of :Restriction, :Union
12
+ attr_reader :name
13
+
14
+ def initialize(name = nil)
15
+ super
16
+ @name = name
17
+ end
18
+
19
+ end # SimpleType
20
+ end # Schema
21
+ end # XSD
22
+ end # Marshalling
23
+ end # Enterprisifier
@@ -0,0 +1,23 @@
1
+ require 'enterprisifier/marshalling/schema_composition'
2
+ require 'enterprisifier/marshalling/xsd/schema/simple_type'
3
+
4
+ module Enterprisifier
5
+ module Marshalling
6
+ module XSD
7
+ module Schema
8
+ class Union
9
+ include Enterprisifier::Marshalling::SchemaComposition
10
+ composed_of :SimpleType
11
+
12
+ private
13
+
14
+ def member_types(*types)
15
+ return @member_types if types.empty?
16
+ @member_types = types
17
+ end
18
+
19
+ end # Union
20
+ end # Schema
21
+ end # XSD
22
+ end # Marshalling
23
+ end # Enterprisifier
@@ -0,0 +1,14 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class Boolean
8
+ extend Reification
9
+
10
+ end # Boolean
11
+ end # Types
12
+ end # XSD
13
+ end # Marshalling
14
+ end # Enterprisifier
@@ -0,0 +1,13 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class Date
8
+ extend Reification
9
+ end # Date
10
+ end # Types
11
+ end # XSD
12
+ end # Marshalling
13
+ end # Enterprisifier
@@ -0,0 +1,13 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class DateTime
8
+ extend Reification
9
+ end # DateTime
10
+ end # Types
11
+ end # XSD
12
+ end # Marshalling
13
+ end # Enterprisifier
@@ -0,0 +1,13 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class Decimal
8
+ extend Reification
9
+ end # Decimal
10
+ end # Types
11
+ end # XSD
12
+ end # Marshalling
13
+ end # Enterprisifier
@@ -0,0 +1,14 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class String
8
+ extend Reification
9
+
10
+ end # String
11
+ end # Types
12
+ end # XSD
13
+ end # Marshalling
14
+ end # Enterprisifier
@@ -0,0 +1,14 @@
1
+ require 'enterprisifier/marshalling/reification'
2
+
3
+ module Enterprisifier
4
+ module Marshalling
5
+ module XSD
6
+ module Types
7
+ class Time
8
+ extend Reification
9
+
10
+ end # Time
11
+ end # Types
12
+ end # XSD
13
+ end # Marshalling
14
+ end # Enterprisifier
@@ -0,0 +1 @@
1
+ require 'enterprisifier/schema/loader'
@@ -0,0 +1,156 @@
1
+ require 'enterprisifier/schema/element_factory'
2
+ require 'observer'
3
+
4
+ module Enterprisifier
5
+ module Schema
6
+ class BaseElement
7
+ include Observable
8
+ include ActiveSupport::Callbacks
9
+
10
+ attr_accessor :parent
11
+ attr_reader :children, :namespaces, :attributes, :text
12
+ attr_reader :default_namespace
13
+
14
+ define_callbacks :after_parent_set
15
+ after_parent_set :preserve_namespaces
16
+
17
+ class << self
18
+ attr_reader :registered_as
19
+
20
+ def map_attribute(*camelized_attrs)
21
+ camelized_attrs.each do |attr|
22
+ underscored = attr.to_s.underscore
23
+ class_eval <<-EOM
24
+ def #{underscored}
25
+ return @#{underscored} if defined?(@#{underscored})
26
+ @#{underscored} = read_attribute('#{attr}')
27
+ end
28
+ EOM
29
+ end
30
+ end
31
+
32
+ def register(element_name)
33
+ @registered_as = element_name.to_sym
34
+ Enterprisifier::Schema::ElementFactory.register(element_name, self)
35
+ end
36
+ end # << self
37
+
38
+ map_attribute :value
39
+
40
+ def initialize(attributes, namespaces)
41
+ @attributes = attributes
42
+ @children = []
43
+ @namespaces = namespaces
44
+ @text = ''
45
+ end
46
+
47
+ def name
48
+ namespaced_name(read_attribute("name")) if read_attribute("name")
49
+ end
50
+
51
+ def ref
52
+ namespaced_name(read_attribute("ref")) if read_attribute("ref")
53
+ end
54
+
55
+ def base
56
+ namespaced_name(read_attribute("base")) if read_attribute("base")
57
+ end
58
+
59
+ def registered_as
60
+ self.class.registered_as
61
+ end
62
+
63
+ def add_child(child_element)
64
+ child_element.tap do |child|
65
+ @children << child
66
+ child.parent = self
67
+ changed
68
+ notify_observers(child, :child_added)
69
+ end
70
+ end
71
+
72
+ def each_child(skip_annotations = false)
73
+ children.each do |child|
74
+ yield(child) unless skip_annotations && child.registered_as == :annotation
75
+ end
76
+ end
77
+
78
+ def has_child?(*child_types)
79
+ child_types = child_types.map(&:to_sym)
80
+ children.any? do |child|
81
+ child_types.include?(child.registered_as)
82
+ end
83
+ end
84
+
85
+ def has_children?(skip_annotations = false)
86
+ children.any? do |child|
87
+ skip_annotations ? child.registered_as != :annotation : child
88
+ end
89
+ end
90
+
91
+ def add_text(text)
92
+ @text << text
93
+ end
94
+
95
+ def rootable?
96
+ false
97
+ end
98
+
99
+ def root
100
+ parent ? parent.root : self
101
+ end
102
+
103
+ def parent=(parent_element)
104
+ current_parent = parent
105
+ @parent = parent_element
106
+ add_observer(@parent)
107
+ run_callbacks(:after_parent_set) if !current_parent
108
+ end
109
+
110
+ def update(element, state)
111
+ changed
112
+ notify_observers(element, state)
113
+ end
114
+
115
+ def read_attribute(attr_name)
116
+ if found = @attributes.detect { |attr| attr.localname == attr_name }
117
+ found.value
118
+ else
119
+ nil
120
+ end
121
+ end
122
+
123
+ def documentation
124
+ return nil if children.empty? || annotation.nil?
125
+ annotation.documentation
126
+ end
127
+
128
+ def annotation
129
+ return @annotation if defined?(@annotation)
130
+ @annotation = children.detect { |c| c.registered_as == :annotation }
131
+ end
132
+
133
+ private
134
+
135
+ def namespaced_name(string)
136
+ namespaced = string.split(":", 2)
137
+ namespaced.size > 1 ? {:namespace => namespaced[0], :value => namespaced[1]} : {:value => namespaced[0]}
138
+ end
139
+
140
+ def set_default_namespace
141
+ @default_namespace = begin
142
+ (ns = @namespaces.assoc(nil)) ? ns.last : nil
143
+ end
144
+ end
145
+
146
+ def preserve_namespaces
147
+ if !root.namespaces.empty? && namespaces.empty?
148
+ @namespaces = root.namespaces
149
+ set_default_namespace
150
+ end
151
+ end
152
+
153
+ end # BaseElement
154
+ end # Schema
155
+ end # Enterprisifier
156
+
@@ -0,0 +1,29 @@
1
+ module Enterprisifier
2
+ module Schema
3
+ module ElementFactory
4
+ class MissingElementError < RuntimeError; end
5
+
6
+ @registered_elements = {}
7
+
8
+ def self.create_element(name, attributes, namespaces)
9
+ get_element_class(name).new(attributes, namespaces)
10
+ end
11
+
12
+ def self.register(element_name, klass)
13
+ @registered_elements[element_name.to_s] = klass
14
+ end
15
+
16
+ def self.get_element_class(element_name)
17
+ if klass = @registered_elements[element_name.to_s]
18
+ klass
19
+ else
20
+ Logger.warn("Unhandled element: #{element_name}")
21
+ Enterprisifier::Schema::Elements::UnknownElement
22
+ end
23
+ end
24
+
25
+ end # ElementFactory
26
+ end # Schema
27
+ end # Enterprisifier
28
+
29
+ Dir["#{File.dirname(__FILE__)}/elements/*.rb"].each {|f| require f}
@@ -0,0 +1,20 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class AnnotationElement < BaseElement
7
+ register :annotation
8
+
9
+ def documentation
10
+ return @documentation if defined?(@documentation)
11
+ docs = children.inject('') do |doc,child|
12
+ doc << "#{child.text}\n"
13
+ end
14
+ @documentation = docs.blank? ? nil : docs
15
+ end
16
+
17
+ end # AnnotationElement
18
+ end # Elements
19
+ end # Schema
20
+ end # Enterprisifier
@@ -0,0 +1,22 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class AttributeElement < BaseElement
7
+ register :attribute
8
+ map_attribute :default, :fixed, :form, :use
9
+
10
+ def value_type
11
+ return @value_type if defined?(@value_type)
12
+ if type_val = read_attribute("type")
13
+ @value_type = namespaced_name(type_val)
14
+ else
15
+ @value_type = nil
16
+ end
17
+ end
18
+
19
+ end # AttributeElement
20
+ end # Elements
21
+ end # Schema
22
+ end # Enterprisifier
@@ -0,0 +1,13 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ChoiceElement < BaseElement
7
+ register :choice
8
+ map_attribute :minOccurs, :maxOccurs
9
+
10
+ end # ChoiceElement
11
+ end # Elements
12
+ end # Schema
13
+ end # Enterprisifier
@@ -0,0 +1,13 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ComplexContentElement < BaseElement
7
+ register :complexContent
8
+ map_attribute :mixed
9
+
10
+ end # ComplexContentElement
11
+ end # Elements
12
+ end # Schema
13
+ end # Enterprisifier