adiwg-mdtranslator 2.9.2 → 2.10.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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -2
  3. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +8 -8
  4. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +179 -160
  5. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_albers.rb +1 -2
  6. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_azimuthEquidistant.rb +1 -2
  7. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equidistantConic.rb +1 -2
  8. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_equirectangular.rb +1 -2
  9. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_generalVertical.rb +1 -2
  10. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_gnomonic.rb +1 -2
  11. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertConic.rb +1 -2
  12. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_lambertEqualArea.rb +1 -2
  13. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_mercator.rb +1 -2
  14. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_millerCylinder.rb +1 -2
  15. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_modifiedAlaska.rb +1 -2
  16. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_obliqueMercator.rb +1 -2
  17. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_orthographic.rb +1 -2
  18. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polarStereo.rb +1 -2
  19. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_polyconic.rb +1 -2
  20. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_robinson.rb +1 -2
  21. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_sinusoidal.rb +1 -2
  22. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_spaceOblique.rb +1 -2
  23. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_stereographic.rb +1 -2
  24. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_transverseMercator.rb +1 -2
  25. data/lib/adiwg/mdtranslator/readers/fgdc/modules/mapProjections/projection_vanDerGrinten.rb +1 -2
  26. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_attribute.rb +16 -4
  27. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_citation.rb +14 -1
  28. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_codeSet.rb +8 -2
  29. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_contact.rb +36 -8
  30. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_date.rb +2 -2
  31. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_dateTime.rb +2 -2
  32. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_digitalForm.rb +8 -2
  33. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb +8 -2
  34. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entity.rb +12 -3
  35. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityAttribute.rb +5 -0
  36. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityOverview.rb +4 -1
  37. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_enumerated.rb +12 -3
  38. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +2 -2
  39. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geodeticReference.rb +13 -4
  40. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geographicResolution.rb +13 -4
  41. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_geologicAge.rb +6 -0
  42. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_horizontalReference.rb +3 -3
  43. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +58 -12
  44. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_keyword.rb +36 -0
  45. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_lineage.rb +8 -2
  46. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_localSystem.rb +1 -1
  47. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapCoordinateInfo.rb +51 -12
  48. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapGridSystem.rb +46 -9
  49. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapLocalPlanar.rb +8 -2
  50. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_mapProjection.rb +4 -1
  51. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb +10 -4
  52. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_methodology.rb +4 -1
  53. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_offlineOption.rb +16 -4
  54. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineOption.rb +13 -4
  55. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_orderProcess.rb +9 -1
  56. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_pointVector.rb +21 -4
  57. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_process.rb +8 -1
  58. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_publication.rb +8 -2
  59. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_quality.rb +14 -3
  60. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_range.rb +8 -2
  61. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_raster.rb +12 -3
  62. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_security.rb +12 -3
  63. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_series.rb +8 -2
  64. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_source.rb +20 -5
  65. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialDomain.rb +32 -8
  66. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonClass.rb +8 -2
  67. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonSystem.rb +20 -5
  68. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_taxonomy.rb +8 -2
  69. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_transferInfo.rb +4 -1
  70. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalAltitude.rb +12 -3
  71. data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_verticalDepth.rb +9 -0
  72. data/lib/adiwg/mdtranslator/readers/fgdc/version.rb +2 -1
  73. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +10 -10
  74. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb +13 -16
  75. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_additionalDocumentation.rb +55 -55
  76. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_address.rb +85 -85
  77. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_allocation.rb +8 -8
  78. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_associatedResource.rb +91 -92
  79. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attribute.rb +212 -212
  80. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attributeGroup.rb +43 -43
  81. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_bearingDistanceResolution.rb +8 -8
  82. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb +11 -11
  83. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +17 -17
  84. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_constraint.rb +26 -13
  85. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contact.rb +13 -12
  86. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coordinateResolution.rb +8 -5
  87. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageDescription.rb +77 -77
  88. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +9 -7
  89. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_date.rb +54 -54
  90. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dateTime.rb +35 -35
  91. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dimension.rb +70 -70
  92. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distribution.rb +15 -4
  93. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distributor.rb +53 -53
  94. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domain.rb +5 -5
  95. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domainItem.rb +5 -5
  96. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_duration.rb +92 -91
  97. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entity.rb +10 -10
  98. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +28 -18
  99. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityForeignKey.rb +58 -59
  100. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityIndex.rb +52 -53
  101. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb +70 -56
  102. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_featureCollection.rb +64 -63
  103. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_format.rb +6 -6
  104. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_funding.rb +9 -6
  105. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geoJson.rb +47 -47
  106. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geodetic.rb +7 -7
  107. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicExtent.rb +12 -7
  108. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicResolution.rb +6 -5
  109. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geologicAge.rb +6 -6
  110. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryCollection.rb +63 -63
  111. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryFeature.rb +84 -84
  112. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryObject.rb +50 -49
  113. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryProperties.rb +57 -57
  114. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +115 -100
  115. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georeferenceableRepresentation.rb +85 -82
  116. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gmlIdentifier.rb +46 -46
  117. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_graphic.rb +78 -78
  118. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gridRepresentation.rb +61 -56
  119. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_identifier.rb +72 -72
  120. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_imageDescription.rb +106 -107
  121. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keyword.rb +4 -4
  122. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keywordObject.rb +46 -46
  123. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_legalConstraint.rb +55 -51
  124. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_lineage.rb +87 -83
  125. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_locale.rb +46 -46
  126. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_maintenance.rb +73 -74
  127. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_mdJson.rb +11 -5
  128. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_measure.rb +56 -55
  129. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_medium.rb +88 -88
  130. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +106 -105
  131. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataInfo.rb +4 -3
  132. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataRepository.rb +4 -4
  133. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_obliqueLinePoint.rb +7 -4
  134. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_onlineResource.rb +60 -61
  135. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_orderProcess.rb +47 -47
  136. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_party.rb +57 -57
  137. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_phone.rb +49 -51
  138. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_processStep.rb +6 -6
  139. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_projectionParameters.rb +31 -30
  140. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_referenceSystemParameters.rb +16 -2
  141. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_releasability.rb +53 -47
  142. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +15 -13
  143. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceType.rb +46 -46
  144. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceUsage.rb +95 -95
  145. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_responsibleParty.rb +67 -67
  146. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_schema.rb +47 -46
  147. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scope.rb +47 -47
  148. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scopeDescription.rb +68 -63
  149. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_securityConstraint.rb +50 -50
  150. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_series.rb +38 -38
  151. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +8 -8
  152. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +6 -5
  153. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialRepresentation.rb +77 -75
  154. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +8 -14
  155. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicClassification.rb +71 -72
  156. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicSystem.rb +46 -45
  157. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +118 -116
  158. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_temporalExtent.rb +48 -46
  159. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInstant.rb +8 -8
  160. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInterval.rb +50 -50
  161. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +21 -14
  162. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +86 -75
  163. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_valueRange.rb +4 -4
  164. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorObject.rb +45 -45
  165. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorRepresentation.rb +45 -33
  166. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalDatum.rb +28 -6
  167. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalExtent.rb +59 -59
  168. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_voucher.rb +43 -43
  169. data/lib/adiwg/mdtranslator/readers/mdReaders.rb +6 -2
  170. data/lib/adiwg/mdtranslator/version.rb +9 -1
  171. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityAttribute.rb +3 -3
  172. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureConstraint.rb +50 -46
  173. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_multiplicity.rb +53 -43
  174. data/lib/adiwg/mdtranslator/writers/iso19110/version.rb +3 -1
  175. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityAttribute.rb +1 -1
  176. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +58 -58
  177. data/lib/adiwg/mdtranslator.rb +177 -165
  178. data/lib/adiwg/mdtranslator_cli.rb +8 -3
  179. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e02fc3036fab9967973b28006c339662ebd3686
4
- data.tar.gz: 5d0ee380026ba75e2a1ddd66c72e60cf5d3b558d
3
+ metadata.gz: 1d221df1baafa2798101177f087793b3ffc2e856
4
+ data.tar.gz: 51fbdedf28cdff42f3e79ae3ef534b2c2e4333a9
5
5
  SHA512:
6
- metadata.gz: 8476ff24ae3e4be32476261cc55773cec058cda7a6fc9fd9dad67626b3952aa27942338edef6847d8b3f2936e57fa9e528e443008449f872dab8fc4584c903bb
7
- data.tar.gz: 06aabb817a32d46468c82ed242a8be24a714c1eb11b2aa40c5776b0917cf645fe177181255238a5da4095ce10ab57a85b7365a532446924614a6a4cdaa065cb2
6
+ metadata.gz: da2abcc1a090ec4aa5bb51229f08dc0071d14c02e2b951ae43556f51eae69e08046a0ba8ef42dd649af300e8b042255c0ab76d5f913bae2a69cff07139e02948
7
+ data.tar.gz: d3a77722439c0570e126abbec4384dc97c787ea644ecdcb1eb53465a7da7352889a0fe8d725f306f5a0d6e593440704b01fc06da35b9f9b27bfe25c44a4a8603
data/CHANGELOG.md CHANGED
@@ -1,13 +1,41 @@
1
1
  # Change Log
2
2
 
3
- ## [v2.9.1](https://github.com/adiwg/mdTranslator/tree/v2.9.1)
3
+ ## [v2.10.0](https://github.com/adiwg/mdTranslator/tree/v2.10.0)
4
4
 
5
- [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.8.0...v2.9.1)
5
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.2...v2.10.0)
6
6
 
7
7
  **Merged pull requests:**
8
8
 
9
+ - Refactor reader messaging [\#186](https://github.com/adiwg/mdTranslator/pull/186) ([stansmith907](https://github.com/stansmith907))
10
+
11
+ ## [v2.9.2](https://github.com/adiwg/mdTranslator/tree/v2.9.2) (2018-02-21)
12
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.1...v2.9.2)
13
+
14
+ **Fixed bugs:**
15
+
16
+ - Need to load stamen over https [\#185](https://github.com/adiwg/mdTranslator/issues/185)
17
+
18
+ **Closed issues:**
19
+
20
+ - fgdc bio geologic age [\#144](https://github.com/adiwg/mdTranslator/issues/144)
21
+ - sbJson itemLink to/from ADIwg [\#106](https://github.com/adiwg/mdTranslator/issues/106)
22
+ - sbJson projectStatus to/from ADIwg [\#105](https://github.com/adiwg/mdTranslator/issues/105)
23
+ - sbJson dateType to/from ADIwg [\#104](https://github.com/adiwg/mdTranslator/issues/104)
24
+ - sbJson browseCategory to/from ADIwg [\#103](https://github.com/adiwg/mdTranslator/issues/103)
25
+ - sbJson webLinkType to/from ADIwg [\#102](https://github.com/adiwg/mdTranslator/issues/102)
26
+ - sbJson contactType to/from ADIwg [\#101](https://github.com/adiwg/mdTranslator/issues/101)
27
+
28
+ **Merged pull requests:**
29
+
30
+ - Minor bug fixes [\#182](https://github.com/adiwg/mdTranslator/pull/182) ([stansmith907](https://github.com/stansmith907))
9
31
  - mdTranslator version 2.9.0 [\#181](https://github.com/adiwg/mdTranslator/pull/181) ([stansmith907](https://github.com/stansmith907))
10
32
 
33
+ ## [v2.9.1](https://github.com/adiwg/mdTranslator/tree/v2.9.1) (2018-02-03)
34
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.9.0...v2.9.1)
35
+
36
+ ## [v2.9.0](https://github.com/adiwg/mdTranslator/tree/v2.9.0) (2018-02-03)
37
+ [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.8.0...v2.9.0)
38
+
11
39
  ## [v2.8.0](https://github.com/adiwg/mdTranslator/tree/v2.8.0) (2018-01-24)
12
40
  [Full Changelog](https://github.com/adiwg/mdTranslator/compare/v2.7.0...v2.8.0)
13
41
 
@@ -463,7 +463,7 @@ class InternalMetadata
463
463
  attributeReference: {},
464
464
  dataType: nil,
465
465
  allowNull: false,
466
- allowMany: false,
466
+ mustBeUnique: false,
467
467
  unitOfMeasure: nil,
468
468
  measureResolution: nil,
469
469
  isCaseSensitive: false,
@@ -477,13 +477,6 @@ class InternalMetadata
477
477
  }
478
478
  end
479
479
 
480
- def newValueRange
481
- {
482
- minRangeValue: nil,
483
- maxRangeValue: nil
484
- }
485
- end
486
-
487
480
  def newEntityForeignKey
488
481
  {
489
482
  fkLocalAttributes: [],
@@ -492,6 +485,13 @@ class InternalMetadata
492
485
  }
493
486
  end
494
487
 
488
+ def newValueRange
489
+ {
490
+ minRangeValue: nil,
491
+ maxRangeValue: nil
492
+ }
493
+ end
494
+
495
495
 
496
496
  # date-time ------------------------------
497
497
  def newDate
@@ -2,6 +2,7 @@
2
2
  # for ADIwg readers and writers
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-20 added tests for valid date and time formats
5
6
  # Stan Smith 2013-09-26 original script
6
7
  # Stan Smith 2013-12-06 added support for fractional seconds
7
8
 
@@ -9,168 +10,186 @@ require 'date'
9
10
 
10
11
  module AdiwgDateTimeFun
11
12
 
12
- def self.dateTimeFromString(inDateTime)
13
- hFormats = {'YMDhmsLZ' => '%Y-%m-%dT%H:%M:%S.%L%z',
14
- 'YMDhmsL' => '%Y-%m-%dT%H:%M:%S.%L',
15
- 'YMDhmsZ' => '%Y-%m-%dT%H:%M:%S%z',
16
- 'YMDhms' => '%Y-%m-%dT%H:%M:%S',
17
- 'YMDhmZ' => '%Y-%m-%dT%H:%M%z',
18
- 'YMDhm' => '%Y-%m-%dT%H:%M',
19
- 'YMDhZ' => '%Y-%m-%dT%H%z',
20
- 'YMDh' => '%Y-%m-%dT%H',
21
- 'YMD' => '%Y-%m-%d',
22
- 'YM' => '%Y-%m',
23
- 'Y' => '%Y'}
24
- hFormats.each do |dateResolution, format|
25
- myDateTime = DateTime.strptime(inDateTime, format) rescue false
26
- return myDateTime, dateResolution if myDateTime
27
- end
28
-
29
- return nil, 'ERROR'
30
- end
31
-
32
- def self.stringDateFromDateTime(myDateTime, dateResolution)
33
- s = case dateResolution
34
- when 'YMDhmsLZ', 'YMDhmsL', 'YMDhmsZ', 'YMDhms',
35
- 'YMDhmZ', 'YMDhm', 'YMDhZ', 'YMDh', 'YMD'
36
- myDateTime.strftime('%Y-%m-%d')
37
- when 'YM'
38
- myDateTime.strftime('%Y-%m')
39
- when 'Y'
40
- myDateTime.strftime('%Y')
41
- else
42
- 'ERROR'
43
- end
44
-
45
- return s
46
- end
47
-
48
- def self.stringDateTimeFromDateTime(myDateTime, dateResolution)
49
- s = case dateResolution
50
- when 'YMDhmsLZ'
51
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L%:z')
52
- when 'YMDhmsL'
53
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L')
54
- when 'YMDhmsZ'
55
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S%:z')
56
- when 'YMDhms', 'YMD', 'YM', 'Y'
57
- myDateTime.strftime('%Y-%m-%dT%H:%M:%S')
58
- when 'YMDhmZ'
59
- myDateTime.strftime('%Y-%m-%dT%H:%M%:z')
60
- when 'YMDhm'
61
- myDateTime.strftime('%Y-%m-%dT%H:%M')
62
- when 'YMDhZ'
63
- myDateTime.strftime('%Y-%m-%dT%H%:z')
64
- when 'YMDh'
65
- myDateTime.strftime('%Y-%m-%dT%H')
66
- else
67
- 'ERROR'
68
- end
69
-
70
- return s
71
- end
72
-
73
- def self.stringTimeFromDateTime(myDateTime, dateResolution)
74
- s = case dateResolution
75
- when 'YMDhmsLZ'
76
- myDateTime.strftime('%H:%M:%S.%L%:z')
77
- when 'YMDhmsL'
78
- myDateTime.strftime('%H:%M:%S.%L')
79
- when 'YMDhmsZ'
80
- myDateTime.strftime('%H:%M:%S%:z')
81
- when 'YMDhms'
82
- myDateTime.strftime('%H:%M:%S')
83
- when 'YMDhmZ'
84
- myDateTime.strftime('%H:%M%:z')
85
- when 'YMDhm'
86
- myDateTime.strftime('%H:%M')
87
- when 'YMDhZ'
88
- myDateTime.strftime('%H%:z')
89
- when 'YMDh'
90
- myDateTime.strftime('%H')
91
- else
92
- 'ERROR'
93
- end
94
-
95
- return s
96
- end
97
-
98
- def self.writeDuration(hDuration)
99
- # format P[n]Y[n]M[n]DT[n]H[n]M[n]S
100
- # example P1DT12H
101
- sDuration = 'P'
102
-
103
- unless hDuration[:years] == 0
104
- sDuration += hDuration[:years].to_s + 'Y'
105
- end
106
-
107
- unless hDuration[:months] == 0
108
- sDuration += hDuration[:months].to_s + 'M'
109
- end
110
-
111
- unless hDuration[:days] == 0
112
- sDuration += hDuration[:days].to_s + 'D'
113
- end
114
-
115
- haveTime = false
116
-
117
- unless hDuration[:hours] == 0
118
- unless haveTime
119
- sDuration += 'T'
120
- haveTime = true
121
- end
122
- sDuration += hDuration[:hours].to_s + 'H'
123
- end
124
-
125
- unless hDuration[:minutes] == 0
126
- unless haveTime
127
- sDuration += 'T'
128
- haveTime = true
129
- end
130
- sDuration += hDuration[:minutes].to_s + 'M'
131
- end
132
-
133
- unless hDuration[:seconds] == 0
134
- unless haveTime
135
- sDuration += 'T'
136
- end
137
- sDuration += hDuration[:seconds].to_s + 'S'
138
- end
139
-
140
- return sDuration
141
- end
142
-
143
- def self.stringDateFromDateObject(obj)
144
-
145
- date = obj[:date]
146
- if date.nil?
147
- date = obj[:dateTime]
148
- end
149
- dateRes = obj[:dateResolution]
150
- unless date.nil?
151
- dateStr = stringDateFromDateTime(date, dateRes)
152
- end
153
- return dateStr
154
-
155
- end
156
-
157
- def self.stringDateTimeFromDateObject(obj)
158
-
159
- date = obj[:date]
160
- if date.nil?
161
- date = obj[:dateTime]
162
- end
163
- dateRes = obj[:dateResolution]
164
- unless date.nil?
165
- case dateRes
166
- when 'Y', 'YM', 'YMD'
167
- dateStr = stringDateFromDateTime(date, dateRes)
13
+ def self.dateTimeFromString(inDateTime)
14
+
15
+ inDate, inTime = inDateTime.split('T')
16
+
17
+ # test for valid date before passing to formatter
18
+ y, m, d = inDate.split('-')
19
+ m = 1 if m.nil?
20
+ d = 1 if d.nil?
21
+ haveDate = Date.valid_date?(y.to_i, m.to_i, d.to_i)
22
+ return nil, 'ERROR' unless haveDate
23
+
24
+ # test for valid time before passing to formatter
25
+ # complete time regex /^[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|[zZ])/
26
+ # concatenate each permitted time format
27
+ unless inTime.nil?
28
+ timeReg = /^[0-2]\d|^[0-2]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d|^[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d:[0-5]\d|^[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|[zZ])|^[0-2]\d:[0-5]\d:[0-5]\d\.\d+|^[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/
29
+ return nil, 'ERROR' unless (timeReg =~ inTime) == 0
30
+ end
31
+
32
+ hFormats = {'YMDhmsLZ' => '%Y-%m-%dT%H:%M:%S.%L%z',
33
+ 'YMDhmsL' => '%Y-%m-%dT%H:%M:%S.%L',
34
+ 'YMDhmsZ' => '%Y-%m-%dT%H:%M:%S%z',
35
+ 'YMDhms' => '%Y-%m-%dT%H:%M:%S',
36
+ 'YMDhmZ' => '%Y-%m-%dT%H:%M%z',
37
+ 'YMDhm' => '%Y-%m-%dT%H:%M',
38
+ 'YMDhZ' => '%Y-%m-%dT%H%z',
39
+ 'YMDh' => '%Y-%m-%dT%H',
40
+ 'YMD' => '%Y-%m-%d',
41
+ 'YM' => '%Y-%m',
42
+ 'Y' => '%Y'}
43
+ hFormats.each do |dateResolution, format|
44
+ myDateTime = DateTime.strptime(inDateTime, format) rescue false
45
+ return myDateTime, dateResolution if myDateTime
46
+ end
47
+
48
+ return nil, 'ERROR'
49
+ end
50
+
51
+ def self.stringDateFromDateTime(myDateTime, dateResolution)
52
+ s = case dateResolution
53
+ when 'YMDhmsLZ', 'YMDhmsL', 'YMDhmsZ', 'YMDhms',
54
+ 'YMDhmZ', 'YMDhm', 'YMDhZ', 'YMDh', 'YMD'
55
+ myDateTime.strftime('%Y-%m-%d')
56
+ when 'YM'
57
+ myDateTime.strftime('%Y-%m')
58
+ when 'Y'
59
+ myDateTime.strftime('%Y')
168
60
  else
169
- dateStr = stringDateTimeFromDateTime(date, dateRes)
61
+ 'ERROR'
170
62
  end
171
- end
172
63
 
173
- return dateStr
174
- end
64
+ return s
65
+ end
66
+
67
+ def self.stringDateTimeFromDateTime(myDateTime, dateResolution)
68
+ s = case dateResolution
69
+ when 'YMDhmsLZ'
70
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L%:z')
71
+ when 'YMDhmsL'
72
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S.%L')
73
+ when 'YMDhmsZ'
74
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S%:z')
75
+ when 'YMDhms', 'YMD', 'YM', 'Y'
76
+ myDateTime.strftime('%Y-%m-%dT%H:%M:%S')
77
+ when 'YMDhmZ'
78
+ myDateTime.strftime('%Y-%m-%dT%H:%M%:z')
79
+ when 'YMDhm'
80
+ myDateTime.strftime('%Y-%m-%dT%H:%M')
81
+ when 'YMDhZ'
82
+ myDateTime.strftime('%Y-%m-%dT%H%:z')
83
+ when 'YMDh'
84
+ myDateTime.strftime('%Y-%m-%dT%H')
85
+ else
86
+ 'ERROR'
87
+ end
88
+
89
+ return s
90
+ end
91
+
92
+ def self.stringTimeFromDateTime(myDateTime, dateResolution)
93
+ s = case dateResolution
94
+ when 'YMDhmsLZ'
95
+ myDateTime.strftime('%H:%M:%S.%L%:z')
96
+ when 'YMDhmsL'
97
+ myDateTime.strftime('%H:%M:%S.%L')
98
+ when 'YMDhmsZ'
99
+ myDateTime.strftime('%H:%M:%S%:z')
100
+ when 'YMDhms'
101
+ myDateTime.strftime('%H:%M:%S')
102
+ when 'YMDhmZ'
103
+ myDateTime.strftime('%H:%M%:z')
104
+ when 'YMDhm'
105
+ myDateTime.strftime('%H:%M')
106
+ when 'YMDhZ'
107
+ myDateTime.strftime('%H%:z')
108
+ when 'YMDh'
109
+ myDateTime.strftime('%H')
110
+ else
111
+ 'ERROR'
112
+ end
113
+
114
+ return s
115
+ end
116
+
117
+ def self.writeDuration(hDuration)
118
+ # format P[n]Y[n]M[n]DT[n]H[n]M[n]S
119
+ # example P1DT12H
120
+ sDuration = 'P'
121
+
122
+ unless hDuration[:years] == 0
123
+ sDuration += hDuration[:years].to_s + 'Y'
124
+ end
125
+
126
+ unless hDuration[:months] == 0
127
+ sDuration += hDuration[:months].to_s + 'M'
128
+ end
129
+
130
+ unless hDuration[:days] == 0
131
+ sDuration += hDuration[:days].to_s + 'D'
132
+ end
133
+
134
+ haveTime = false
135
+
136
+ unless hDuration[:hours] == 0
137
+ unless haveTime
138
+ sDuration += 'T'
139
+ haveTime = true
140
+ end
141
+ sDuration += hDuration[:hours].to_s + 'H'
142
+ end
143
+
144
+ unless hDuration[:minutes] == 0
145
+ unless haveTime
146
+ sDuration += 'T'
147
+ haveTime = true
148
+ end
149
+ sDuration += hDuration[:minutes].to_s + 'M'
150
+ end
151
+
152
+ unless hDuration[:seconds] == 0
153
+ unless haveTime
154
+ sDuration += 'T'
155
+ end
156
+ sDuration += hDuration[:seconds].to_s + 'S'
157
+ end
158
+
159
+ return sDuration
160
+ end
161
+
162
+ def self.stringDateFromDateObject(obj)
163
+
164
+ date = obj[:date]
165
+ if date.nil?
166
+ date = obj[:dateTime]
167
+ end
168
+ dateRes = obj[:dateResolution]
169
+ unless date.nil?
170
+ dateStr = stringDateFromDateTime(date, dateRes)
171
+ end
172
+ return dateStr
173
+
174
+ end
175
+
176
+ def self.stringDateTimeFromDateObject(obj)
177
+
178
+ date = obj[:date]
179
+ if date.nil?
180
+ date = obj[:dateTime]
181
+ end
182
+ dateRes = obj[:dateResolution]
183
+ unless date.nil?
184
+ case dateRes
185
+ when 'Y', 'YM', 'YMD'
186
+ dateStr = stringDateFromDateTime(date, dateRes)
187
+ else
188
+ dateStr = stringDateTimeFromDateTime(date, dateRes)
189
+ end
190
+ end
191
+
192
+ return dateStr
193
+ end
175
194
 
176
195
  end
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 6
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'albers projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Albers projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'azimuth equidistant projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Azimuth Equidistant projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -40,8 +40,7 @@ module ADIWG
40
40
  if paramCount == 6
41
41
  return hProjection
42
42
  else
43
- hResponseObj[:readerExecutionMessages] << 'equidistant conic projection is missing one or more parameters'
44
- return nil
43
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Equidistant Conic projection is missing one or more parameters'
45
44
  end
46
45
  end
47
46
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'equirectangular projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Equirectangular projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 5
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'general vertical near-side perspective projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: General Vertical Near-side perspective projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'gnomonic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Gnomonic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -41,8 +41,7 @@ module ADIWG
41
41
  if paramCount == 6
42
42
  return hProjection
43
43
  else
44
- hResponseObj[:readerExecutionMessages] << 'lambert conformal conic projection is missing one or more parameters'
45
- return nil
44
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Lambert Conformal Conic projection is missing one or more parameters'
46
45
  end
47
46
  end
48
47
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'Lambert azimuthal equal area projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Lambert Azimuthal Equal Area projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -42,8 +42,7 @@ module ADIWG
42
42
  if paramCount == 4
43
43
  return hProjection
44
44
  else
45
- hResponseObj[:readerExecutionMessages] << 'mercator projection is missing one or more parameters'
46
- return nil
45
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Mercator projection is missing one or more parameters'
47
46
  end
48
47
  end
49
48
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'miller cylindrical projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Miller Cylindrical projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -31,8 +31,7 @@ module ADIWG
31
31
  if paramCount == 2
32
32
  return hProjection
33
33
  else
34
- hResponseObj[:readerExecutionMessages] << 'alaska modified stereographic projection is missing one or more parameters'
35
- return nil
34
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Alaska Modified Stereographic projection is missing one or more parameters'
36
35
  end
37
36
  end
38
37
 
@@ -45,8 +45,7 @@ module ADIWG
45
45
  if paramCount == 6
46
46
  return hProjection
47
47
  else
48
- hResponseObj[:readerExecutionMessages] << 'oblique mercator projection is missing one or more parameters'
49
- return nil
48
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Oblique Mercator projection is missing one or more parameters'
50
49
  end
51
50
  end
52
51
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'orthographic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Orthographic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -44,8 +44,7 @@ module ADIWG
44
44
  if paramCount == 4
45
45
  return hProjection
46
46
  else
47
- hResponseObj[:readerExecutionMessages] << 'polar stereographic projection is missing one or more parameters'
48
- return nil
47
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Polar Stereographic projection is missing one or more parameters'
49
48
  end
50
49
  end
51
50
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'polyconic projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Polyconic projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'robinson projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: Robinson projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -34,8 +34,7 @@ module ADIWG
34
34
  if paramCount == 3
35
35
  return hProjection
36
36
  else
37
- hResponseObj[:readerExecutionMessages] << 'sinusoidal projection is missing one or more parameters'
38
- return nil
37
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Sinusoidal projection is missing one or more parameters'
39
38
  end
40
39
  end
41
40
 
@@ -37,8 +37,7 @@ module ADIWG
37
37
  if paramCount == 4
38
38
  return hProjection
39
39
  else
40
- hResponseObj[:readerExecutionMessages] << 'space oblique projection is missing one or more parameters'
41
- return nil
40
+ hResponseObj[:readerExecutionMessages] << 'WARNING: Space Oblique projection is missing one or more parameters'
42
41
  end
43
42
  end
44
43