adiwg-mdtranslator 1.4.0 → 2.0.0rc2

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 (525) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -3
  3. data/.travis.yml +4 -3
  4. data/README.md +1 -3
  5. data/Rakefile +5 -1
  6. data/adiwg-mdtranslator.gemspec +5 -5
  7. data/bin/mdtranslator +3 -205
  8. data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +600 -316
  9. data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +123 -7
  10. data/lib/adiwg/mdtranslator/internal/module_dateTimeFun.rb +45 -0
  11. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_reader.rb +83 -178
  12. data/lib/adiwg/mdtranslator/readers/mdJson/mdJson_validator.rb +21 -22
  13. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_additionalDocumentation.rb +77 -0
  14. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_address.rb +101 -0
  15. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_allocation.rb +84 -0
  16. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_associatedResource.rb +111 -0
  17. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attribute.rb +224 -0
  18. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_attributeGroup.rb +63 -0
  19. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_boundingBox.rb +95 -0
  20. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_citation.rb +164 -0
  21. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_constraint.rb +163 -0
  22. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_contact.rb +172 -0
  23. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_coverageDescription.rb +96 -0
  24. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dataDictionary.rb +151 -0
  25. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_date.rb +74 -0
  26. data/lib/adiwg/mdtranslator/readers/mdJson/{modules_v1 → modules}/module_dateTime.rb +19 -5
  27. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_dimension.rb +87 -0
  28. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distribution.rb +56 -0
  29. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_distributor.rb +78 -0
  30. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domain.rb +95 -0
  31. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_domainItem.rb +70 -0
  32. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_duration.rb +112 -0
  33. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entity.rb +135 -0
  34. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityAttribute.rb +130 -0
  35. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityForeignKey.rb +78 -0
  36. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_entityIndex.rb +72 -0
  37. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_extent.rb +83 -0
  38. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_featureCollection.rb +87 -0
  39. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_format.rb +68 -0
  40. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_funding.rb +67 -0
  41. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geoJson.rb +70 -0
  42. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geographicExtent.rb +98 -0
  43. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryCollection.rb +87 -0
  44. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryFeature.rb +112 -0
  45. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryObject.rb +70 -0
  46. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_geometryProperties.rb +79 -0
  47. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georectifiedRepresentation.rb +113 -0
  48. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_georeferenceableRepresentation.rb +99 -0
  49. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gmlIdentifier.rb +55 -0
  50. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_graphic.rb +96 -0
  51. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_gridRepresentation.rb +79 -0
  52. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_identifier.rb +87 -0
  53. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_imageDescription.rb +120 -0
  54. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keyword.rb +83 -0
  55. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_keywordObject.rb +55 -0
  56. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_legalConstraint.rb +77 -0
  57. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_lineage.rb +104 -0
  58. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_locale.rb +66 -0
  59. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_maintenance.rb +93 -0
  60. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_mdJson.rb +136 -0
  61. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_measure.rb +75 -0
  62. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_medium.rb +105 -0
  63. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadata.rb +131 -0
  64. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataInfo.rb +157 -0
  65. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_metadataRepository.rb +53 -0
  66. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_onlineResource.rb +82 -0
  67. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_orderProcess.rb +68 -0
  68. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_party.rb +79 -0
  69. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_phone.rb +68 -0
  70. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_processStep.rb +113 -0
  71. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_releasability.rb +71 -0
  72. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceInfo.rb +364 -0
  73. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceType.rb +55 -0
  74. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_resourceUsage.rb +117 -0
  75. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_responsibleParty.rb +91 -0
  76. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_schema.rb +56 -0
  77. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scope.rb +72 -0
  78. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_scopeDescription.rb +73 -0
  79. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_securityConstraint.rb +72 -0
  80. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_series.rb +57 -0
  81. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_source.rb +123 -0
  82. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialReference.rb +65 -0
  83. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialRepresentation.rb +96 -0
  84. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_spatialResolution.rb +77 -0
  85. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicClassification.rb +87 -0
  86. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomicSystem.rb +60 -0
  87. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_taxonomy.rb +138 -0
  88. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_temporalExtent.rb +70 -0
  89. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInstant.rb +87 -0
  90. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timeInterval.rb +69 -0
  91. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_timePeriod.rb +120 -0
  92. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_transferOption.rb +95 -0
  93. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorObject.rb +55 -0
  94. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_vectorRepresentation.rb +55 -0
  95. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_verticalExtent.rb +81 -0
  96. data/lib/adiwg/mdtranslator/readers/mdJson/modules/module_voucher.rb +64 -0
  97. data/lib/adiwg/mdtranslator/readers/mdJson/readme.md +3 -9
  98. data/lib/adiwg/mdtranslator/readers/mdJson/version.rb +14 -0
  99. data/lib/adiwg/mdtranslator/readers/mdReaders.rb +36 -30
  100. data/lib/adiwg/mdtranslator/readers/sbJson/sbJson_reader.rb +39 -40
  101. data/lib/adiwg/mdtranslator/version.rb +38 -29
  102. data/lib/adiwg/mdtranslator/writers/html/html_writer.rb +28 -25
  103. data/lib/adiwg/mdtranslator/writers/html/readme.md +3 -9
  104. data/lib/adiwg/mdtranslator/writers/html/sections/html_additionalDocumentation.rb +35 -34
  105. data/lib/adiwg/mdtranslator/writers/html/sections/html_allocation.rb +71 -0
  106. data/lib/adiwg/mdtranslator/writers/html/sections/html_associatedResource.rb +51 -51
  107. data/lib/adiwg/mdtranslator/writers/html/sections/html_attribute.rb +189 -0
  108. data/lib/adiwg/mdtranslator/writers/html/sections/html_attributeGroup.rb +51 -0
  109. data/lib/adiwg/mdtranslator/writers/html/sections/html_body.rb +275 -259
  110. data/lib/adiwg/mdtranslator/writers/html/sections/html_bodyScript.js +275 -150
  111. data/lib/adiwg/mdtranslator/writers/html/sections/html_boundingBox.rb +51 -0
  112. data/lib/adiwg/mdtranslator/writers/html/sections/html_citation.rb +142 -82
  113. data/lib/adiwg/mdtranslator/writers/html/sections/html_constraint.rb +118 -0
  114. data/lib/adiwg/mdtranslator/writers/html/sections/html_contact.rb +166 -94
  115. data/lib/adiwg/mdtranslator/writers/html/sections/html_coverageInfo.rb +57 -64
  116. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataDictionary.rb +102 -96
  117. data/lib/adiwg/mdtranslator/writers/html/sections/html_date.rb +42 -0
  118. data/lib/adiwg/mdtranslator/writers/html/sections/html_datetime.rb +42 -0
  119. data/lib/adiwg/mdtranslator/writers/html/sections/html_dimension.rb +50 -52
  120. data/lib/adiwg/mdtranslator/writers/html/sections/html_distribution.rb +49 -0
  121. data/lib/adiwg/mdtranslator/writers/html/sections/html_distributor.rb +48 -44
  122. data/lib/adiwg/mdtranslator/writers/html/sections/html_document.rb +63 -0
  123. data/lib/adiwg/mdtranslator/writers/html/sections/html_domain.rb +53 -62
  124. data/lib/adiwg/mdtranslator/writers/html/sections/html_domainItem.rb +49 -0
  125. data/lib/adiwg/mdtranslator/writers/html/sections/html_duration.rb +68 -0
  126. data/lib/adiwg/mdtranslator/writers/html/sections/html_entity.rb +99 -122
  127. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityAttribute.rb +94 -100
  128. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityForeignKey.rb +55 -0
  129. data/lib/adiwg/mdtranslator/writers/html/sections/html_entityIndex.rb +39 -39
  130. data/lib/adiwg/mdtranslator/writers/html/sections/html_extent.rb +53 -86
  131. data/lib/adiwg/mdtranslator/writers/html/sections/html_feature.rb +97 -0
  132. data/lib/adiwg/mdtranslator/writers/html/sections/html_featureCollection.rb +82 -0
  133. data/lib/adiwg/mdtranslator/writers/html/sections/html_featureProperties.rb +71 -0
  134. data/lib/adiwg/mdtranslator/writers/html/sections/html_format.rb +46 -34
  135. data/lib/adiwg/mdtranslator/writers/html/sections/html_funding.rb +51 -0
  136. data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicElement.rb +61 -194
  137. data/lib/adiwg/mdtranslator/writers/html/sections/html_geographicExtent.rb +112 -0
  138. data/lib/adiwg/mdtranslator/writers/html/sections/html_geometryCollection.rb +78 -0
  139. data/lib/adiwg/mdtranslator/writers/html/sections/html_geometryObject.rb +46 -0
  140. data/lib/adiwg/mdtranslator/writers/html/sections/html_georectifiedRepresentation.rb +93 -0
  141. data/lib/adiwg/mdtranslator/writers/html/sections/html_georeferenceableRepresentation.rb +78 -0
  142. data/lib/adiwg/mdtranslator/writers/html/sections/html_graphic.rb +75 -0
  143. data/lib/adiwg/mdtranslator/writers/html/sections/html_gridRepresentation.rb +61 -0
  144. data/lib/adiwg/mdtranslator/writers/html/sections/html_head.rb +47 -60
  145. data/lib/adiwg/mdtranslator/writers/html/sections/html_identifier.rb +73 -0
  146. data/lib/adiwg/mdtranslator/writers/html/sections/html_imageInfo.rb +92 -110
  147. data/lib/adiwg/mdtranslator/writers/html/sections/html_inlineCss.css +16 -8
  148. data/lib/adiwg/mdtranslator/writers/html/sections/html_keyword.rb +47 -45
  149. data/lib/adiwg/mdtranslator/writers/html/sections/html_legalConstraint.rb +41 -48
  150. data/lib/adiwg/mdtranslator/writers/html/sections/html_lineage.rb +87 -0
  151. data/lib/adiwg/mdtranslator/writers/html/sections/html_locale.rb +47 -0
  152. data/lib/adiwg/mdtranslator/writers/html/sections/html_maintenance.rb +96 -0
  153. data/lib/adiwg/mdtranslator/writers/html/sections/html_measure.rb +47 -0
  154. data/lib/adiwg/mdtranslator/writers/html/sections/html_medium.rb +74 -52
  155. data/lib/adiwg/mdtranslator/writers/html/sections/html_metadataInfo.rb +162 -131
  156. data/lib/adiwg/mdtranslator/writers/html/sections/html_metadataRepository.rb +40 -0
  157. data/lib/adiwg/mdtranslator/writers/html/sections/html_onlineResource.rb +52 -55
  158. data/lib/adiwg/mdtranslator/writers/html/sections/html_orderProcess.rb +53 -55
  159. data/lib/adiwg/mdtranslator/writers/html/sections/html_processStep.rb +89 -57
  160. data/lib/adiwg/mdtranslator/writers/html/sections/html_releasability.rb +63 -0
  161. data/lib/adiwg/mdtranslator/writers/html/sections/html_resolution.rb +46 -38
  162. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceInfo.rb +402 -291
  163. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceType.rb +31 -0
  164. data/lib/adiwg/mdtranslator/writers/html/sections/html_responsibility.rb +81 -0
  165. data/lib/adiwg/mdtranslator/writers/html/sections/html_scope.rb +60 -0
  166. data/lib/adiwg/mdtranslator/writers/html/sections/html_scopeDescription.rb +54 -0
  167. data/lib/adiwg/mdtranslator/writers/html/sections/html_securityConstraint.rb +46 -47
  168. data/lib/adiwg/mdtranslator/writers/html/sections/html_source.rb +123 -0
  169. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialReference.rb +43 -0
  170. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialRepresentation.rb +77 -0
  171. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomy.rb +138 -90
  172. data/lib/adiwg/mdtranslator/writers/html/sections/html_taxonomyClass.rb +63 -50
  173. data/lib/adiwg/mdtranslator/writers/html/sections/html_temporalExtent.rb +66 -0
  174. data/lib/adiwg/mdtranslator/writers/html/sections/html_timeInstant.rb +60 -42
  175. data/lib/adiwg/mdtranslator/writers/html/sections/html_timeInterval.rb +40 -0
  176. data/lib/adiwg/mdtranslator/writers/html/sections/html_timePeriod.rb +88 -43
  177. data/lib/adiwg/mdtranslator/writers/html/sections/html_transferOption.rb +68 -50
  178. data/lib/adiwg/mdtranslator/writers/html/sections/html_usage.rb +118 -0
  179. data/lib/adiwg/mdtranslator/writers/html/sections/html_vectorObject.rb +40 -0
  180. data/lib/adiwg/mdtranslator/writers/html/sections/html_vectorRepresentation.rb +46 -0
  181. data/lib/adiwg/mdtranslator/writers/html/sections/html_verticalExtent.rb +62 -0
  182. data/lib/adiwg/mdtranslator/writers/html/version.rb +12 -11
  183. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_address.rb +70 -75
  184. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_baseUnit.rb +3 -3
  185. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_codelist.rb +14 -13
  186. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_contact.rb +50 -34
  187. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_conventionalUnit.rb +3 -3
  188. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_definitionUnit.rb +3 -3
  189. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_derivedUnit.rb +3 -3
  190. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_fcFeatureCatalogue.rb +205 -0
  191. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureAttribute.rb +39 -38
  192. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureConstraint.rb +9 -10
  193. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_featureType.rb +48 -40
  194. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_listedValue.rb +22 -20
  195. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_locale.rb +69 -0
  196. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_multiplicity.rb +24 -17
  197. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_onlineResource.rb +33 -29
  198. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_phone.rb +83 -0
  199. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_responsibleParty.rb +77 -64
  200. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_unitsOfMeasure.rb +20 -20
  201. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +21 -32
  202. data/lib/adiwg/mdtranslator/writers/iso19110/readme.md +3 -8
  203. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_address.rb +70 -74
  204. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_aggregateInformation.rb +30 -32
  205. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_attributeGroup.rb +70 -0
  206. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_baseUnit.rb +5 -5
  207. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingBox.rb +77 -0
  208. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_browseGraphic.rb +26 -24
  209. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_citation.rb +111 -100
  210. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_codelist.rb +14 -13
  211. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contact.rb +50 -34
  212. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_conventionalUnit.rb +5 -5
  213. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_coverageDescription.rb +99 -0
  214. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataIdentification.rb +195 -270
  215. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dataQuality.rb +26 -35
  216. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_date.rb +31 -38
  217. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_definitionUnit.rb +5 -5
  218. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_derivedUnit.rb +5 -5
  219. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_dimension.rb +26 -23
  220. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distribution.rb +19 -16
  221. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_distributor.rb +51 -66
  222. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_enumerationList.rb +12 -12
  223. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_metadataExtension.rb → class_extension.rb} +94 -67
  224. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_extent.rb +43 -59
  225. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_feature.rb +67 -0
  226. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureCollection.rb +56 -0
  227. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_featureProperties.rb +65 -0
  228. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_format.rb +48 -27
  229. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_fraction.rb +40 -0
  230. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gcoDateTime.rb +48 -0
  231. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicElement.rb +55 -26
  232. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicExtent.rb +82 -0
  233. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometricObjects.rb +56 -0
  234. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geometryCollection.rb +88 -0
  235. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georectified.rb +121 -0
  236. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_georeferenceable.rb +86 -0
  237. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gmlIdentifier.rb +32 -0
  238. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_grid.rb +73 -0
  239. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridRepresentation.rb +36 -0
  240. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_hierarchy.rb +58 -0
  241. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_image.rb +144 -0
  242. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_keyword.rb +41 -35
  243. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_legalConstraints.rb +46 -37
  244. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineString.rb +45 -51
  245. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_lineage.rb +29 -31
  246. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_locale.rb +21 -17
  247. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenance.rb +119 -0
  248. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_mdBand.rb +121 -0
  249. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_identifier.rb → class_mdIdentifier.rb} +25 -27
  250. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_measure.rb +48 -0
  251. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_medium.rb +66 -42
  252. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miBand.rb +91 -0
  253. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_miMetadata.rb +352 -0
  254. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiLine.rb +82 -0
  255. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPoint.rb +82 -0
  256. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiPolygon.rb +82 -0
  257. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_onlineResource.rb +33 -29
  258. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_standardOrderProcess.rb → class_orderProcess.rb} +33 -35
  259. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_phone.rb +83 -0
  260. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_point.rb +46 -51
  261. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_polygon.rb +54 -61
  262. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_processStep.rb +46 -34
  263. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeDimension.rb +73 -0
  264. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_referenceSystem.rb +24 -25
  265. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resolution.rb +32 -31
  266. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_responsibleParty.rb +75 -65
  267. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rsIdentifier.rb +86 -0
  268. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scope.rb +71 -0
  269. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_scopeDescription.rb +54 -0
  270. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_securityConstraints.rb +47 -32
  271. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_series.rb +63 -0
  272. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_source.rb +58 -28
  273. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_spatialRepresentation.rb +64 -0
  274. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/{class_taxonClassification.rb → class_taxonomicClassification.rb} +35 -38
  275. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomicSystem.rb +49 -0
  276. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonomy.rb +144 -0
  277. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_temporalExtent.rb +15 -28
  278. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timeInstant.rb +42 -19
  279. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_timePeriod.rb +79 -28
  280. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_transferOptions.rb +91 -0
  281. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_unitsOfMeasure.rb +22 -22
  282. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_usage.rb +70 -28
  283. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_useConstraints.rb +18 -17
  284. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vectorRepresentation.rb +59 -0
  285. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_verticalExtent.rb +39 -26
  286. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_vouchers.rb +20 -20
  287. data/lib/adiwg/mdtranslator/writers/iso19115_2/iso19115_2_writer.rb +22 -133
  288. data/lib/adiwg/mdtranslator/writers/iso19115_2/readme.md +1 -7
  289. data/lib/adiwg/mdtranslator/writers/mdJson/mdJson_writer.rb +44 -41
  290. data/lib/adiwg/mdtranslator/writers/mdJson/readme.md +3 -9
  291. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_additionalDocumentation.rb +33 -0
  292. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_address.rb +29 -17
  293. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_allocation.rb +32 -0
  294. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_associatedResource.rb +30 -16
  295. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_attribute.rb +48 -22
  296. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_attributeGroup.rb +32 -0
  297. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_boundingBox.rb +30 -0
  298. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_citation.rb +41 -26
  299. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_constraint.rb +40 -23
  300. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_contact.rb +39 -24
  301. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_coverageDescription.rb +37 -0
  302. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_date.rb +42 -0
  303. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dateTime.rb +33 -13
  304. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dictionary.rb +35 -25
  305. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dimension.rb +32 -0
  306. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distribution.rb +32 -0
  307. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distributor.rb +34 -0
  308. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_domain.rb +30 -20
  309. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_domainItem.rb +29 -0
  310. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_duration.rb +33 -0
  311. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entity.rb +35 -32
  312. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityAttribute.rb +37 -0
  313. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityForeignKey.rb +29 -0
  314. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_entityIndex.rb +29 -0
  315. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_extent.rb +31 -21
  316. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_format.rb +26 -14
  317. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_funding.rb +32 -0
  318. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicExtent.rb +33 -0
  319. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_georectifiedRepresentation.rb +35 -0
  320. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_georeferenceableRepresentation.rb +36 -0
  321. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_graphicOverview.rb +31 -15
  322. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_gridRepresentation.rb +34 -0
  323. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_identifier.rb +33 -0
  324. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_imageDescription.rb +41 -0
  325. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_keyword.rb +28 -14
  326. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_keywordObject.rb +29 -0
  327. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_legalConstraint.rb +29 -0
  328. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_lineageInfo.rb +38 -0
  329. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_locale.rb +25 -14
  330. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_maintenance.rb +37 -0
  331. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_mdJson.rb +54 -0
  332. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_measure.rb +29 -0
  333. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_medium.rb +37 -0
  334. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadata.rb +35 -22
  335. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_metadataInfo.rb +39 -29
  336. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_onlineResource.rb +27 -16
  337. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_orderProcess.rb +31 -0
  338. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_party.rb +32 -0
  339. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_phone.rb +25 -14
  340. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_processStep.rb +34 -19
  341. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_releasability.rb +32 -0
  342. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_repository.rb +29 -0
  343. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceInfo.rb +61 -56
  344. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceType.rb +29 -0
  345. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_responsibleParty.rb +29 -13
  346. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_scope.rb +34 -0
  347. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_scopeDescription.rb +31 -0
  348. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_securityConstraint.rb +30 -0
  349. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_series.rb +30 -0
  350. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_source.rb +40 -0
  351. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialReference.rb +30 -0
  352. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialRepresentation.rb +34 -0
  353. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialResolution.rb +30 -0
  354. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomicClassification.rb +35 -0
  355. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomicSystem.rb +29 -0
  356. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxonomy.rb +36 -26
  357. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_temporalExtent.rb +31 -0
  358. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timeInstant.rb +33 -0
  359. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timeInterval.rb +29 -0
  360. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_timePeriod.rb +34 -15
  361. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_transferOption.rb +32 -26
  362. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_usage.rb +33 -17
  363. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_vectorObject.rb +28 -0
  364. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_vectorRepresentation.rb +31 -0
  365. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalExtent.rb +32 -0
  366. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_voucher.rb +29 -0
  367. data/lib/adiwg/mdtranslator/writers/mdJson/version.rb +13 -9
  368. data/lib/adiwg/mdtranslator/writers/mdWriters.rb +36 -28
  369. data/lib/adiwg/mdtranslator.rb +135 -113
  370. data/lib/adiwg/mdtranslator_cli.rb +191 -0
  371. metadata +238 -215
  372. data/lib/adiwg/mdtranslator/internal/module_geoFormat.rb +0 -219
  373. data/lib/adiwg/mdtranslator/internal/module_lineString.rb +0 -18
  374. data/lib/adiwg/mdtranslator/internal/module_point.rb +0 -18
  375. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_additionalDocumentation.rb +0 -64
  376. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_address.rb +0 -91
  377. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_associatedResource.rb +0 -100
  378. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_boundingBox.rb +0 -64
  379. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_browseGraphic.rb +0 -79
  380. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_citation.rb +0 -141
  381. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_classedData.rb +0 -49
  382. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_classedDataItem.rb +0 -53
  383. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_contacts.rb +0 -164
  384. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_coverageInfo.rb +0 -83
  385. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_coverageItem.rb +0 -136
  386. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dataDictionary.rb +0 -65
  387. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dataQuality.rb +0 -65
  388. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_descriptiveKeyword.rb +0 -77
  389. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dictionaryInfo.rb +0 -82
  390. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_digitalTransferOption.rb +0 -80
  391. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_dimension.rb +0 -81
  392. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_distributionInfo.rb +0 -89
  393. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_distributionOrder.rb +0 -62
  394. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_domain.rb +0 -96
  395. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_domainItem.rb +0 -72
  396. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entity.rb +0 -131
  397. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityAttribute.rb +0 -134
  398. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityForeignKey.rb +0 -73
  399. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_entityIndex.rb +0 -72
  400. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_extent.rb +0 -75
  401. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geoCoordSystem.rb +0 -59
  402. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geoProperties.rb +0 -102
  403. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_geographicElement.rb +0 -189
  404. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_gridInfo.rb +0 -67
  405. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_imageInfo.rb +0 -119
  406. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_legalConstraint.rb +0 -62
  407. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_lineString.rb +0 -37
  408. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_lineage.rb +0 -67
  409. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_locale.rb +0 -57
  410. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_mdJson.rb +0 -68
  411. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_medium.rb +0 -73
  412. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadata.rb +0 -90
  413. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadataExtension.rb +0 -53
  414. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_metadataInfo.rb +0 -152
  415. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_onlineResource.rb +0 -84
  416. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_phone.rb +0 -81
  417. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_point.rb +0 -37
  418. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_polygon.rb +0 -67
  419. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_processStep.rb +0 -88
  420. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resolution.rb +0 -59
  421. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceFormat.rb +0 -57
  422. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceIdentifier.rb +0 -85
  423. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceInfo.rb +0 -374
  424. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceMaintenance.rb +0 -63
  425. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_resourceSpecificUsage.rb +0 -63
  426. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_responsibleParty.rb +0 -68
  427. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_securityConstraint.rb +0 -65
  428. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_sensorInfo.rb +0 -69
  429. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_source.rb +0 -65
  430. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_spatialReference.rb +0 -61
  431. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_taxonClass.rb +0 -56
  432. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_taxonomy.rb +0 -96
  433. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_temporalElement.rb +0 -84
  434. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_timeInstant.rb +0 -58
  435. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_timePeriod.rb +0 -66
  436. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_verticalElement.rb +0 -66
  437. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/module_voucher.rb +0 -51
  438. data/lib/adiwg/mdtranslator/readers/mdJson/modules_v1/version.rb +0 -19
  439. data/lib/adiwg/mdtranslator/readers/mdJson/validator.rb +0 -43
  440. data/lib/adiwg/mdtranslator/readers/sbJson/sbJson_validator.rb +0 -44
  441. data/lib/adiwg/mdtranslator/writers/html/md_html_writer.rb +0 -59
  442. data/lib/adiwg/mdtranslator/writers/html/sections/html_browseGraphic.rb +0 -59
  443. data/lib/adiwg/mdtranslator/writers/html/sections/html_coverageItem.rb +0 -139
  444. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataLineage.rb +0 -68
  445. data/lib/adiwg/mdtranslator/writers/html/sections/html_dataSource.rb +0 -67
  446. data/lib/adiwg/mdtranslator/writers/html/sections/html_dateTime.rb +0 -41
  447. data/lib/adiwg/mdtranslator/writers/html/sections/html_domainMember.rb +0 -52
  448. data/lib/adiwg/mdtranslator/writers/html/sections/html_gridInfo.rb +0 -65
  449. data/lib/adiwg/mdtranslator/writers/html/sections/html_headScript.js +0 -18
  450. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceContact.rb +0 -37
  451. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceGeneral.rb +0 -133
  452. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceId.rb +0 -77
  453. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceMaint.rb +0 -56
  454. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceOther.rb +0 -88
  455. data/lib/adiwg/mdtranslator/writers/html/sections/html_resourceUsage.rb +0 -56
  456. data/lib/adiwg/mdtranslator/writers/html/sections/html_responsibleParty.rb +0 -39
  457. data/lib/adiwg/mdtranslator/writers/html/sections/html_spatialReferenceSystem.rb +0 -58
  458. data/lib/adiwg/mdtranslator/writers/html/sections/html_temporalElement.rb +0 -61
  459. data/lib/adiwg/mdtranslator/writers/html/sections/html_verticalElement.rb +0 -59
  460. data/lib/adiwg/mdtranslator/writers/iso19110/class_FCfeatureCatalogue.rb +0 -191
  461. data/lib/adiwg/mdtranslator/writers/iso19110/classes/class_telephone.rb +0 -92
  462. data/lib/adiwg/mdtranslator/writers/iso19110/version.rb +0 -14
  463. data/lib/adiwg/mdtranslator/writers/iso19115_2/class_MImetadata.rb +0 -391
  464. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_band.rb +0 -165
  465. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_boundingPolygon.rb +0 -90
  466. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_contentInfo.rb +0 -111
  467. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_digitalTransferOptions.rb +0 -92
  468. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicBoundingBox.rb +0 -89
  469. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_geographicDescription.rb +0 -44
  470. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_gridInfo.rb +0 -80
  471. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_imageDescription.rb +0 -157
  472. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_maintenanceInformation.rb +0 -80
  473. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_multiGeometry.rb +0 -156
  474. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_rangeElementDescription.rb +0 -88
  475. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_resourceIdentifier.rb +0 -94
  476. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_taxonSystem.rb +0 -115
  477. data/lib/adiwg/mdtranslator/writers/iso19115_2/classes/class_telephone.rb +0 -92
  478. data/lib/adiwg/mdtranslator/writers/iso19115_2/version.rb +0 -17
  479. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_additionalDoc.rb +0 -19
  480. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_base.rb +0 -19
  481. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_dataQuality.rb +0 -32
  482. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_distributionInfo.rb +0 -31
  483. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_geographicElement.rb +0 -81
  484. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_gridInfo.rb +0 -27
  485. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceIdentifier.rb +0 -23
  486. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_resourceMaintenance.rb +0 -23
  487. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_spatialreference.rb +0 -19
  488. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_taxon.rb +0 -19
  489. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_temporalElement.rb +0 -38
  490. data/lib/adiwg/mdtranslator/writers/mdJson/sections/mdJson_verticalElement.rb +0 -20
  491. data/test/readers/mdJson/v1/tc_reader_mdjson_additionalDocumentation.rb +0 -116
  492. data/test/readers/mdJson/v1/tc_reader_mdjson_address.rb +0 -111
  493. data/test/readers/mdJson/v1/tc_reader_mdjson_associatedResource.rb +0 -157
  494. data/test/readers/mdJson/v1/tc_reader_mdjson_browseGraphic.rb +0 -119
  495. data/test/readers/mdJson/v1/tc_reader_mdjson_citation.rb +0 -143
  496. data/test/readers/mdJson/v1/tc_reader_mdjson_contact.rb +0 -138
  497. data/test/readers/mdJson/v1/tc_reader_mdjson_dataQuality.rb +0 -111
  498. data/test/readers/mdJson/v1/tc_reader_mdjson_dateTime.rb +0 -159
  499. data/test/readers/mdJson/v1/tc_reader_mdjson_descriptiveKeyword.rb +0 -115
  500. data/test/readers/mdJson/v1/tc_reader_mdjson_dictionaryInfo.rb +0 -121
  501. data/test/readers/mdJson/v1/tc_reader_mdjson_digitalTransferOption.rb +0 -94
  502. data/test/readers/mdJson/v1/tc_reader_mdjson_distributionOrder.rb +0 -103
  503. data/test/readers/mdJson/v1/tc_reader_mdjson_domain.rb +0 -130
  504. data/test/readers/mdJson/v1/tc_reader_mdjson_domainItem.rb +0 -98
  505. data/test/readers/mdJson/v1/tc_reader_mdjson_entity.rb +0 -134
  506. data/test/readers/mdJson/v1/tc_reader_mdjson_entityAttribute.rb +0 -154
  507. data/test/readers/mdJson/v1/tc_reader_mdjson_entityForeignKey.rb +0 -100
  508. data/test/readers/mdJson/v1/tc_reader_mdjson_entityIndex.rb +0 -99
  509. data/test/readers/mdJson/v1/tc_reader_mdjson_legalConstraint.rb +0 -104
  510. data/test/readers/mdJson/v1/tc_reader_mdjson_lineage.rb +0 -117
  511. data/test/readers/mdJson/v1/tc_reader_mdjson_medium.rb +0 -98
  512. data/test/readers/mdJson/v1/tc_reader_mdjson_metadataInfo.rb +0 -141
  513. data/test/readers/mdJson/v1/tc_reader_mdjson_onlineResource.rb +0 -110
  514. data/test/readers/mdJson/v1/tc_reader_mdjson_phone.rb +0 -112
  515. data/test/readers/mdJson/v1/tc_reader_mdjson_processStep.rb +0 -118
  516. data/test/readers/mdJson/v1/tc_reader_mdjson_resolution.rb +0 -77
  517. data/test/readers/mdJson/v1/tc_reader_mdjson_source.rb +0 -117
  518. data/test/readers/mdJson/v1/tc_reader_mdjson_translation.rb +0 -85
  519. data/test/readers/mdJson/v1/tc_translation_19110.rb +0 -58
  520. data/test/readers/sbJson/v0/tc_reader_sbjson_translation.rb +0 -81
  521. data/test/readers/sbJson/v0/test.json +0 -431
  522. data/test/readers/sbJson/v0/test1.json +0 -383
  523. data/test/writers/iso19115_2/tc_writer_iso19115_2_address.rb +0 -229
  524. data/test/writers/mdJson/v1/tc_writer_mdJson.rb +0 -62
  525. data/test/writers/sbJson/v0/tc_writer_sbJson.rb +0 -62
@@ -0,0 +1,29 @@
1
+ # mdJson 2.0 writer - taxonomic voucher
2
+
3
+ # History:
4
+ # Stan Smith 2017-03-17 original script
5
+
6
+ require 'jbuilder'
7
+ require_relative 'mdJson_responsibleParty'
8
+
9
+ module ADIWG
10
+ module Mdtranslator
11
+ module Writers
12
+ module MdJson
13
+
14
+ module Voucher
15
+
16
+ def self.build(hVoucher)
17
+
18
+ Jbuilder.new do |json|
19
+ json.specimen hVoucher[:specimen]
20
+ json.repository ResponsibleParty.build(hVoucher[:repository]) unless hVoucher[:repository].empty?
21
+ end
22
+
23
+ end # build
24
+ end # Voucher
25
+
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,13 +1,17 @@
1
+ # History version 2
2
+ # Stan Smith 2017-03-10 refactored for mdJson/mdTranslator 2.0
3
+
4
+ # History version 1
5
+ # Josh Bradley
6
+
1
7
  module ADIWG
2
- module Mdtranslator
3
- module Writers
4
- module MdJson
8
+ module Mdtranslator
9
+ module Writers
10
+ module MdJson
5
11
 
6
- # current version of mdJson writer,
7
- # corresponds to mdJson output
8
- VERSION = '1.1.0'
12
+ VERSION = '2.0.0'
9
13
 
10
- end
11
- end
12
- end
14
+ end
15
+ end
16
+ end
13
17
  end
@@ -1,61 +1,69 @@
1
1
  # MdTranslator - controller for evaluating and directing writers
2
2
 
3
3
  # History:
4
- # Stan Smith 2014-12-11 original script
5
- # Stan Smith 2012-12-16 generalized handleWriter to use :writerName
6
- # Stan Smith 2015-03-04 changed method of setting $WriterNS
7
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
8
- # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
4
+ # Stan Smith 2016-11-14 refactored for mdTranslator 2.0.0
9
5
  # Stan Smith 2015-07-14 refactored to eliminate namespace globals $WriterNS and $IsoNS
6
+ # Stan Smith 2015-07-14 refactored to make iso19110 independent of iso19115_2 classes
7
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
8
+ # Stan Smith 2015-03-04 changed method of setting $WriterNS
9
+ # Stan Smith 2012-12-16 generalized handleWriter to use :writerName
10
+ # Stan Smith 2014-12-11 original script
10
11
 
11
12
  module ADIWG
12
13
  module Mdtranslator
13
14
  module Writers
14
15
 
15
- def self.handleWriter(intObj, responseObj, paramsObj)
16
+ def self.handleWriter(intObj, hResponseObj)
16
17
 
17
- # use writerName from responseObj to build directory path to writer
18
- # the writer's high level folder must be under the 'writers' directory
19
- writerDir = File.join(path_to_writers, responseObj[:writerName])
18
+ # use ':writerRequested' from hResponseObj to build directory path to writer
19
+ # writer's high-level folder must be placed in 'lib/adiwg/mdtranslator/writers/'
20
+ # writer's code must must be in folder named '{writer}'
21
+ # '{writer}' must contain a module named '{writer}_writer.rb'
22
+ # '{writer}_writer.rb' must have a method named 'startWriter()'
23
+ # 'startWriter()' must pass two parameters (intObj, hResponseObj)
24
+ # all writer modules and classes must remain in their private namespace
25
+ # writer namespace is 'ADIWG::Mdtranslator::Writers::{writer}'
26
+
27
+ # the writer's high-level
28
+ thisDir = File.dirname(File.expand_path(__FILE__))
29
+ writerDir = File.join(thisDir, hResponseObj[:writerRequested])
20
30
  if File.directory?(writerDir)
21
31
 
22
- # if directory path exists, build writer file name and require it
23
- writerFile = File.join(writerDir, responseObj[:writerName] + '_writer')
24
- require writerFile
32
+ # writer folder
33
+ writerModule = File.join(writerDir, hResponseObj[:writerRequested] + '_writer')
34
+ require writerModule
25
35
 
26
- # build the namespace for the writer
27
- writerNS = responseObj[:writerName].dup
36
+ # writer namespace
37
+ writerNS = hResponseObj[:writerRequested].dup
28
38
  writerNS[0] = writerNS[0].upcase
29
39
 
30
- # pass internal object and response object to the writer
31
- responseObj[:writerOutput] = ADIWG::Mdtranslator::Writers.const_get(writerNS).startWriter(intObj, responseObj, paramsObj)
40
+ # pass internal object and hResponseObj to the writer
41
+ hResponseObj[:writerOutput] = ADIWG::Mdtranslator::Writers.const_get(writerNS).startWriter(intObj, hResponseObj)
32
42
 
33
43
  else
34
- # directory path was not found
35
- responseObj[:writerPass] = false
36
- responseObj[:writerMessages] << 'Writer not called - see following message(s):\n'
37
- responseObj[:writerMessages] << "Writer name '#{responseObj[:writerName]}' is not supported."
38
- return false
44
+ hResponseObj[:writerMessages] << "Requested writer '#{hResponseObj[:writerRequested]}' cannot be found."
45
+ hResponseObj[:writerPass] = false
39
46
  end
40
47
 
41
- end
48
+ return hResponseObj
42
49
 
43
- # return path to writers
44
- def self.path_to_writers
45
- File.dirname(File.expand_path(__FILE__))
46
50
  end
47
51
 
48
52
  # return writer readme text
49
53
  # this is called from the Rails API
50
54
  def self.get_writer_readme(writer)
51
- readmeText = 'No readme found'
52
- path = File.join(path_to_writers, writer, 'readme.md')
55
+
56
+ thisDir = File.dirname(File.expand_path(__FILE__))
57
+ path = File.join(thisDir, writer, 'readme.md')
53
58
  if File.exist?(path)
54
59
  file = File.open(path, 'r')
55
60
  readmeText = file.read
56
61
  file.close
62
+ return readmeText
63
+ else
64
+ return 'Readme file not found'
57
65
  end
58
- return readmeText
66
+
59
67
  end
60
68
 
61
69
  end
@@ -1,156 +1,178 @@
1
- # MdTranslator - ADIwg MdTranslator RubyGem entry point
1
+ # MdTranslator - ADIwg MdTranslator entry point
2
2
 
3
3
  # History:
4
- # Stan Smith 2014-07-02 original script
5
- # Stan Smith 2014-07-21 added ADIWG namespace
6
- # Stan Smith 2014-07-21 added validation of json structure
4
+ # Stan Smith 2016-11-11 refactor for mdTranslator 2.0
5
+ # Stan Smith 2015-07-17 added support for user supplied CSS for html writer
6
+ # Stan Smith 2015-07-16 moved module_coordinates from mdJson reader to internal
7
+ # Stan Smith 2015-07-14 renamed readerVersionFound to readerVersionRequested
8
+ # Stan Smith 2015-07-14 deleted readerFound
9
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
10
+ # ... created as an instance of class ResponseHash
11
+ # Stan Smith 2015-03-04 moved addFinalMessages into this module from rails app
12
+ # Stan Smith 2015-01-15 changed translate() to keyword parameter list
13
+ # Stan Smith 2014-12-11 refactored to handle namespacing readers and writers
14
+ # Stan Smith 2014-12-02 organized shared class/code/units folders for 19115-2, 19110
15
+ # Stan Smith 2014-12-01 added translator version to $response
16
+ # Stan Smith 2014-12-01 added writer iso19110 (feature catalogue)
17
+ # Stan Smith 2014-12-01 changed adiwgJson to mdJson
18
+ # Stan Smith 2014-10-11 added methods to return content of readme files
19
+ # Stan Smith 2014-10-10 added method to return path to readers and writers
20
+ # Stan Smith 2014-09-26 added processing of minor release numbers
7
21
  # Stan Smith 2014-07-23 moved all validations to readers/adiwg/adiwg_validator.rb
8
22
  # ... each reader will have it's own validator
9
- # Stan Smith 2014-09-26 added processing of minor release numbers
10
- # Stan Smith 2014-10-10 added method to return path to readers and writers
11
- # Stan Smith 2014-10-11 added methods to return content of readme files
12
- # Stan Smith 2014-12-01 changed adiwgJson to mdJson
13
- # Stan Smith 2014-12-01 added writer iso19110 (feature catalogue)
14
- # Stan Smith 2014-12-01 added translator version to $response
15
- # Stan Smith 2014-12-02 organized shared class/code/units folders for 19115-2, 19110
16
- # Stan Smith 2014-12-11 refactored to handle namespacing readers and writers
17
- # Stan Smith 2015-01-15 changed translate() to keyword parameter list
18
- # Stan Smith 2015-03-04 moved addFinalMessages into this module from rails app
19
- # Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj)
20
- # ... created as an instance of class ResponseHash
21
- # Stan Smith 2015-07-14 deleted readerFound
22
- # Stan Smith 2015-07-14 renamed readerVersionFound to readerVersionRequested
23
- # Stan Smith 2015-07-16 moved module_coordinates from mdJson reader to internal
24
- # Stan Smith 2015-07-17 added support for user supplied CSS for html writer
23
+ # Stan Smith 2014-07-21 added validation of json structure
24
+ # Stan Smith 2014-07-21 added ADIWG namespace
25
+ # Stan Smith 2014-07-02 original script
25
26
 
26
27
  # required by readers and writers
27
28
  require 'adiwg/mdtranslator/version'
28
29
  require 'adiwg/mdtranslator/readers/mdReaders'
29
30
  require 'adiwg/mdtranslator/writers/mdWriters'
30
- require 'adiwg/mdtranslator/internal/internal_metadata_obj'
31
- require 'adiwg/mdtranslator/internal/module_dateTimeFun'
32
- require 'adiwg/mdtranslator/internal/module_geoFormat'
33
- require 'adiwg/mdtranslator/internal/module_coordinates'
34
- require 'adiwg/mdtranslator/internal/module_point'
35
- require 'adiwg/mdtranslator/internal/module_lineString'
36
31
 
37
32
  module ADIWG
38
33
  module Mdtranslator
39
34
 
40
- def self.translate(file:, reader:, validate: 'normal', writer: nil, showAllTags: false, css: nil, cssLink: nil)
35
+ def self.translate(file:, reader: 'mdJson', writer: nil, validate: 'normal', showAllTags: false, cssLink: nil)
41
36
 
42
- # the reader and writer specified in the translate parameter string should load and
37
+ # the reader and writer specified in the translate module parameter string will load and
43
38
  # return this hash ...
39
+ # ====================================================================================
40
+ # readerRequested: name of the reader requested by the user
41
+ # - set from the parameter list (reader) (default = 'mdJson')
42
+ # ------------------------------------------------------------------------------------
43
+ # readerVersionRequested: version of the reader requested in input file
44
+ # - set in reader
45
+ # ------------------------------------------------------------------------------------
46
+ # readerVersionUsed: actual reader version use in processing the input file
47
+ # - set by the reader
48
+ # ------------------------------------------------------------------------------------
49
+ # readerStructurePass: false if input file structure is determined to be invalid
50
+ # - set by the reader
51
+ # ------------------------------------------------------------------------------------
52
+ # readerStructureMessages: an array of parser warning and error messages
53
+ # - set by the reader
44
54
  # ------------------------------------------------------------------------------------
45
- # readerFormat: the anticipated format of the input file, parsing by the reader will
46
- # proceed assuming this format, set by reader
47
- # readerStructurePass: 'true' if input file structure is determined to be valid.
48
- # Set by the reader.
49
- # readerStructureMessages: an array of quoted string messages. If readerStructurePass
50
- # is false, set one or more messages to assist the user in fixing file structure
51
- # problems. Set by reader.
52
- # readerRequested: name of the reader requested by the user, set from the translate
53
- # parameter list
54
- # readerVersionRequested: version of the reader requested by the input file, set by reader
55
- # readerVersionUsed: version of the reader the reader method decided to use in processing
56
- # the input file. Set by the reader. Default 'normal'.
57
55
  # readerValidationLevel: validation level requested to be applied to the input file, set
58
- # from the parameter list
59
- # readerValidationPass: true if the input file passes the level of validation requested,
60
- # set by reader
61
- # readerValidationMessages: an array of quoted string messages. If readerValidationPass
62
- # is 'false', set one or more messages to assist user fixing file schema validation
63
- # problems. Set by reader.
64
- # readerExecutionPass: 'true' if the reader completes the import of the input file into
65
- # the internal object without errors. set by reader.
66
- # readerExecutionMessages: an array of quoted string messages. If readerExecutionPass is
67
- # 'false', set one or more messages to assist user in fixing file data problems.
68
- # Set by reader.
69
- # writerName: name of the writer requested by the user, set from the translate parameter
70
- # list. if nil no write was requested and only validation of the input file will
71
- # be performed.
72
- # writerVersion: current version of the writer requested, set by writer
73
- # writerFormat: format of the output from the writer. Set by writer.
74
- # writerPass: true if the writer completes the creation of the output file without errors,
75
- # set by writer
76
- # writerMessages: an array of quoted string messages. If writerPass is 'false', set one
77
- # or more messages to assist user in fixing file data problems. Set by writer.
78
- # writerOutput: output file returned from the writer, set by writer
79
- # writerShowTags: include tags in XML output for empty elements
80
- # writerMissingIdCount: counter for creating unique elements IDs for ISO elements that did not
81
- # provide IDs in the input metadata file
56
+ # - set from the parameter list (reader)
57
+ # ------------------------------------------------------------------------------------
58
+ # readerValidationPass: false if fails requested level of validation
59
+ # - set by the reader
60
+ # ------------------------------------------------------------------------------------
61
+ # readerValidationMessages: an array of schema warning and error messages
62
+ # - set by the reader
63
+ # ------------------------------------------------------------------------------------
64
+ # readerExecutionPass: false if the reader finds fatal errors in input file
65
+ # - set by the reader
66
+ # ------------------------------------------------------------------------------------
67
+ # readerExecutionMessages: an array of reader warning and error messages
68
+ # - set by the reader
69
+ # ------------------------------------------------------------------------------------
70
+ # writerRequested: name of the writer requested by the user
71
+ # - set from the parameter list (writer)
72
+ # ------------------------------------------------------------------------------------
73
+ # writerVersion: current version of the requested writer
74
+ # - set by the writer
75
+ # ------------------------------------------------------------------------------------
76
+ # writerFormat: format of writer output
77
+ # - set by the writer
78
+ # ------------------------------------------------------------------------------------
79
+ # writerPass: false if the writer fails to complete creation of output file
80
+ # - set by the writer
81
+ # ------------------------------------------------------------------------------------
82
+ # writerMessages: an array of writer warning and error messages
83
+ # - set by the writer
84
+ # ------------------------------------------------------------------------------------
85
+ # writerOutput: the output file returned by the writer
86
+ # - set by the writer
87
+ # ------------------------------------------------------------------------------------
88
+ # writerShowTags: include tags in XML output for any empty elements
89
+ # - set from the parameter list (showAllTags)
90
+ # ------------------------------------------------------------------------------------
91
+ # writerCSSlink: CSS link to append to HTML writer output
92
+ # - set from the parameter list (showAllTags)
93
+ # ------------------------------------------------------------------------------------
94
+ # writerMissingIdCount: counter for creating unique element IDs as needed
95
+ # - set by the writer
96
+ # ------------------------------------------------------------------------------------
82
97
  # translatorVersion: current version of the mdTranslator
98
+ # - set by the translator
99
+ # ------------------------------------------------------------------------------------
83
100
 
84
- responseObj = {
85
- readerFormat: nil,
86
- readerStructurePass: nil,
87
- readerStructureMessages: [],
101
+ hResponseObj = {
88
102
  readerRequested: nil,
89
103
  readerVersionRequested: nil,
90
104
  readerVersionUsed: nil,
105
+ readerStructurePass: true,
106
+ readerStructureMessages: [],
91
107
  readerValidationLevel: nil,
92
- readerValidationPass: nil,
108
+ readerValidationPass: true,
93
109
  readerValidationMessages: [],
94
- readerExecutionPass: nil,
110
+ readerExecutionPass: true,
95
111
  readerExecutionMessages: [],
96
- writerName: nil,
97
- writerVersion: nil,
98
- writerFormat: nil,
99
- writerPass: nil,
112
+ writerRequested: nil,
113
+ writerPass: true,
100
114
  writerMessages: [],
115
+ writerOutputFormat: nil,
101
116
  writerOutput: nil,
102
117
  writerShowTags: false,
118
+ writerCSSlink: nil,
103
119
  writerMissingIdCount: '_000',
104
120
  translatorVersion: nil
105
121
  }
106
122
 
107
- paramsObj = {
108
- cssLink: cssLink,
109
- css: css
110
- }
123
+ # parameter - file (required)
124
+ if file.nil? || file == ''
125
+ hResponseObj[:readerExecutionPass] = false
126
+ hResponseObj[:readerExecutionMessages] << "Parameter 'file:' was not provided"
127
+ return hResponseObj
128
+ end
111
129
 
112
- # add the passed in parameters to the response hash
113
- responseObj[:readerRequested] = reader
114
- responseObj[:readerValidationLevel] = validate
115
- responseObj[:writerName] = writer
116
- responseObj[:writerShowTags] = showAllTags
130
+ # parameter - reader (required)
131
+ if reader == ''
132
+ hResponseObj[:readerExecutionPass] = false
133
+ hResponseObj[:readerExecutionMessages] << "Parameter 'reader:' was not provided"
134
+ return hResponseObj
135
+ end
136
+
137
+ # add passed in parameters to the response hash
138
+ hResponseObj[:readerRequested] = reader
139
+ hResponseObj[:readerValidationLevel] = validate
140
+ hResponseObj[:writerRequested] = writer
141
+ hResponseObj[:writerShowTags] = showAllTags
142
+ hResponseObj[:writerCSSlink] = cssLink
117
143
 
118
144
  # add mdTranslator version to response hash
119
- responseObj[:translatorVersion] = ADIWG::Mdtranslator::VERSION
120
-
121
- # handle readers
122
- if reader.nil? || reader == ''
123
- responseObj[:readerExecutionPass] = false
124
- responseObj[:readerExecutionMessages] << 'Reader name was not provided'
125
- return responseObj
126
-
127
- else
128
- intObj = ADIWG::Mdtranslator::Readers.handleReader(file, responseObj)
129
-
130
- # if readerValidation failed - exit
131
- if !responseObj[:readerValidationPass]
132
- return responseObj
133
- end
134
-
135
- # if readerExecutionPass is nil no error messages were set while
136
- # reading the input file into the internal object.
137
- # the read operation is assumed to have been successful and pass is set to true.
138
- if responseObj[:readerExecutionPass].nil?
139
- responseObj[:readerExecutionPass] = true
140
- elsif !responseObj[:readerExecutionPass]
141
- return responseObj
142
- end
145
+ hResponseObj[:translatorVersion] = ADIWG::Mdtranslator::VERSION
146
+
147
+ # handle reader
148
+ intObj = ADIWG::Mdtranslator::Readers.handleReader(file, hResponseObj)
149
+
150
+ # if reader file structure failed - exit
151
+ if hResponseObj[:readerStructurePass] === false
152
+ return hResponseObj
153
+ end
154
+
155
+ # if reader file validation failed - exit
156
+ if hResponseObj[:readerValidationPass] === false
157
+ return hResponseObj
158
+ end
159
+
160
+ # if reader file execution failed - exit
161
+ if hResponseObj[:readerExecutionPass] === false
162
+ return hResponseObj
143
163
  end
144
164
 
145
- # handle writers
165
+ #handle writers
146
166
  if writer.nil? || writer == ''
147
- responseObj[:writerMessages] << 'Writer name was not provided.'
148
- else
149
- require File.join(File.dirname(__FILE__), 'mdtranslator/writers/mdWriters')
150
- ADIWG::Mdtranslator::Writers.handleWriter(intObj, responseObj, paramsObj)
167
+ hResponseObj[:writerMessages] << "Parameter 'writer:' was not provided"
168
+ hResponseObj[:writerPass] = false
169
+ return hResponseObj
151
170
  end
152
171
 
153
- return responseObj
172
+ require File.join(File.dirname(__FILE__), 'mdtranslator/writers/mdWriters')
173
+ ADIWG::Mdtranslator::Writers.handleWriter(intObj, hResponseObj)
174
+
175
+ return hResponseObj
154
176
 
155
177
  end
156
178
 
@@ -0,0 +1,191 @@
1
+ #!/usr/bin/env ruby
2
+ # ADIwg mdTranslator - Thor CLI for mdtranslator
3
+
4
+ # History:
5
+ # Stan Smith 2017-04-21 removed inline CSS option
6
+ # Stan Smith 2015-07-17 added method_options to provide custom CSS
7
+ # Stan Smith 2014-01-16 changed ADIWG::Mdtranslator.translate() to keyword parameter list
8
+ # Stan Smith 2014-12-29 changed default reader from adiwgJson to mdJson
9
+ # Stan Smith 2014-10-09 added version command to the CLI
10
+ # Stan Smith 2014-09-21 coded cli to 0.8.0 api
11
+ # Stan Smith 2014-09-02 changed name to mdtranslator
12
+ # Stan Smith 2014-07-15 original script
13
+
14
+ require 'thor'
15
+
16
+ class MdtranslatorCLI < Thor
17
+
18
+ # exit_on_failure added to exit with code 1 if thor cannot complete task
19
+ # such as if required parameters are missing
20
+ def self.exit_on_failure?
21
+ true
22
+ end
23
+
24
+ # basic cli description
25
+ desc 'translate [FILE]', %q{Pass JSON string or filename plus parameters to mdtranslator translate}
26
+ long_desc <<-LONGDESC
27
+ 'mdtranslator translate' provides command line access to the ADIwg metadata translator, mdTranslator. The 'translate'
28
+ method converts input metadata to supported established metadata metadata formats. The CLI accepts an input metadata
29
+ file with options to select the input reader format, writer output format, display empty tags in XML outputs, and choose
30
+ level of validation for mdJson input files.
31
+ LONGDESC
32
+ # define cli options
33
+ method_option :reader, :aliases => '-r', :desc => 'Reader to read your input metadata file', :enum => %w{mdJson sbJson}, :required => true
34
+ method_option :writer, :aliases => '-w', :desc => 'Writer to create your output metadata file, leave blank to validate input only', :enum => %w{iso19115_2 iso19110 html mdJson sbJson}
35
+ method_option :validate, :aliases => '-v', :desc => 'Specify level of validation to be performed', :enum => %w{none normal strict}, :default => 'normal'
36
+ method_option :showAllTags, :aliases => '-s', :desc => 'Include tags for unused attributes', :type => :boolean, :default => false
37
+ method_option :messages, :aliases => '-m', :desc => 'On error return messages as formatted text or json object', :enum => %w{json text}, :default => 'text'
38
+ method_option :returnObject, :aliases => '-o', :desc => 'Return full JSON object generated by translator', :type => :boolean, :default => false
39
+ method_option :cssLink, :desc => 'Fully qualified link to a CSS file to customize HTML writer output', :type => :string
40
+
41
+ # accept command and options
42
+ def translate(file)
43
+
44
+ # test to see if file parameter is a local file name
45
+ # if not ... assumed it is a JSON string
46
+ # note: this will need to be modified if/when a reader is added that is not in JSON format
47
+ if File.exist?(file)
48
+ # read file
49
+ my_file = File.open(file, 'r')
50
+ fileObj = my_file.read
51
+ my_file.close
52
+ else
53
+ fileObj = file
54
+ end
55
+
56
+ # for testing parameters
57
+ # puts 'reader: ' + options[:reader]
58
+ # puts 'writer: ' + options[:writer]
59
+ # puts 'validation level: ' + options[:validate]
60
+ # puts 'showAllTags: ' + options[:showAllTags].to_s
61
+ # puts 'message format: ' + options[:messages]
62
+ # puts 'return object: ' + options[:returnObject].to_s
63
+ # puts 'css link: ' + options[:cssLink]
64
+
65
+ # call mdtranslator
66
+ mdReturn = ADIWG::Mdtranslator.translate(
67
+ file: fileObj,
68
+ reader: options[:reader],
69
+ writer: options[:writer],
70
+ validate: options[:validate],
71
+ showAllTags: options[:showAllTags],
72
+ cssLink: options[:cssLink])
73
+
74
+ # determine return content and type of return ...
75
+ if mdReturn[:readerStructurePass] && mdReturn[:readerValidationPass]
76
+
77
+ # no problem was found with the input file
78
+ if options[:writer].nil?
79
+ # if no writer was specified the input was being validated only,
80
+ # ...no writer output will have been generated,
81
+ # ...and the return will be a string unless json was requested
82
+ if options[:messages] == 'json'
83
+ $stdout.write mdReturn.to_json
84
+ return
85
+ else
86
+ $stdout.write 'Success'
87
+ return
88
+ end
89
+ else
90
+ # a writer was specified,
91
+ # output is expected from the translator's writer
92
+ if mdReturn[:writerPass]
93
+ # writer output was generated
94
+ # ...return the writer output in its native format unless json was requested
95
+ if options[:returnObject]
96
+ $stdout.write mdReturn.to_json
97
+ return
98
+ else
99
+ $stdout.write mdReturn[:writerOutput].to_s
100
+ return
101
+ end
102
+ else
103
+ # the writer failed or generated warnings to be reported
104
+ # ...return the messages as a string unless json was requested
105
+ if options[:messages] == 'json'
106
+ $stdout.write mdReturn.to_json
107
+ return
108
+ else
109
+ # build a string with messages issues from parser and validator
110
+ s = ''
111
+ s += "Failed\n"
112
+ s += "Writer failed to generate output or issued significant warnings\n"
113
+ s += "See following messages for further information\n"
114
+
115
+ # post structure messages
116
+ i = 0
117
+ mdReturn[:writerMessages].each do |message|
118
+ i += 1
119
+ s += "\nMessage: #{i}\n"
120
+ s += message + "\n"
121
+ end
122
+
123
+ $stdout.write s
124
+ return
125
+
126
+ end
127
+ end
128
+ end
129
+
130
+ else
131
+
132
+ # problems were found with the input file
133
+
134
+ # if no writer was specified the input was being validated only,
135
+ # ...no writer output will have been generated,
136
+ # ...and return is always expected to be a string
137
+ if options[:messages] == 'json'
138
+ $stdout.write mdReturn.to_json
139
+ return
140
+ else
141
+ # build a string with messages issues from parser and validator
142
+ s = ''
143
+ s += "Failed\n"
144
+ s += "Input failed to pass either file structure validation or content does not match schema\n"
145
+ s += "See following messages for further information\n"
146
+
147
+ # post structure messages
148
+ if mdReturn[:readerStructurePass]
149
+ s += "Success - Input structure is valid\n"
150
+ else
151
+ s += "Fail - Structure of input file is invalid - see following message(s):\n"
152
+ i = 0
153
+ mdReturn[:readerStructureMessages].each do |message|
154
+ i += 1
155
+ s += "\nMessage: #{i}\n"
156
+ s += message.to_s + "\n"
157
+ end
158
+ end
159
+
160
+ # post validator messages
161
+ unless mdReturn[:readerValidationPass].nil?
162
+ if mdReturn[:readerValidationPass]
163
+ s += "Success - Input content passes schema definition\n"
164
+ else
165
+ s += "Fail - Input content did not pass schema validation - see following message(s):\n"
166
+ i = 0
167
+ mdReturn[:readerValidationMessages].each do |message|
168
+ i += 1
169
+ s += "\nMessage: #{i}\n"
170
+ s += message.to_s + "\n"
171
+ end
172
+ end
173
+ end
174
+
175
+ $stdout.write s
176
+ return
177
+
178
+ end
179
+ end
180
+
181
+ end
182
+
183
+ desc 'version', %q{Returns the version of mdTranslator}
184
+ long_desc <<-LONGDESC
185
+ 'mdtranslator version' returns the version number for mdTranslator
186
+ LONGDESC
187
+
188
+ def version
189
+ $stdout.write ADIWG::Mdtranslator::VERSION
190
+ end
191
+ end