Преглед изворни кода

New variable: RMD_READER_KNITR_OPTS_KNIT

Added new configuration variable RMD_READER_KNITR_OPTS_KNIT which sets
options into `knitr$opts_knit`.
wilsonfreitas пре 9 година
родитељ
комит
84af54b5d8
3 измењених фајлова са 47 додато и 6 уклоњено
  1. 1 0
      rmd_reader/Readme.md
  2. 7 4
      rmd_reader/rmd_reader.py
  3. 39 2
      rmd_reader/test_rmd_reader.py

+ 1 - 0
rmd_reader/Readme.md

@@ -48,6 +48,7 @@ This plugin calls R to process these files and generates markdown files that are
 - `RMD_READER_KNITR_QUIET` (`True`): sets `knitr`'s quiet argument.
 - `RMD_READER_KNITR_ENCODING` (`UTF-8`): sets `knitr`'s encoding argument.
 - `RMD_READER_KNITR_OPTS_CHUNK` (`None`): sets `knitr`'s `opts_chunk`.
+- `RMD_READER_KNITR_OPTS_KNIT` (`None`): sets `knitr`'s `opts_knit`.
 
 
 ### Plotting

+ 7 - 4
rmd_reader/rmd_reader.py

@@ -4,7 +4,7 @@ import os
 import warnings
 import logging
 
-logger = logging.getLogger(__name__)
+logger = logging.getLogger('RMD_READER')
 
 from pelican import readers
 from pelican import signals
@@ -25,9 +25,12 @@ def initsignal(pelicanobj):
         PATH = pelicanobj.settings.get('PATH','%s/content' % settings.DEFAULT_CONFIG.get('PATH'))
         logger.debug("RMD_READER PATH = %s", PATH)
         knitr.opts_knit[idx](**{'base.dir': PATH})
+        knitroptsknit = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_KNIT', None)
+        if knitroptsknit:
+            knitr.opts_knit[idx](**{str(k): v for k,v in knitroptsknit.items()})
         idx = knitr.opts_chunk.names.index('set')
         knitroptschunk = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_CHUNK', None)
-        if knitroptschunk is not None:     
+        if knitroptschunk:
             knitr.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
         rmd = True
     except ImportError as ex:
@@ -49,7 +52,7 @@ class RmdReader(readers.BaseReader):
         CLEANUP = self.settings.get('RMD_READER_CLEANUP', True)
         RENAME_PLOT = self.settings.get('RMD_READER_RENAME_PLOT', True)
         logger.debug("RMD_READER_KNITR_QUIET = %s", QUIET)
-        logger.debug("RMD_READER_KNITR_QUIET = %s", ENCODING)
+        logger.debug("RMD_READER_KNITR_ENCODING = %s", ENCODING)
         logger.debug("RMD_READER_CLEANUP = %s", CLEANUP)
         logger.debug("RMD_READER_RENAME_PLOT = %s", RENAME_PLOT)
         # replace single backslashes with double backslashes
@@ -58,7 +61,7 @@ class RmdReader(readers.BaseReader):
         md_filename = filename.replace('.Rmd', '.aux').replace('.rmd', '.aux')
         if RENAME_PLOT:
             chunk_label = os.path.splitext(os.path.basename(filename))[0]
-            logger.debug(chunk_label)
+            logger.debug('Chunk label: %s', chunk_label)
             robjects.r('''
 opts_knit$set(unnamed.chunk.label="{unnamed_chunk_label}")
 render_markdown()

+ 39 - 2
rmd_reader/test_rmd_reader.py

@@ -62,17 +62,20 @@ plot(cars)
 
 
     def tearDown(self):
+        logging.debug('CLEAN')
         if os.path.isdir(self.outputdir):
             shutil.rmtree(self.outputdir)
         if os.path.isdir(self.contentdir):
             shutil.rmtree(self.contentdir)
 
-
     def testKnitrSettings(self):
         settings = read_settings(path=None, override={
+            'LOAD_CONTENT_CACHE': False,
             'PATH': self.contentdir,
             'OUTPUT_PATH': self.outputdir,
             'RMD_READER_KNITR_OPTS_CHUNK': {'fig.path' : '%s/' % self.figpath},
+            'RMD_READER_KNITR_OPTS_KNIT': {'progress' : True, 'verbose': True},
+            'RMD_READER_RENAME_PLOT': False,
             'PLUGIN_PATHS': ['../'],
             'PLUGINS': ['rmd_reader'],
         })
@@ -82,13 +85,47 @@ plot(cars)
         outputfilename = os.path.join(self.outputdir,'%s.html' % self.testtitle)
         self.assertTrue(os.path.exists(outputfilename),'File %s was not created.' % outputfilename)
         
-        imagesdir = os.path.join(self.outputdir,self.figpath)
+        imagesdir = os.path.join(self.outputdir, self.figpath)
         self.assertTrue(os.path.exists(imagesdir), 'figpath not created.')
         
+        imagefile = os.path.join(imagesdir, 'unnamed-chunk') + '-1-1.png'
+        logging.debug(imagefile)
         images = glob.glob('%s/*' % imagesdir)
+        logging.debug(images)
+        self.assertTrue(os.path.exists(imagefile), 'image correctly named.')
+        
         self.assertTrue(len(images) == 1,'Contents of images dir is not correct: %s' % ','.join(images))
         
 
+    def testKnitrSettings2(self):
+        settings = read_settings(path=None, override={
+            'LOAD_CONTENT_CACHE': False,
+            'PATH': self.contentdir,
+            'OUTPUT_PATH': self.outputdir,
+            'RMD_READER_KNITR_OPTS_CHUNK': {'fig.path' : '%s/' % self.figpath},
+            'RMD_READER_KNITR_OPTS_KNIT': {'progress' : True, 'verbose': True},
+            'RMD_READER_RENAME_PLOT': True,
+            'PLUGIN_PATHS': ['../'],
+            'PLUGINS': ['rmd_reader'],
+        })
+        pelican = Pelican(settings=settings)
+        pelican.run()
+        
+        outputfilename = os.path.join(self.outputdir,'%s.html' % self.testtitle)
+        self.assertTrue(os.path.exists(outputfilename),'File %s was not created.' % outputfilename)
+        
+        imagesdir = os.path.join(self.outputdir, self.figpath)
+        self.assertTrue(os.path.exists(imagesdir), 'figpath not created.')
+        
+        imagefile = os.path.join(imagesdir, os.path.splitext(os.path.split(self.contentfile)[1])[0]) + '-1-1.png'
+        logging.debug(imagefile)
+        self.assertTrue(os.path.exists(imagefile), 'image correctly named.')
+        
+        images = glob.glob('%s/*' % imagesdir)
+        logging.debug(images)
+        self.assertTrue(len(images) == 1,'Contents of images dir is not correct: %s' % ','.join(images))
+
+
 
 if __name__ == "__main__":
     #import sys;sys.argv = ['', 'Test.testName']