adiwg-mdtranslator 2.9.2 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,27 +1,28 @@
1
1
  # MdTranslator - ADIwg MdTranslator entry point
2
2
 
3
3
  # History:
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
21
- # Stan Smith 2014-07-23 moved all validations to readers/adiwg/adiwg_validator.rb
22
- # ... each reader will have it's own validator
23
- # Stan Smith 2014-07-21 added validation of json structure
24
- # Stan Smith 2014-07-21 added ADIWG namespace
4
+ # Stan Smith 2018-02-26 add 'forceValid' parameter
5
+ # Stan Smith 2016-11-11 refactor for mdTranslator 2.0
6
+ # Stan Smith 2015-07-17 added support for user supplied CSS for html writer
7
+ # Stan Smith 2015-07-16 moved module_coordinates from mdJson reader to internal
8
+ # Stan Smith 2015-07-14 renamed readerVersionFound to readerVersionRequested
9
+ # Stan Smith 2015-07-14 deleted readerFound
10
+ # Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
11
+ # ... created as an instance of class ResponseHash
12
+ # Stan Smith 2015-03-04 moved addFinalMessages into this module from rails app
13
+ # Stan Smith 2015-01-15 changed translate() to keyword parameter list
14
+ # Stan Smith 2014-12-11 refactored to handle namespacing readers and writers
15
+ # Stan Smith 2014-12-02 organized shared class/code/units folders for 19115-2, 19110
16
+ # Stan Smith 2014-12-01 added translator version to $response
17
+ # Stan Smith 2014-12-01 added writer iso19110 (feature catalogue)
18
+ # Stan Smith 2014-12-01 changed adiwgJson to mdJson
19
+ # Stan Smith 2014-10-11 added methods to return content of readme files
20
+ # Stan Smith 2014-10-10 added method to return path to readers and writers
21
+ # Stan Smith 2014-09-26 added processing of minor release numbers
22
+ # Stan Smith 2014-07-23 moved all validations to readers/adiwg/adiwg_validator.rb
23
+ # ... each reader will have it's own validator
24
+ # Stan Smith 2014-07-21 added validation of json structure
25
+ # Stan Smith 2014-07-21 added ADIWG namespace
25
26
  # Stan Smith 2014-07-02 original script
26
27
 
27
28
  # required by readers and writers
@@ -30,153 +31,164 @@ require 'adiwg/mdtranslator/readers/mdReaders'
30
31
  require 'adiwg/mdtranslator/writers/mdWriters'
31
32
 
32
33
  module ADIWG
33
- module Mdtranslator
34
-
35
- def self.translate(file:, reader: 'mdJson', writer: nil, validate: 'normal', showAllTags: false, cssLink: nil)
36
-
37
- # the reader and writer specified in the translate module parameter string will load and
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
54
- # ------------------------------------------------------------------------------------
55
- # readerValidationLevel: validation level requested to be applied to the input file, set
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: version of the writer used within mdTranslator
74
- # - set by the writer
75
- # ------------------------------------------------------------------------------------
76
- # writerPass: false if the writer fails to complete creation of output file
77
- # - set by the writer
78
- # ------------------------------------------------------------------------------------
79
- # writerMessages: an array of writer warning and error messages
80
- # - set by the writer
81
- # ------------------------------------------------------------------------------------
82
- # writerOutputFormat: format of writer output
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
- # ------------------------------------------------------------------------------------
97
- # translatorVersion: current version of the mdTranslator
98
- # - set by the translator
99
- # ------------------------------------------------------------------------------------
100
-
101
- hResponseObj = {
102
- readerRequested: nil,
103
- readerVersionRequested: nil,
104
- readerVersionUsed: nil,
105
- readerStructurePass: true,
106
- readerStructureMessages: [],
107
- readerValidationLevel: nil,
108
- readerValidationPass: true,
109
- readerValidationMessages: [],
110
- readerExecutionPass: true,
111
- readerExecutionMessages: [],
112
- writerRequested: nil,
113
- writerVersion: nil,
114
- writerPass: true,
115
- writerMessages: [],
116
- writerOutputFormat: nil,
117
- writerOutput: nil,
118
- writerShowTags: false,
119
- writerCSSlink: nil,
120
- writerMissingIdCount: '_000',
121
- translatorVersion: nil
122
- }
123
-
124
- # parameter - file (required)
125
- if file.nil? || file == ''
126
- hResponseObj[:readerExecutionPass] = false
127
- hResponseObj[:readerExecutionMessages] << "Parameter 'file:' was not provided"
128
- return hResponseObj
129
- end
130
-
131
- # parameter - reader (required)
132
- if reader == ''
133
- hResponseObj[:readerExecutionPass] = false
134
- hResponseObj[:readerExecutionMessages] << "Parameter 'reader:' was not provided"
135
- return hResponseObj
136
- end
137
-
138
- # add passed in parameters to the response hash
139
- hResponseObj[:readerRequested] = reader
140
- hResponseObj[:readerValidationLevel] = validate
141
- hResponseObj[:writerRequested] = writer
142
- hResponseObj[:writerShowTags] = showAllTags
143
- hResponseObj[:writerCSSlink] = cssLink
144
-
145
- # add mdTranslator version to response hash
146
- hResponseObj[:translatorVersion] = ADIWG::Mdtranslator::VERSION
147
-
148
- # handle reader
149
- intObj = ADIWG::Mdtranslator::Readers.handleReader(file, hResponseObj)
150
-
151
- # if reader file structure failed - exit
152
- if hResponseObj[:readerStructurePass] === false
153
- return hResponseObj
154
- end
155
-
156
- # if reader file validation failed - exit
157
- if hResponseObj[:readerValidationPass] === false
158
- return hResponseObj
159
- end
160
-
161
- # if reader file execution failed - exit
162
- if hResponseObj[:readerExecutionPass] === false
163
- return hResponseObj
164
- end
165
-
166
- #handle writers
167
- if writer.nil? || writer == ''
168
- hResponseObj[:writerMessages] << "Parameter 'writer:' was not provided"
169
- hResponseObj[:writerMessages] << 'Will validate input only'
170
- return hResponseObj
171
- end
172
-
173
- require File.join(File.dirname(__FILE__), 'mdtranslator/writers/mdWriters')
174
- ADIWG::Mdtranslator::Writers.handleWriter(intObj, hResponseObj)
34
+ module Mdtranslator
35
+
36
+ def self.translate(file:, reader: 'mdJson', writer: nil, validate: 'normal', forceValid: true,
37
+ showAllTags: false, cssLink: nil)
38
+
39
+ # the reader and writer specified in the translate module parameter string will load and
40
+ # return this hash ...
41
+ # ====================================================================================
42
+ # readerRequested: name of the reader requested by the user
43
+ # - set from the parameter list (reader) (default = 'mdJson')
44
+ # ------------------------------------------------------------------------------------
45
+ # readerVersionRequested: version of the reader requested in input file
46
+ # - set in reader
47
+ # ------------------------------------------------------------------------------------
48
+ # readerVersionUsed: actual reader version use in processing the input file
49
+ # - set by the reader
50
+ # ------------------------------------------------------------------------------------
51
+ # readerStructurePass: false if input file structure is determined to be invalid
52
+ # - set by the reader
53
+ # ------------------------------------------------------------------------------------
54
+ # readerStructureMessages: an array of parser warning and error messages
55
+ # - set by the reader
56
+ # ------------------------------------------------------------------------------------
57
+ # readerValidationLevel: validation level requested to be applied to the input file, set
58
+ # - set from the parameter list (reader)
59
+ # ------------------------------------------------------------------------------------
60
+ # readerValidationPass: false if fails requested level of validation
61
+ # - set by the reader
62
+ # ------------------------------------------------------------------------------------
63
+ # readerValidationMessages: an array of schema warning and error messages
64
+ # - set by the reader
65
+ # ------------------------------------------------------------------------------------
66
+ # readerExecutionPass: false if the reader finds fatal errors in input file
67
+ # - set by the reader
68
+ # ------------------------------------------------------------------------------------
69
+ # readerExecutionMessages: an array of reader warning and error messages
70
+ # - set by the reader
71
+ # ------------------------------------------------------------------------------------
72
+ # writerRequested: name of the writer requested by the user
73
+ # - set from the parameter list (writer)
74
+ # ------------------------------------------------------------------------------------
75
+ # writerVersion: version of the writer used within mdTranslator
76
+ # - set by the writer
77
+ # ------------------------------------------------------------------------------------
78
+ # writerPass: false if the writer fails to complete creation of output file
79
+ # - set by the writer
80
+ # ------------------------------------------------------------------------------------
81
+ # writerMessages: an array of writer warning and error messages
82
+ # - set by the writer
83
+ # ------------------------------------------------------------------------------------
84
+ # writerOutputFormat: format of writer output
85
+ # - set by the writer
86
+ # ------------------------------------------------------------------------------------
87
+ # writerOutput: the output file returned by the writer
88
+ # - set by the writer
89
+ # ------------------------------------------------------------------------------------
90
+ # writerForceValid: when required elements are missing from input add placeholder
91
+ # - set from the parameter list (forceValid)
92
+ # ------------------------------------------------------------------------------------
93
+ # writerShowTags: include tags in XML output for any empty elements
94
+ # - set from the parameter list (showAllTags)
95
+ # ------------------------------------------------------------------------------------
96
+ # writerCSSlink: CSS link to append to HTML writer output
97
+ # - set from the parameter list (cssLink)
98
+ # ------------------------------------------------------------------------------------
99
+ # writerMissingIdCount: counter for creating unique element IDs as needed
100
+ # - set by the writer
101
+ # ------------------------------------------------------------------------------------
102
+ # translatorVersion: current version of the mdTranslator
103
+ # - set by the translator
104
+ # ------------------------------------------------------------------------------------
105
+
106
+ hResponseObj = {
107
+ readerRequested: nil,
108
+ readerVersionRequested: nil,
109
+ readerVersionUsed: nil,
110
+ readerStructurePass: true,
111
+ readerStructureMessages: [],
112
+ readerValidationLevel: nil,
113
+ readerValidationPass: true,
114
+ readerValidationMessages: [],
115
+ readerExecutionPass: true,
116
+ readerExecutionMessages: [],
117
+ writerRequested: nil,
118
+ writerVersion: nil,
119
+ writerPass: true,
120
+ writerMessages: [],
121
+ writerOutputFormat: nil,
122
+ writerOutput: nil,
123
+ writerForceValid: true,
124
+ writerShowTags: false,
125
+ writerCSSlink: nil,
126
+ writerMissingIdCount: '_000',
127
+ translatorVersion: nil
128
+ }
129
+
130
+ # parameter - file (required)
131
+ if file.nil? || file == ''
132
+ hResponseObj[:readerStructureMessages] << 'ERROR: Metadata input file was not provided'
133
+ hResponseObj[:readerStructurePass] = false
134
+ return hResponseObj
135
+ end
136
+
137
+ # parameter - reader (required)
138
+ if reader == ''
139
+ hResponseObj[:readerStructureMessages] << 'ERROR: Reader was not specified'
140
+ hResponseObj[:readerStructurePass] = false
141
+ return hResponseObj
142
+ end
143
+
144
+ # add passed in parameters to the response hash
145
+ hResponseObj[:readerRequested] = reader
146
+ hResponseObj[:readerValidationLevel] = validate
147
+ hResponseObj[:writerRequested] = writer
148
+ hResponseObj[:writerForceValid] = forceValid
149
+ hResponseObj[:writerShowTags] = showAllTags
150
+ hResponseObj[:writerCSSlink] = cssLink
151
+
152
+ # turn off showTags if forceValid is false
153
+ # ... by default showTags would add the missing required elements
154
+ unless forceValid
155
+ hResponseObj[:writerShowTags] = false
156
+ end
157
+
158
+ # add mdTranslator version to response hash
159
+ hResponseObj[:translatorVersion] = ADIWG::Mdtranslator::VERSION
160
+
161
+ # handle reader
162
+ intObj = ADIWG::Mdtranslator::Readers.handleReader(file, hResponseObj)
163
+
164
+ # if reader file structure failed - exit
165
+ if hResponseObj[:readerStructurePass] === false
166
+ return hResponseObj
167
+ end
168
+
169
+ # if reader file validation failed - exit
170
+ if hResponseObj[:readerValidationPass] === false
171
+ return hResponseObj
172
+ end
173
+
174
+ # if reader file execution failed - exit
175
+ if hResponseObj[:readerExecutionPass] === false
176
+ return hResponseObj
177
+ end
175
178
 
179
+ #handle writers
180
+ if writer.nil? || writer == ''
181
+ hResponseObj[:writerMessages] << 'WARNING: No writer was requested'
176
182
  return hResponseObj
183
+ end
184
+
185
+ require File.join(File.dirname(__FILE__), 'mdtranslator/writers/mdWriters')
186
+ ADIWG::Mdtranslator::Writers.handleWriter(intObj, hResponseObj)
187
+
188
+ return hResponseObj
177
189
 
178
- end
190
+ end
179
191
 
180
- end
192
+ end
181
193
 
182
194
  end
@@ -2,6 +2,7 @@
2
2
  # ADIwg mdTranslator - Thor CLI for mdtranslator
3
3
 
4
4
  # History:
5
+ # Stan Smith 2018-02-26 add 'forceValid' parameter
5
6
  # Stan Smith 2017-04-21 removed inline CSS option
6
7
  # Stan Smith 2015-07-17 added method_options to provide custom CSS
7
8
  # Stan Smith 2014-01-16 changed ADIWG::Mdtranslator.translate() to keyword parameter list
@@ -25,14 +26,16 @@ class MdtranslatorCLI < Thor
25
26
  desc 'translate [FILE]', %q{Pass JSON string or filename plus parameters to mdtranslator translate}
26
27
  long_desc <<-LONGDESC
27
28
  '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.
29
+ method converts input metadata to supported established metadata formats. The CLI accepts an input metadata
30
+ file with options to select the input reader format, writer output format, display empty tags in XML and FGDC outputs,
31
+ force output metadata to meet standard, add personalized CSS to headers to HTML output,
32
+ and to choose the level of validation for mdJson input files.
31
33
  LONGDESC
32
34
  # define cli options
33
35
  method_option :reader, :aliases => '-r', :desc => 'Reader to read your input metadata file', :enum => %w{mdJson sbJson}, :required => true
34
36
  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
37
  method_option :validate, :aliases => '-v', :desc => 'Specify level of validation to be performed', :enum => %w{none normal strict}, :default => 'normal'
38
+ method_option :forceValid, :aliases => '-f', :desc => 'Insert tags for required elements missing from input', :type => :boolean, :default => true
36
39
  method_option :showAllTags, :aliases => '-s', :desc => 'Include tags for unused attributes', :type => :boolean, :default => false
37
40
  method_option :messages, :aliases => '-m', :desc => 'On error return messages as formatted text or json object', :enum => %w{json text}, :default => 'text'
38
41
  method_option :returnObject, :aliases => '-o', :desc => 'Return full JSON object generated by translator', :type => :boolean, :default => false
@@ -61,6 +64,7 @@ level of validation for mdJson input files.
61
64
  # puts 'message format: ' + options[:messages]
62
65
  # puts 'return object: ' + options[:returnObject].to_s
63
66
  # puts 'css link: ' + options[:cssLink]
67
+ # puts 'forceValid: ' + options[:forceValid].to_s
64
68
 
65
69
  # call mdtranslator
66
70
  mdReturn = ADIWG::Mdtranslator.translate(
@@ -68,6 +72,7 @@ level of validation for mdJson input files.
68
72
  reader: options[:reader],
69
73
  writer: options[:writer],
70
74
  validate: options[:validate],
75
+ forceValid: options[:forceValid],
71
76
  showAllTags: options[:showAllTags],
72
77
  cssLink: options[:cssLink])
73
78
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adiwg-mdtranslator
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.2
4
+ version: 2.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-21 00:00:00.000000000 Z
12
+ date: 2018-03-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler