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,13 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ComplexTypeElement < BaseElement
7
+ register :complexType
8
+ map_attribute :abstract, :mixed, :block, :final
9
+
10
+ end # ComplexTypeElement
11
+ end # Elements
12
+ end # Schema
13
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class DocumentationElement < BaseElement
7
+ register :documentation
8
+
9
+ end # DocumentationElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,23 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ElementElement < BaseElement
7
+ register :element
8
+ map_attribute :substitutionGroup, :default, :fixed, :form, :minOccurs, :maxOccurs,
9
+ :nillable, :abstract, :block, :final
10
+
11
+ def element_type
12
+ return @element_type if defined?(@element_type)
13
+ if type_val = read_attribute("type")
14
+ @element_type = namespaced_name(type_val)
15
+ else
16
+ @element_type = nil
17
+ end
18
+ end
19
+
20
+ end # ElementElement
21
+ end # Elements
22
+ end # Schema
23
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class EnumerationElement < BaseElement
7
+ register :enumeration
8
+
9
+ end # EnumerationElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ExtensionElement < BaseElement
7
+ register :extension
8
+
9
+ end # ExtensionElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class FractionDigitsElement < BaseElement
7
+ register :fractionDigits
8
+
9
+ end # FractionDigitsElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class GroupElement < BaseElement
7
+ register :group
8
+ map_attribute :maxOccurs, :minOccurs
9
+ end # GroupElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,28 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class ImportElement < BaseElement
7
+ register :import
8
+ map_attribute :schemaLocation, :namespace
9
+ after_parent_set :merge_schemas
10
+
11
+ def full_schema_location
12
+ @full_schema_location ||= root.path.parent + schema_location
13
+ end
14
+
15
+ def merge_schemas
16
+ root.merge_schemas(imported_schema, namespace)
17
+ end
18
+
19
+ private
20
+
21
+ def imported_schema
22
+ @imported_schema ||= Enterprisifier::Schema::Loader.new(full_schema_location.to_s).build_schema
23
+ end
24
+
25
+ end # ImportElement
26
+ end # Elements
27
+ end # Schema
28
+ end # Enterprisifier
@@ -0,0 +1,28 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class IncludeElement < BaseElement
7
+ register :include
8
+ map_attribute :schemaLocation
9
+ after_parent_set :merge_schemas
10
+
11
+ def full_schema_location
12
+ @full_schema_location ||= root.path.parent + schema_location
13
+ end
14
+
15
+ def merge_schemas
16
+ root.merge_schemas(included_schema)
17
+ end
18
+
19
+ private
20
+
21
+ def included_schema
22
+ @included_schema ||= Enterprisifier::Schema::Loader.new(full_schema_location.to_s).build_schema
23
+ end
24
+
25
+ end # IncludeElement
26
+ end # Elements
27
+ end # Schema
28
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class MaxInclusiveElement < BaseElement
7
+ register :maxInclusive
8
+
9
+ end # MaxInclusiveElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class MinInclusiveElement < BaseElement
7
+ register :minInclusive
8
+
9
+ end # MinInclusiveElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class PatternElement < BaseElement
7
+ register :pattern
8
+
9
+ end # PatternElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class RestrictionElement < BaseElement
7
+ register :restriction
8
+
9
+ end # RestrictionElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,71 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class SchemaElement < BaseElement
7
+ RegisterableElements = %w[simpleType complexType group attributeGroup element attribute]
8
+ attr_accessor :path
9
+ attr_reader :registries
10
+
11
+ register :schema
12
+ map_attribute :targetNamespace
13
+
14
+ def initialize(*args)
15
+ super
16
+ @registries = {}
17
+ set_default_namespace
18
+ add_observer(self)
19
+ end
20
+
21
+ def update(element, state)
22
+ return nil if element.default_namespace != default_namespace
23
+ return nil unless state == :child_added && default_registry.has_key?(element.registered_as)
24
+ register_element(element)
25
+ end
26
+
27
+ def merge_schemas(other_schema, namespace = nil)
28
+ if namespace
29
+ ns_def = @namespaces.rassoc(namespace)
30
+ raise ArgumentError, "Namespace #{namespace} is not defined in this schema document." unless ns_def
31
+ end
32
+ other_schema.each_child { |child| add_child(child) }
33
+ namespaces.concat(other_schema.namespaces).uniq!
34
+ other_schema.registries.each do |ns,values|
35
+ values.each { |key,elements| registry_for(ns)[key].reverse_merge!(elements) }
36
+ end
37
+ end
38
+
39
+ def default_registry
40
+ registry_for(default_namespace)
41
+ end
42
+
43
+ def xsd_namespace?(namespace_ref)
44
+ namespaces.any? do |ref,url|
45
+ ref == namespace_ref && url == XMLSchemaNameSpaceURI
46
+ end
47
+ end
48
+ private
49
+
50
+ def set_default_namespace
51
+ @default_namespace = target_namespace || begin
52
+ ns = @namespaces.assoc(nil) ? ns.last : nil
53
+ end
54
+ end
55
+
56
+ def registry_for(registry_name)
57
+ @registries[registry_name.to_s] ||= RegisterableElements.inject({}) do |registry,element_name|
58
+ registry[element_name.to_sym] = {}
59
+ registry
60
+ end
61
+ end
62
+
63
+ def register_element(element)
64
+ return nil unless element.name
65
+ default_registry[element.registered_as][element.name[:value]] = element
66
+ end
67
+
68
+ end # SchemaElement
69
+ end # Elements
70
+ end # Schema
71
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class SequenceElement < BaseElement
7
+ register :sequence
8
+ map_attribute :minOccurs, :maxOccurs
9
+ end # SequenceElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class SimpleContentElement < BaseElement
7
+ register :simpleContent
8
+
9
+ end # SimpleContentElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class SimpleTypeElement < BaseElement
7
+ register :simpleType
8
+
9
+ end # SimpleTypeElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,17 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class UnionElement < BaseElement
7
+ register :union
8
+
9
+ def member_types
10
+ @memberTypes ||= read_attribute("memberTypes").to_s.split(" ").collect do |mt|
11
+ namespaced_name(mt)
12
+ end
13
+ end
14
+ end # UnionElement
15
+ end # Elements
16
+ end # Schema
17
+ end # Enterprisifier
@@ -0,0 +1,12 @@
1
+ require 'enterprisifier/schema/base_element'
2
+
3
+ module Enterprisifier
4
+ module Schema
5
+ module Elements
6
+ class UnknownElement < BaseElement
7
+
8
+
9
+ end # UnknownElement
10
+ end # Elements
11
+ end # Schema
12
+ end # Enterprisifier
@@ -0,0 +1,61 @@
1
+ require 'pathname'
2
+ require 'enterprisifier/schema/element_factory'
3
+
4
+ module Enterprisifier
5
+ module Schema
6
+ class Loader < Nokogiri::XML::SAX::Document
7
+
8
+ def initialize(path)
9
+ @path = Pathname(path).expand_path
10
+ @root_element = nil
11
+ @current_element = nil
12
+ end
13
+
14
+ def build_schema
15
+ parser = Nokogiri::XML::SAX::Parser.new(self)
16
+ @path.open('r') { |file| parser.parse(file) }
17
+ @root_element
18
+ end
19
+
20
+ def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
21
+ return nil unless valid_namespace?(name, uri)
22
+ element = element_factory.create_element(name, attrs, ns)
23
+ unless @root_element
24
+ @root_element = element
25
+ @root_element.path = @path
26
+ end
27
+ @current_element.add_child(element) if @current_element
28
+ @current_element = element
29
+ end
30
+
31
+ def end_element_namespace(name, prefix = nil, uri = nil)
32
+ return nil unless valid_namespace?(name, uri)
33
+ @current_element = @current_element.parent
34
+ end
35
+
36
+ def characters(string)
37
+ @current_element.add_text(string)
38
+ end
39
+
40
+ def cdata_block(string)
41
+ @current_element.add_text(string)
42
+ end
43
+
44
+ def element_factory
45
+ Enterprisifier::Schema::ElementFactory
46
+ end
47
+
48
+ private
49
+
50
+ def valid_namespace?(name, ns_uri)
51
+ if ns_uri == XMLSchemaNameSpaceURI
52
+ true
53
+ else
54
+ Logger.warn("Skipping handling of element '#{name}' in ns: '#{ns_uri}'")
55
+ false
56
+ end
57
+ end
58
+
59
+ end # Loader
60
+ end # Schema
61
+ end # Enterprisifier
@@ -0,0 +1,35 @@
1
+ # require 'teststrap'
2
+ # require 'ruby-debug'
3
+ #
4
+ # context "enterprisifier" do
5
+ # setup do
6
+ # loader = Enterprisifier::Schema::Loader.new("#{File.dirname(__FILE__)}/xsd/IAB_RFPCommon.xsd")
7
+ # schema = loader.build_schema
8
+ # schema.registries.each do |name, reg|
9
+ # puts "Registry: #{name}"
10
+ # reg.each do |key, values|
11
+ # puts " Registry for: #{key}"
12
+ # values.keys.each do |vk|
13
+ # puts " #{vk}"
14
+ # end
15
+ # end
16
+ # end
17
+ #
18
+ # puts "---- code follows ----\n\n"
19
+ #
20
+ # generator = Enterprisifier::CodeGeneration::Generator.new(schema) do |gen|
21
+ # gen.output_directory = Pathname(__FILE__).parent.parent + "output"
22
+ # gen.base_module = "EBusinessForMedia"
23
+ # gen.add_module_for_namespace("http://ns.iab.net", "IAB")
24
+ # gen.add_module_for_namespace("http://ns.ebizformedia.com", "AAAA")
25
+ # end
26
+ #
27
+ # generator.write_files
28
+ # $: << (Pathname(__FILE__).parent.parent + "output").expand_path.to_s
29
+ # # require "e_business_for_media/iab/elements/request_for_proposal"
30
+ # end
31
+ #
32
+ # asserts "i'm a failure :(" do
33
+ # # puts topic.inspect
34
+ # end
35
+ # end