module ADIWG::Mdtranslator

Constants

VERSION

current mdtranslator version

Public Class Methods

translate(file:, reader: 'mdJson', writer: nil, validate: 'normal', forceValid: true, showAllTags: false, cssLink: nil) click to toggle source
# File lib/adiwg/mdtranslator.rb, line 37
def self.translate(file:, reader: 'mdJson', writer: nil, validate: 'normal', forceValid: true,
   showAllTags: false, cssLink: nil)

   # the reader and writer specified in the translate module parameter string will load and
   #     return this hash ...
   # ====================================================================================
   # readerRequested: name of the reader requested by the user
   #   - set from the parameter list (reader) (default = 'mdJson')
   # ------------------------------------------------------------------------------------
   # readerVersionRequested: version of the reader requested in input file
   #   - set in reader
   # ------------------------------------------------------------------------------------
   # readerVersionUsed: actual reader version use in processing the input file
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerStructurePass: false if input file structure is determined to be invalid
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerStructureMessages: an array of parser warning and error messages
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerValidationLevel: validation level requested to be applied to the input file, set
   #   - set from the parameter list (reader)
   # ------------------------------------------------------------------------------------
   # readerValidationPass: false if fails requested level of validation
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerValidationMessages: an array of schema warning and error messages
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerExecutionPass: false if the reader finds fatal errors in input file
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # readerExecutionMessages: an array of reader warning and error messages
   #   - set by the reader
   # ------------------------------------------------------------------------------------
   # writerRequested: name of the writer requested by the user
   #   - set from the parameter list (writer)
   # ------------------------------------------------------------------------------------
   # writerVersion: version of the writer used within mdTranslator
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # writerPass: false if the writer fails to complete creation of output file
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # writerMessages: an array of writer warning and error messages
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # writerOutputFormat: format of writer output
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # writerOutput: the output file returned by the writer
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # writerForceValid: when required elements are missing from input add placeholder
   #   - set from the parameter list (forceValid)
   # ------------------------------------------------------------------------------------
   # writerShowTags: include tags in XML output for any empty elements
   #   - set from the parameter list (showAllTags)
   # ------------------------------------------------------------------------------------
   # writerCSSlink: CSS link to append to HTML writer output
   #   - set from the parameter list (cssLink)
   # ------------------------------------------------------------------------------------
   # writerMissingIdCount: counter for creating unique element IDs as needed
   #   - set by the writer
   # ------------------------------------------------------------------------------------
   # translatorVersion: current version of the mdTranslator
   #   - set by the translator
   # ------------------------------------------------------------------------------------

   hResponseObj = {
      readerRequested: nil,
      readerVersionRequested: nil,
      readerVersionUsed: nil,
      readerStructurePass: true,
      readerStructureMessages: [],
      readerValidationLevel: nil,
      readerValidationPass: true,
      readerValidationMessages: [],
      readerExecutionPass: true,
      readerExecutionMessages: [],
      writerRequested: nil,
      writerVersion: nil,
      writerPass: true,
      writerMessages: [],
      writerOutputFormat: nil,
      writerOutput: nil,
      writerForceValid: true,
      writerShowTags: false,
      writerCSSlink: nil,
      writerMissingIdCount: '_000',
      translatorVersion: nil
   }

   # parameter - file (required)
   if file.nil? || file == ''
      hResponseObj[:readerStructureMessages] << 'ERROR: Metadata input file was not provided'
      hResponseObj[:readerStructurePass] = false
      return hResponseObj
   end

   # parameter - reader (required)
   if reader == ''
      hResponseObj[:readerStructureMessages] << 'ERROR: Reader was not specified'
      hResponseObj[:readerStructurePass] = false
      return hResponseObj
   end

   # add passed in parameters to the response hash
   hResponseObj[:readerRequested] = reader
   hResponseObj[:readerValidationLevel] = validate
   hResponseObj[:writerRequested] = writer
   hResponseObj[:writerForceValid] = forceValid
   hResponseObj[:writerShowTags] = showAllTags
   hResponseObj[:writerCSSlink] = cssLink

   # turn off showTags if forceValid is false
   # ... by default showTags would add the missing required elements
   unless forceValid
      hResponseObj[:writerShowTags] = false
   end

   # add mdTranslator version to response hash
   hResponseObj[:translatorVersion] = ADIWG::Mdtranslator::VERSION

   # handle reader
   intObj = ADIWG::Mdtranslator::Readers.handleReader(file, hResponseObj)

   # if reader file structure failed - exit
   if hResponseObj[:readerStructurePass] === false
      return hResponseObj
   end

   # if reader file validation failed - exit
   if hResponseObj[:readerValidationPass] === false
      return hResponseObj
   end

   # if reader file execution failed - exit
   if hResponseObj[:readerExecutionPass] === false
      return hResponseObj
   end

   #handle writers
   if writer.nil? || writer == ''
      hResponseObj[:writerMessages] << 'WARNING: No writer was requested'
      return hResponseObj
   end

   require File.join(File.dirname(__FILE__), 'mdtranslator/writers/mdWriters')
   ADIWG::Mdtranslator::Writers.handleWriter(intObj, hResponseObj)

   return hResponseObj

end