ogc-gml 1.1.0 → 1.2.0

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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +139 -0
  3. data/Gemfile +0 -1
  4. data/README.adoc +4 -4
  5. data/lib/ogc/gml/abstract_continuous_coverage.rb +0 -2
  6. data/lib/ogc/gml/abstract_coordinate_operation.rb +0 -4
  7. data/lib/ogc/gml/abstract_coordinate_system.rb +0 -7
  8. data/lib/ogc/gml/abstract_coverage.rb +0 -5
  9. data/lib/ogc/gml/abstract_crs.rb +0 -6
  10. data/lib/ogc/gml/abstract_curve.rb +0 -1
  11. data/lib/ogc/gml/abstract_datum.rb +0 -6
  12. data/lib/ogc/gml/abstract_feature.rb +0 -8
  13. data/lib/ogc/gml/abstract_feature_collection.rb +0 -5
  14. data/lib/ogc/gml/abstract_general_conversion.rb +0 -7
  15. data/lib/ogc/gml/abstract_general_derived_crs.rb +0 -2
  16. data/lib/ogc/gml/abstract_general_operation_parameter.rb +0 -1
  17. data/lib/ogc/gml/abstract_general_operation_parameter_property.rb +0 -8
  18. data/lib/ogc/gml/abstract_general_parameter_value_property.rb +0 -2
  19. data/lib/ogc/gml/abstract_general_transformation.rb +0 -1
  20. data/lib/ogc/gml/abstract_geometric_aggregate.rb +0 -1
  21. data/lib/ogc/gml/abstract_geometric_primitive.rb +0 -6
  22. data/lib/ogc/gml/abstract_geometry.rb +0 -1
  23. data/lib/ogc/gml/abstract_gml.rb +0 -6
  24. data/lib/ogc/gml/abstract_meta_data.rb +0 -1
  25. data/lib/ogc/gml/abstract_ring_property.rb +0 -2
  26. data/lib/ogc/gml/abstract_solid.rb +0 -1
  27. data/lib/ogc/gml/abstract_surface.rb +0 -1
  28. data/lib/ogc/gml/abstract_time_complex.rb +0 -6
  29. data/lib/ogc/gml/abstract_time_geometric_primitive.rb +0 -7
  30. data/lib/ogc/gml/abstract_time_object.rb +0 -6
  31. data/lib/ogc/gml/abstract_time_primitive.rb +0 -4
  32. data/lib/ogc/gml/abstract_time_slice.rb +0 -8
  33. data/lib/ogc/gml/abstract_time_topology_primitive.rb +0 -7
  34. data/lib/ogc/gml/abstract_topo_primitive.rb +0 -6
  35. data/lib/ogc/gml/abstract_topology.rb +0 -5
  36. data/lib/ogc/gml/affine_cs.rb +0 -1
  37. data/lib/ogc/gml/affine_cs_property.rb +0 -2
  38. data/lib/ogc/gml/affine_placement.rb +0 -3
  39. data/lib/ogc/gml/angle.rb +0 -3
  40. data/lib/ogc/gml/arc.rb +0 -1
  41. data/lib/ogc/gml/arc_by_bulge.rb +0 -2
  42. data/lib/ogc/gml/arc_by_center_point.rb +0 -5
  43. data/lib/ogc/gml/arc_string.rb +0 -6
  44. data/lib/ogc/gml/arc_string_by_bulge.rb +0 -2
  45. data/lib/ogc/gml/array.rb +0 -7
  46. data/lib/ogc/gml/b_spline.rb +0 -1
  47. data/lib/ogc/gml/bag.rb +0 -8
  48. data/lib/ogc/gml/base_unit.rb +0 -7
  49. data/lib/ogc/gml/bezier.rb +0 -6
  50. data/lib/ogc/gml/bounding_shape.rb +0 -2
  51. data/lib/ogc/gml/cartesian_cs.rb +0 -1
  52. data/lib/ogc/gml/cartesian_cs_property.rb +0 -2
  53. data/lib/ogc/gml/category.rb +0 -2
  54. data/lib/ogc/gml/category_extent.rb +0 -2
  55. data/lib/ogc/gml/circle.rb +0 -1
  56. data/lib/ogc/gml/circle_by_center_point.rb +0 -7
  57. data/lib/ogc/gml/clothoid.rb +0 -3
  58. data/lib/ogc/gml/code_with_authority.rb +0 -2
  59. data/lib/ogc/gml/composite_curve.rb +0 -2
  60. data/lib/ogc/gml/composite_solid.rb +0 -2
  61. data/lib/ogc/gml/composite_surface.rb +0 -2
  62. data/lib/ogc/gml/composite_value.rb +0 -8
  63. data/lib/ogc/gml/compound_crs.rb +0 -2
  64. data/lib/ogc/gml/compound_crs_property.rb +0 -2
  65. data/lib/ogc/gml/concatenated_operation.rb +0 -8
  66. data/lib/ogc/gml/concatenated_operation_property.rb +0 -2
  67. data/lib/ogc/gml/cone.rb +0 -1
  68. data/lib/ogc/gml/control_point.rb +0 -4
  69. data/lib/ogc/gml/conventional_unit.rb +0 -9
  70. data/lib/ogc/gml/conversion.rb +0 -3
  71. data/lib/ogc/gml/conversion_property.rb +0 -2
  72. data/lib/ogc/gml/conversion_to_preferred_unit.rb +0 -2
  73. data/lib/ogc/gml/coordinate_operation_accuracy.rb +0 -2
  74. data/lib/ogc/gml/coordinate_operation_property.rb +0 -2
  75. data/lib/ogc/gml/coordinate_system_axis.rb +0 -6
  76. data/lib/ogc/gml/coordinate_system_axis_property.rb +0 -2
  77. data/lib/ogc/gml/coordinate_system_property.rb +0 -2
  78. data/lib/ogc/gml/coverage_function.rb +0 -4
  79. data/lib/ogc/gml/crs_property.rb +0 -2
  80. data/lib/ogc/gml/cubic_spline.rb +0 -7
  81. data/lib/ogc/gml/curve.rb +0 -2
  82. data/lib/ogc/gml/curve_array_property.rb +0 -3
  83. data/lib/ogc/gml/curve_property.rb +0 -5
  84. data/lib/ogc/gml/curve_segment_array_property.rb +0 -6
  85. data/lib/ogc/gml/cylinder.rb +0 -1
  86. data/lib/ogc/gml/cylindrical_cs.rb +0 -1
  87. data/lib/ogc/gml/cylindrical_cs_property.rb +0 -2
  88. data/lib/ogc/gml/data_block.rb +0 -3
  89. data/lib/ogc/gml/datum_property.rb +0 -2
  90. data/lib/ogc/gml/definition.rb +0 -6
  91. data/lib/ogc/gml/definition_proxy.rb +0 -6
  92. data/lib/ogc/gml/derived_crs.rb +0 -4
  93. data/lib/ogc/gml/derived_crs_property.rb +0 -2
  94. data/lib/ogc/gml/derived_unit.rb +0 -8
  95. data/lib/ogc/gml/dictionary.rb +0 -10
  96. data/lib/ogc/gml/dictionary_entry.rb +0 -3
  97. data/lib/ogc/gml/directed_edge_property.rb +0 -2
  98. data/lib/ogc/gml/directed_face_property.rb +0 -2
  99. data/lib/ogc/gml/directed_node_property.rb +0 -2
  100. data/lib/ogc/gml/directed_observation.rb +0 -13
  101. data/lib/ogc/gml/directed_observation_at_distance.rb +0 -14
  102. data/lib/ogc/gml/directed_topo_solid_property.rb +0 -2
  103. data/lib/ogc/gml/direction_description.rb +0 -3
  104. data/lib/ogc/gml/direction_property.rb +0 -5
  105. data/lib/ogc/gml/direction_vector.rb +0 -3
  106. data/lib/ogc/gml/discrete_coverage.rb +0 -1
  107. data/lib/ogc/gml/dms_angle.rb +0 -2
  108. data/lib/ogc/gml/domain_of_validity.rb +0 -2
  109. data/lib/ogc/gml/domain_set.rb +0 -3
  110. data/lib/ogc/gml/dynamic_feature.rb +0 -11
  111. data/lib/ogc/gml/dynamic_feature_collection.rb +0 -12
  112. data/lib/ogc/gml/dynamic_feature_member.rb +0 -2
  113. data/lib/ogc/gml/edge.rb +0 -10
  114. data/lib/ogc/gml/ellipsoid.rb +0 -8
  115. data/lib/ogc/gml/ellipsoid_property.rb +0 -2
  116. data/lib/ogc/gml/ellipsoidal_cs.rb +0 -1
  117. data/lib/ogc/gml/ellipsoidal_cs_property.rb +0 -2
  118. data/lib/ogc/gml/engineering_crs.rb +0 -10
  119. data/lib/ogc/gml/engineering_crs_property.rb +0 -2
  120. data/lib/ogc/gml/engineering_datum.rb +0 -1
  121. data/lib/ogc/gml/engineering_datum_property.rb +0 -2
  122. data/lib/ogc/gml/envelope.rb +0 -3
  123. data/lib/ogc/gml/envelope_with_time_period.rb +0 -4
  124. data/lib/ogc/gml/face.rb +0 -10
  125. data/lib/ogc/gml/face_or_topo_solid_property.rb +0 -6
  126. data/lib/ogc/gml/feature_array_property.rb +0 -2
  127. data/lib/ogc/gml/feature_collection.rb +0 -1
  128. data/lib/ogc/gml/feature_property.rb +0 -2
  129. data/lib/ogc/gml/file.rb +0 -3
  130. data/lib/ogc/gml/formula_citation.rb +0 -2
  131. data/lib/ogc/gml/general_conversion_property.rb +0 -2
  132. data/lib/ogc/gml/general_transformation_property.rb +0 -2
  133. data/lib/ogc/gml/generic_meta_data.rb +0 -1
  134. data/lib/ogc/gml/geocentric_crs.rb +0 -4
  135. data/lib/ogc/gml/geocentric_crs_property.rb +0 -2
  136. data/lib/ogc/gml/geodesic.rb +0 -5
  137. data/lib/ogc/gml/geodesic_string.rb +0 -5
  138. data/lib/ogc/gml/geodetic_crs.rb +0 -6
  139. data/lib/ogc/gml/geodetic_crs_property.rb +0 -2
  140. data/lib/ogc/gml/geodetic_datum.rb +0 -3
  141. data/lib/ogc/gml/geodetic_datum_property.rb +0 -2
  142. data/lib/ogc/gml/geographic_crs.rb +0 -3
  143. data/lib/ogc/gml/geographic_crs_property.rb +0 -2
  144. data/lib/ogc/gml/geometric_complex.rb +0 -2
  145. data/lib/ogc/gml/geometric_primitive_property.rb +0 -2
  146. data/lib/ogc/gml/geometry_array_property.rb +0 -2
  147. data/lib/ogc/gml/geometry_property.rb +0 -2
  148. data/lib/ogc/gml/grid.rb +0 -7
  149. data/lib/ogc/gml/grid_function.rb +0 -2
  150. data/lib/ogc/gml/grid_limits.rb +0 -2
  151. data/lib/ogc/gml/history_property.rb +0 -2
  152. data/lib/ogc/gml/image_crs.rb +0 -5
  153. data/lib/ogc/gml/image_crs_property.rb +0 -2
  154. data/lib/ogc/gml/image_datum.rb +0 -1
  155. data/lib/ogc/gml/image_datum_property.rb +0 -2
  156. data/lib/ogc/gml/indirect_entry.rb +0 -2
  157. data/lib/ogc/gml/knot_property.rb +0 -2
  158. data/lib/ogc/gml/length.rb +0 -3
  159. data/lib/ogc/gml/line_string.rb +0 -6
  160. data/lib/ogc/gml/line_string_segment.rb +0 -6
  161. data/lib/ogc/gml/line_string_segment_array_property.rb +0 -2
  162. data/lib/ogc/gml/linear_cs.rb +0 -1
  163. data/lib/ogc/gml/linear_cs_property.rb +0 -2
  164. data/lib/ogc/gml/linear_ring.rb +0 -5
  165. data/lib/ogc/gml/location_property.rb +0 -4
  166. data/lib/ogc/gml/mapping_rule.rb +0 -2
  167. data/lib/ogc/gml/meta_data_property.rb +0 -2
  168. data/lib/ogc/gml/moving_object_status.rb +0 -12
  169. data/lib/ogc/gml/multi_curve.rb +0 -2
  170. data/lib/ogc/gml/multi_curve_property.rb +0 -2
  171. data/lib/ogc/gml/multi_geometry.rb +0 -3
  172. data/lib/ogc/gml/multi_geometry_property.rb +0 -2
  173. data/lib/ogc/gml/multi_point.rb +0 -3
  174. data/lib/ogc/gml/multi_point_property.rb +0 -2
  175. data/lib/ogc/gml/multi_solid.rb +0 -3
  176. data/lib/ogc/gml/multi_solid_property.rb +0 -2
  177. data/lib/ogc/gml/multi_surface.rb +0 -3
  178. data/lib/ogc/gml/multi_surface_property.rb +0 -2
  179. data/lib/ogc/gml/namespace.rb +0 -2
  180. data/lib/ogc/gml/namespaces/gml_31_namespace.rb +0 -1
  181. data/lib/ogc/gml/namespaces/gml_32_namespace.rb +0 -1
  182. data/lib/ogc/gml/node.rb +0 -12
  183. data/lib/ogc/gml/node_or_edge_property.rb +0 -6
  184. data/lib/ogc/gml/node_property.rb +0 -2
  185. data/lib/ogc/gml/oblique_cartesian_cs.rb +0 -1
  186. data/lib/ogc/gml/oblique_cartesian_cs_property.rb +0 -2
  187. data/lib/ogc/gml/observation.rb +0 -12
  188. data/lib/ogc/gml/offset_curve.rb +0 -5
  189. data/lib/ogc/gml/operation_method.rb +0 -8
  190. data/lib/ogc/gml/operation_method_property.rb +0 -2
  191. data/lib/ogc/gml/operation_parameter.rb +0 -1
  192. data/lib/ogc/gml/operation_parameter_group.rb +0 -2
  193. data/lib/ogc/gml/operation_parameter_group_property.rb +0 -2
  194. data/lib/ogc/gml/operation_parameter_property.rb +0 -2
  195. data/lib/ogc/gml/operation_property.rb +0 -2
  196. data/lib/ogc/gml/orientable_curve.rb +0 -10
  197. data/lib/ogc/gml/orientable_surface.rb +0 -7
  198. data/lib/ogc/gml/parameter_value.rb +0 -5
  199. data/lib/ogc/gml/parameter_value_group.rb +0 -3
  200. data/lib/ogc/gml/pass_through_operation.rb +0 -9
  201. data/lib/ogc/gml/pass_through_operation_property.rb +0 -2
  202. data/lib/ogc/gml/point.rb +0 -2
  203. data/lib/ogc/gml/point_array_property.rb +0 -2
  204. data/lib/ogc/gml/point_property.rb +0 -2
  205. data/lib/ogc/gml/polar_cs.rb +0 -1
  206. data/lib/ogc/gml/polar_cs_property.rb +0 -2
  207. data/lib/ogc/gml/polygon.rb +0 -3
  208. data/lib/ogc/gml/polygon_patch.rb +0 -2
  209. data/lib/ogc/gml/prime_meridian.rb +0 -7
  210. data/lib/ogc/gml/prime_meridian_property.rb +0 -2
  211. data/lib/ogc/gml/priority_location_property.rb +0 -4
  212. data/lib/ogc/gml/procedure_property.rb +0 -2
  213. data/lib/ogc/gml/projected_crs.rb +0 -4
  214. data/lib/ogc/gml/projected_crs_property.rb +0 -2
  215. data/lib/ogc/gml/quantity.rb +0 -2
  216. data/lib/ogc/gml/quantity_extent.rb +0 -2
  217. data/lib/ogc/gml/range_set.rb +0 -4
  218. data/lib/ogc/gml/rectangle.rb +0 -2
  219. data/lib/ogc/gml/rectified_grid.rb +0 -9
  220. data/lib/ogc/gml/ref_location.rb +0 -2
  221. data/lib/ogc/gml/related_time.rb +0 -2
  222. data/lib/ogc/gml/ring.rb +0 -1
  223. data/lib/ogc/gml/second_defining_parameter1.rb +0 -2
  224. data/lib/ogc/gml/second_defining_parameter2.rb +0 -3
  225. data/lib/ogc/gml/shell.rb +0 -4
  226. data/lib/ogc/gml/shell_property.rb +0 -4
  227. data/lib/ogc/gml/single_crs_property.rb +0 -2
  228. data/lib/ogc/gml/single_operation_property.rb +0 -2
  229. data/lib/ogc/gml/solid.rb +0 -2
  230. data/lib/ogc/gml/solid_array_property.rb +0 -2
  231. data/lib/ogc/gml/solid_property.rb +0 -2
  232. data/lib/ogc/gml/sphere.rb +0 -1
  233. data/lib/ogc/gml/spherical_cs.rb +0 -1
  234. data/lib/ogc/gml/spherical_cs_property.rb +0 -2
  235. data/lib/ogc/gml/surface.rb +0 -2
  236. data/lib/ogc/gml/surface_array_property.rb +0 -2
  237. data/lib/ogc/gml/surface_patch_array_property.rb +0 -3
  238. data/lib/ogc/gml/surface_property.rb +0 -3
  239. data/lib/ogc/gml/target_property.rb +0 -3
  240. data/lib/ogc/gml/temporal_crs.rb +0 -4
  241. data/lib/ogc/gml/temporal_crs_property.rb +0 -2
  242. data/lib/ogc/gml/temporal_cs.rb +0 -1
  243. data/lib/ogc/gml/temporal_cs_property.rb +0 -2
  244. data/lib/ogc/gml/temporal_datum.rb +0 -7
  245. data/lib/ogc/gml/temporal_datum_property.rb +0 -2
  246. data/lib/ogc/gml/time_calendar.rb +0 -7
  247. data/lib/ogc/gml/time_calendar_era.rb +0 -8
  248. data/lib/ogc/gml/time_calendar_era_property.rb +0 -2
  249. data/lib/ogc/gml/time_calendar_property.rb +0 -2
  250. data/lib/ogc/gml/time_clock.rb +0 -8
  251. data/lib/ogc/gml/time_coordinate_system.rb +0 -9
  252. data/lib/ogc/gml/time_cs.rb +0 -1
  253. data/lib/ogc/gml/time_cs_property.rb +0 -2
  254. data/lib/ogc/gml/time_edge.rb +0 -9
  255. data/lib/ogc/gml/time_edge_property.rb +0 -2
  256. data/lib/ogc/gml/time_instant.rb +0 -2
  257. data/lib/ogc/gml/time_instant_property.rb +0 -2
  258. data/lib/ogc/gml/time_node.rb +0 -6
  259. data/lib/ogc/gml/time_node_property.rb +0 -2
  260. data/lib/ogc/gml/time_ordinal_era.rb +0 -9
  261. data/lib/ogc/gml/time_ordinal_era_property.rb +0 -2
  262. data/lib/ogc/gml/time_ordinal_reference_system.rb +0 -7
  263. data/lib/ogc/gml/time_period.rb +0 -4
  264. data/lib/ogc/gml/time_period_property.rb +0 -2
  265. data/lib/ogc/gml/time_primitive_property.rb +0 -2
  266. data/lib/ogc/gml/time_reference_system.rb +0 -6
  267. data/lib/ogc/gml/time_topology_complex.rb +0 -7
  268. data/lib/ogc/gml/time_topology_primitive_property.rb +0 -2
  269. data/lib/ogc/gml/tin.rb +0 -6
  270. data/lib/ogc/gml/topo_complex.rb +0 -12
  271. data/lib/ogc/gml/topo_complex_property.rb +0 -2
  272. data/lib/ogc/gml/topo_curve.rb +0 -7
  273. data/lib/ogc/gml/topo_curve_property.rb +0 -2
  274. data/lib/ogc/gml/topo_point.rb +0 -7
  275. data/lib/ogc/gml/topo_point_property.rb +0 -2
  276. data/lib/ogc/gml/topo_primitive_array_association.rb +0 -2
  277. data/lib/ogc/gml/topo_primitive_member.rb +0 -2
  278. data/lib/ogc/gml/topo_solid.rb +0 -12
  279. data/lib/ogc/gml/topo_solid_property.rb +0 -2
  280. data/lib/ogc/gml/topo_surface.rb +0 -7
  281. data/lib/ogc/gml/topo_surface_property.rb +0 -2
  282. data/lib/ogc/gml/topo_volume.rb +0 -7
  283. data/lib/ogc/gml/topo_volume_property.rb +0 -2
  284. data/lib/ogc/gml/transformation.rb +0 -10
  285. data/lib/ogc/gml/transformation_property.rb +0 -2
  286. data/lib/ogc/gml/triangle.rb +0 -2
  287. data/lib/ogc/gml/unit_definition.rb +0 -7
  288. data/lib/ogc/gml/user_defined_cs.rb +0 -1
  289. data/lib/ogc/gml/user_defined_cs_property.rb +0 -2
  290. data/lib/ogc/gml/value_array.rb +0 -8
  291. data/lib/ogc/gml/value_array_property.rb +0 -3
  292. data/lib/ogc/gml/value_property.rb +0 -3
  293. data/lib/ogc/gml/vector.rb +0 -2
  294. data/lib/ogc/gml/version.rb +1 -1
  295. data/lib/ogc/gml/vertical_crs.rb +0 -3
  296. data/lib/ogc/gml/vertical_crs_property.rb +0 -2
  297. data/lib/ogc/gml/vertical_cs.rb +0 -1
  298. data/lib/ogc/gml/vertical_cs_property.rb +0 -2
  299. data/lib/ogc/gml/vertical_datum.rb +0 -1
  300. data/lib/ogc/gml/vertical_datum_property.rb +0 -2
  301. data/lib/ogc/gml.rb +660 -327
  302. data/ogc-gml.gemspec +3 -1
  303. metadata +5 -6
  304. data/lib/ogc/gml/namespace_registry.rb +0 -56
  305. data/lib/ogc/gml/versioned_model.rb +0 -78
data/ogc-gml.gemspec CHANGED
@@ -31,7 +31,9 @@ Gem::Specification.new do |spec|
31
31
 
32
32
  spec.required_ruby_version = ">= 2.7.0"
33
33
 
34
- spec.add_dependency "lutaml-model", "~> 0.8"
34
+ # 0.8.20 is the first release with source-namespace-preserving XML
35
+ # serialization, which the round-trip specs rely on.
36
+ spec.add_dependency "lutaml-model", "~> 0.8.20"
35
37
  spec.add_dependency "nokogiri"
36
38
  spec.metadata["rubygems_mfa_required"] = "true"
37
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ogc-gml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-21 00:00:00.000000000 Z
11
+ date: 2026-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.8'
19
+ version: 0.8.20
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.8'
26
+ version: 0.8.20
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,7 @@ files:
52
52
  - ".rspec"
53
53
  - ".rubocop.yml"
54
54
  - ".rubocop_todo.yml"
55
+ - CLAUDE.md
55
56
  - CODE_OF_CONDUCT.md
56
57
  - Gemfile
57
58
  - README.adoc
@@ -259,7 +260,6 @@ files:
259
260
  - lib/ogc/gml/multi_surface.rb
260
261
  - lib/ogc/gml/multi_surface_property.rb
261
262
  - lib/ogc/gml/namespace.rb
262
- - lib/ogc/gml/namespace_registry.rb
263
263
  - lib/ogc/gml/namespaces/gml_31_namespace.rb
264
264
  - lib/ogc/gml/namespaces/gml_32_namespace.rb
265
265
  - lib/ogc/gml/node.rb
@@ -382,7 +382,6 @@ files:
382
382
  - lib/ogc/gml/value_property.rb
383
383
  - lib/ogc/gml/vector.rb
384
384
  - lib/ogc/gml/version.rb
385
- - lib/ogc/gml/versioned_model.rb
386
385
  - lib/ogc/gml/vertical_crs.rb
387
386
  - lib/ogc/gml/vertical_crs_property.rb
388
387
  - lib/ogc/gml/vertical_cs.rb
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "namespaces/gml_32_namespace"
4
- require_relative "namespaces/gml_31_namespace"
5
-
6
- module Ogc
7
- module Gml
8
- # Namespace registry for GML version support
9
- #
10
- # Manages namespace classes and provides version detection
11
- module NamespaceRegistry
12
- GML_32_URI = "http://www.opengis.net/gml/3.2"
13
- GML_31_URI = "http://www.opengis.net/gml"
14
-
15
- class << self
16
- # Detect GML namespace URI from XML string
17
- #
18
- # @param xml_string [String] The XML content
19
- # @return [String] The detected namespace URI (defaults to GML 3.2)
20
- def detect_namespace_uri(xml_string)
21
- match = xml_string.match(/xmlns:gml="([^"]+)"/)
22
- match ? match[1] : GML_32_URI
23
- end
24
-
25
- # Get namespace class for a given URI
26
- #
27
- # @param uri [String] The namespace URI
28
- # @return [Class] The namespace class
29
- def namespace_class_for(uri)
30
- case uri
31
- when GML_31_URI
32
- Gml31Namespace
33
- else
34
- Gml32Namespace
35
- end
36
- end
37
-
38
- # Check if URI is GML 3.1.1
39
- #
40
- # @param uri [String] The namespace URI
41
- # @return [Boolean]
42
- def gml_31?(uri)
43
- uri == GML_31_URI
44
- end
45
-
46
- # Check if URI is GML 3.2
47
- #
48
- # @param uri [String] The namespace URI
49
- # @return [Boolean]
50
- def gml_32?(uri)
51
- uri == GML_32_URI
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "namespace_registry"
4
-
5
- module Ogc
6
- module Gml
7
- # VersionedModel provides namespace-aware parsing and serialization
8
- #
9
- # This module enables GML models to preserve their source namespace
10
- # during round-trip operations. When parsing GML 3.1.1 XML, the output
11
- # will use GML 3.1.1 namespace; when parsing GML 3.2, output uses GML 3.2.
12
- #
13
- # @example
14
- # class Dictionary < Lutaml::Model::Serializable
15
- # extend VersionedModel::ClassMethods
16
- # # ... rest of class definition
17
- # end
18
- #
19
- # dict = Dictionary.from_xml(gml_31_xml)
20
- # dict.to_xml # Outputs with GML 3.1.1 namespace
21
- #
22
- module VersionedModel
23
- # Namespace URIs for GML versions
24
- GML_32_URI = "http://www.opengis.net/gml/3.2"
25
- GML_31_URI = "http://www.opengis.net/gml"
26
-
27
- # Wrapper class that preserves namespace during round-trip
28
- class VersionedWrapper
29
- attr_reader :model, :source_namespace
30
-
31
- def initialize(model, source_namespace)
32
- @model = model
33
- @source_namespace = source_namespace
34
- end
35
-
36
- # Delegate all methods to the wrapped model
37
- def method_missing(method, ...)
38
- model.send(method, ...)
39
- end
40
-
41
- def respond_to_missing?(method, include_private = false)
42
- model.respond_to?(method, include_private)
43
- end
44
-
45
- # Serialize with preserved namespace
46
- def to_xml(options = {})
47
- xml = model.to_xml(options)
48
-
49
- # Post-process to restore source namespace if needed
50
- if source_namespace && source_namespace != GML_32_URI
51
- xml = xml.gsub(GML_32_URI, source_namespace)
52
- end
53
-
54
- xml
55
- end
56
- end
57
-
58
- # Class methods to extend onto model classes
59
- module ClassMethods
60
- # Parse XML and return a version-aware wrapper
61
- #
62
- # @param xml [String] The XML content to parse
63
- # @param options [Hash] Additional parsing options
64
- # @return [VersionedWrapper] Wrapper that preserves namespace
65
- def from_xml_with_namespace(xml, options = {})
66
- # Detect source namespace before parsing
67
- source_ns = NamespaceRegistry.detect_namespace_uri(xml)
68
-
69
- # Parse the model normally
70
- model = from_xml(xml, options)
71
-
72
- # Wrap to preserve namespace
73
- VersionedWrapper.new(model, source_ns)
74
- end
75
- end
76
- end
77
- end
78
- end