lib/adiwg/mdtranslator/readers/mdReaders.rb in adiwg-mdtranslator-1.4.0 vs lib/adiwg/mdtranslator/readers/mdReaders.rb in adiwg-mdtranslator-2.0.0rc2
- old
+ new
@@ -1,62 +1,68 @@
# MdTranslator - controller for evaluating and directing readers
# 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 2016-11-12 refactored for mdTranslator 2.0
# Stan Smith 2015-07-14 refactored to remove global namespace constants
+# Stan Smith 2015-06-22 replace global ($response) with passed in object (hResponseObj)
+# Stan Smith 2015-03-04 changed method of setting $WriterNS
+# Stan Smith 2012-12-16 generalized handleReader to use :readerRequested
+# Stan Smith 2014-12-11 original script
module ADIWG
module Mdtranslator
module Readers
- def self.handleReader(file, responseObj)
+ def self.handleReader(file, hResponseObj)
- # 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])
+ # use ':readerRequested' from hResponseObj to build directory path to reader
+ # reader's high level folder must be placed in 'lib/adiwg/mdtranslator/readers/'
+ # reader's code must must be in folder named '{reader}'
+ # '{reader}' must contain a module named '{reader}_reader.rb'
+ # '{reader}_reader.rb' must have a method named 'readFile()'
+ # 'readFile()' must pass two parameters (file, hResponseObj)
+ # all reader modules and classes must remain in their private namespace
+ # reader namespace is 'ADIWG::Mdtranslator::Readers::{reader}'
+
+ # reader high-level folder
+ thisDir = File.dirname(File.expand_path(__FILE__))
+ readerDir = File.join(thisDir, hResponseObj[:readerRequested])
if File.directory?(readerDir)
- # if directory path exists, build reader file name and require it
- readerFile = File.join(readerDir, responseObj[:readerRequested] + '_reader')
- require readerFile
+ # reader folder
+ readerModule = File.join(readerDir, hResponseObj[:readerRequested] + '_reader')
+ require readerModule
- # build the namespace for the reader
- readerNS = responseObj[:readerRequested].dup
+ # reader namespace
+ readerNS = hResponseObj[:readerRequested].dup
readerNS[0] = readerNS[0].upcase
- # 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)
+ # reader will return intObj and updated hResponseObj
+ return ADIWG::Mdtranslator::Readers.const_get(readerNS).readFile(file, hResponseObj)
else
- # 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
+ hResponseObj[:readerValidationMessages] << "Requested reader '#{hResponseObj[:readerRequested]}' cannot be found."
+ hResponseObj[:readerValidationPass] = false
+ return {}
end
end
- # return path to readers
- def self.path_to_readers
- File.dirname(File.expand_path(__FILE__))
- end
-
# return reader readme text
+ # this is called from the Rails API
def self.get_reader_readme(reader)
- readmeText = 'No readme found'
- path = File.join(path_to_readers, reader, 'readme.md')
+
+ thisDir = File.dirname(File.expand_path(__FILE__))
+ path = File.join(thisDir, reader, 'readme.md')
if File.exist?(path)
file = File.open(path, 'r')
readmeText = file.read
file.close
+ return readmeText
+ else
+ return 'Readme file not found'
end
- return readmeText
+
end
end
end
end