lib/adiwg/mdtranslator/readers/mdReaders.rb in adiwg-mdtranslator-1.2.1 vs lib/adiwg/mdtranslator/readers/mdReaders.rb in adiwg-mdtranslator-1.3.0

- old
+ new

@@ -2,52 +2,55 @@ # History: # Stan Smith 2014-12-11 original script # Stan Smith 2012-12-16 generalized handleReader to use :readerRequested # Stan Smith 2015-03-04 changed method of setting $WriterNS +# Stan Smith 2015-06-22 replace global ($response) with passed in object (responseObj) +# Stan Smith 2015-07-14 refactored to remove global namespace constants module ADIWG module Mdtranslator module Readers - def self.handleReader(file) + def self.handleReader(file, responseObj) - # use reader name to load and initiate reader - # build directory path name for reader - readerDir = File.join(path_to_resources, $response[:readerRequested]) + # use readerRequested from responseObj to build directory path to reader + # the readers's high level folder must be under the 'writers' directory + readerDir = File.join(path_to_readers, responseObj[:readerRequested]) if File.directory?(readerDir) # if directory path exists, build reader file name and require it - readerFile = File.join(readerDir, $response[:readerRequested] + '_reader') + readerFile = File.join(readerDir, responseObj[:readerRequested] + '_reader') require readerFile - readerClassName = $response[:readerRequested].dup - readerClassName[0] = readerClassName[0].upcase - $ReaderNS = ADIWG::Mdtranslator::Readers.const_get(readerClassName) + # build the namespace for the reader + readerNS = responseObj[:readerRequested].dup + readerNS[0] = readerNS[0].upcase - # pass file to requested reader and return internal object - # $ReaderNS is the reader namespace constant set in - # ... readerRequested_reader.rb and initialized when the file is required - return $ReaderNS.readFile(file) + # pass file and response object to requested reader + # the reader will return the internal object with the metadata content loaded + return ADIWG::Mdtranslator::Readers.const_get(readerNS).readFile(file, responseObj) + else - # directory path was not found - $response[:readerValidationPass] = false - $response[:readerValidationMessages] << "Validation Failed - see following message(s):\n" - $response[:readerValidationMessages] << "Reader '#{$response[:readerRequested]}' is not supported." + # the directory path was not found meaning there is no reader with that name + # set the appropriate messages and report the failure + responseObj[:readerValidationPass] = false + responseObj[:readerValidationMessages] << "Validation Failed - see following message(s):\n" + responseObj[:readerValidationMessages] << "Reader '#{responseObj[:readerRequested]}' is not supported." return false end end # return path to readers - def self.path_to_resources + def self.path_to_readers File.dirname(File.expand_path(__FILE__)) end # return reader readme text def self.get_reader_readme(reader) readmeText = 'No readme found' - path = File.join(path_to_resources, reader, 'readme.md') + path = File.join(path_to_readers, reader, 'readme.md') if File.exist?(path) file = File.open(path, 'r') readmeText = file.read file.close end