|
@@ -12,9 +12,10 @@ from pelican import settings
|
|
|
|
|
|
knitr = None
|
|
knitr = None
|
|
rmd = False
|
|
rmd = False
|
|
|
|
+fig_path = None
|
|
|
|
|
|
def initsignal(pelicanobj):
|
|
def initsignal(pelicanobj):
|
|
- global knitr, rmd, robjects
|
|
|
|
|
|
+ global knitr, rmd, fig_path, robjects
|
|
try:
|
|
try:
|
|
with warnings.catch_warnings():
|
|
with warnings.catch_warnings():
|
|
warnings.simplefilter("ignore")
|
|
warnings.simplefilter("ignore")
|
|
@@ -31,6 +32,7 @@ def initsignal(pelicanobj):
|
|
idx = knitr.opts_chunk.names.index('set')
|
|
idx = knitr.opts_chunk.names.index('set')
|
|
knitroptschunk = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_CHUNK', None)
|
|
knitroptschunk = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_CHUNK', None)
|
|
if knitroptschunk:
|
|
if knitroptschunk:
|
|
|
|
+ fig_path = knitroptschunk['fig.path'] if knitroptschunk.has_key('fig.path') else 'figure/'
|
|
knitr.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
|
|
knitr.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
|
|
rmd = True
|
|
rmd = True
|
|
except ImportError as ex:
|
|
except ImportError as ex:
|
|
@@ -50,7 +52,15 @@ class RmdReader(readers.BaseReader):
|
|
QUIET = self.settings.get('RMD_READER_KNITR_QUIET', True)
|
|
QUIET = self.settings.get('RMD_READER_KNITR_QUIET', True)
|
|
ENCODING = self.settings.get('RMD_READER_KNITR_ENCODING', 'UTF-8')
|
|
ENCODING = self.settings.get('RMD_READER_KNITR_ENCODING', 'UTF-8')
|
|
CLEANUP = self.settings.get('RMD_READER_CLEANUP', True)
|
|
CLEANUP = self.settings.get('RMD_READER_CLEANUP', True)
|
|
- RENAME_PLOT = self.settings.get('RMD_READER_RENAME_PLOT', True)
|
|
|
|
|
|
+ RENAME_PLOT = self.settings.get('RMD_READER_RENAME_PLOT', 'chunklabel')
|
|
|
|
+ if type(RENAME_PLOT) is bool:
|
|
|
|
+ logger.error("RMD_READER_RENAME_PLOT takes a string value (either chunklabel or directory), please see the readme.")
|
|
|
|
+ if RENAME_PLOT:
|
|
|
|
+ RENAME_PLOT = 'chunklabel'
|
|
|
|
+ logger.error("Defaulting to chunklabel")
|
|
|
|
+ else:
|
|
|
|
+ RENAME_PLOT = 'disabled'
|
|
|
|
+ logger.error("Disabling plot renaming")
|
|
logger.debug("RMD_READER_KNITR_QUIET = %s", QUIET)
|
|
logger.debug("RMD_READER_KNITR_QUIET = %s", QUIET)
|
|
logger.debug("RMD_READER_KNITR_ENCODING = %s", ENCODING)
|
|
logger.debug("RMD_READER_KNITR_ENCODING = %s", ENCODING)
|
|
logger.debug("RMD_READER_CLEANUP = %s", CLEANUP)
|
|
logger.debug("RMD_READER_CLEANUP = %s", CLEANUP)
|
|
@@ -59,9 +69,18 @@ class RmdReader(readers.BaseReader):
|
|
filename = filename.replace('\\', '\\\\')
|
|
filename = filename.replace('\\', '\\\\')
|
|
# parse Rmd file - generate md file
|
|
# parse Rmd file - generate md file
|
|
md_filename = filename.replace('.Rmd', '.aux').replace('.rmd', '.aux')
|
|
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: %s', chunk_label)
|
|
|
|
|
|
+ if RENAME_PLOT == 'chunklabel' or RENAME_PLOT == 'directory':
|
|
|
|
+ if RENAME_PLOT == 'chunklabel':
|
|
|
|
+ chunk_label = os.path.splitext(os.path.basename(filename))[0]
|
|
|
|
+ logger.debug('Chunk label: %s', chunk_label)
|
|
|
|
+ elif RENAME_PLOT == 'directory':
|
|
|
|
+ chunk_label = 'unnamed-chunk'
|
|
|
|
+ PATH = self.settings.get('PATH','%s/content' % settings.DEFAULT_CONFIG.get('PATH'))
|
|
|
|
+ src_name = os.path.splitext(os.path.relpath(filename, PATH))[0]
|
|
|
|
+ idx = knitr.opts_chunk.names.index('set')
|
|
|
|
+ knitroptschunk = { 'fig.path': '%s-' % os.path.join(fig_path, src_name) }
|
|
|
|
+ knitr.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
|
|
|
|
+ logger.debug('Figures path: %s, chunk label: %s', knitroptschunk['fig.path'], chunk_label)
|
|
robjects.r('''
|
|
robjects.r('''
|
|
opts_knit$set(unnamed.chunk.label="{unnamed_chunk_label}")
|
|
opts_knit$set(unnamed.chunk.label="{unnamed_chunk_label}")
|
|
render_markdown()
|
|
render_markdown()
|