2012-12-10 14 views
11

Ich versuche, einen Jekyll-Konverter für R Markdown-Dateien zu schreiben. Ich habe RMarkdownConverter.rb erstellt und in meinem Verzeichnis _plugins platziert. Ich habe überprüft, dass andere Plugins funktionieren, aber dieses ist nicht. Ich sehe auch keine Fehlermeldungen, einschließlich der, die ich selbst eingegeben habe. Es scheint, dass dies nicht verwendet wird. Jekyll erzeugt jedoch eine HTML-Datei für meine .Rmd-Datei, verarbeitet aber einfach das R-Chuck als Code-Chuck. Jede Hilfe oder Gedanken würde sehr geschätzt werden. Jekyll Converter für R Markdown

RMarkdownConverter.rb Datei:

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 

Der Inhalt meiner ersten R Markdown Beitrag:

--- 
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 
``` 

Antwort

4

Versuchen Sie, die letzten Zeilen der folgenden

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

ersetzen Ich glaube, Sie brauchen R.pull, um den Inhalt von R-Ausgabe nach Ruby zu kopieren. Außerdem würde ich empfehlen, direkt von Rmd zu HTML zu konvertieren. Ich habe diese Strategie erfolgreich in der Arbeit mit Ruhoh verwendet, die eine andere Ruby-basierte Blogging-Plattform ist.

UPDATE. Es ist sehr merkwürdig, aber die Erweiterung rmd scheint mit md zu kollidieren. Ich änderte es zufällig zu ram und jekyll scheint es richtig aufzuheben. Ich bin mir nicht sicher warum.

+0

Es scheint auch, dass wenn Sie 'markdown_ext: markdown' zu' _config.yml' hinzufügen, wird Jekyll die 'rmd' Dateien verarbeiten. Es bedeutet aber auch, dass 'md' Dateien nicht verarbeitet werden. Keine große Sache für mich, da ich '.Markdown' Dateierweiterungen verwende. – jbryer

+0

Es sollte einen Weg geben, dies zu tun, ohne 'Rinruby' aufzurufen, von dem bekannt ist, dass es langsam ist. Ich untersuche, wie man einen Shell-Befehl direkt verwendet, um Rmd-Dateien zu verarbeiten, jedoch lösen die von Knitr verwendeten Backticks die Shell-Ausführung aus. – Ramnath