2012-12-10 6 views
11

Sto provando a scrivere un convertitore di Jekyll per i file R Markdown. Ho creato RMarkdownConverter.rb e l'ho inserito nella mia directory _plugins. Ho verificato che altri plugin funzionano ma questo non lo è. Inoltre, non vedo alcun messaggio di errore, compresi quelli che ho inserito. Sembra che non venga usato. Tuttavia, Jekyll sta generando un file HTML per il mio file .Rmd ma semplicemente elabora il chuck R come chuck del codice. Qualsiasi aiuto o pensiero sarebbe molto apprezzato.Jekyll Converter for R Markdown

RMarkdownConverter.rb di file:

module Jekyll 
    class RMarkdownConverter < Converter 
     safe true 
     priority :low 

    def setup 
     STDERR.puts "Setting up R Markdown..." 
     return if @setup 
     require 'rinruby' 
     @setup = true 
    rescue 
     STDERR.puts 'do `gem install rinruby`' 
     raise FatalException.new("Missing dependency: rinruby") 
    end 

     def matches(ext) 
      ext =~ /Rmd/i 
     end 

     def output_ext(ext) 
      '.html' 
     end 

     def convert(content) 
     setup 
     STDERR.puts "Using R Markdown..." 
     R.eval "require(knitr)" 
     R.eval "render_markdown(strict=TRUE)" 
     R.assign "content", content 
     STDERR.puts content 
     R.eval "out <- knit(text=content)" 
     R.eval "print(out)" 
     end 
    end 
end 

il contenuto del mio primo post R Markdown:

--- 
layout: post 
title: Using (R) Markdown, Jekyll, and Github for Blogging 
published: true 
tags: R R-Bloggers Jekyll github 
type: post 
status: publish 
--- 

First, we need to install [RinRuby](https://sites.google.com/a/ddahl.org/rinruby-users/) to call R from Ruby. In the terminal, execute: 

    gem install rinruby 

First R chuck: 

```{r} 
2 + 2 
``` 

risposta

4

provare a sostituire il ultime righe con la seguente

R.assign "content", content 
R.eval "knitr::render_markdown(strict = TRUE)" 
R.pull "(knitr::knit2html(text = content, fragment.only = TRUE))" 

Penso che è necessario R.pull per copiare il contenuto dell'output R in Ruby. Inoltre, consiglierei di convertire direttamente da Rmd in html. Ho usato con successo questa strategia lavorando con Ruhoh che è un'altra piattaforma di blogging basata su rubini.

AGGIORNAMENTO. È molto strano ma usare l'estensione rmd sembra essere in conflitto con md. L'ho cambiato in modo casuale a ram e jekyll sembra raccoglierlo correttamente. Non sono sicuro del perché.

+0

Sembra inoltre che aggiungendo 'markdown_ext: markdown' a' _config.yml' Jekyll eseguirà i file 'rmd'. Tuttavia, significa anche che i file 'md' non verranno elaborati. Non è un grosso problema per me dato che uso le estensioni di file '.markdown'. – jbryer

+0

Ci dovrebbe essere un modo per farlo senza richiamare "rinruby', che è noto per essere lento. Sto esplorando come utilizzare un comando shell direttamente per elaborare i file Rmd, tuttavia i backtick usati da knitr fanno scattare l'esecuzione della shell. – Ramnath