2012-12-10 16 views
11

Próbuję napisać konwerter Jekyll dla plików R Markdown. Stworzyłem RMarkdownConverter.rb i umieściłem go w moim katalogu _plugins. Sprawdziłem, że inne wtyczki działają, ale ten nie jest. Nie widzę też żadnych komunikatów o błędach, w tym tych, które sam wkładam. Wygląda na to, że to nie jest używane. Jednak Jekyll generuje plik HTML dla mojego pliku .Rmd, ale po prostu przetwarza uchwyt R jako uchwyt kodowy. Każda pomoc lub przemyślenia zostaną docenione.Konwerter Jekyll dla R Markdown

RMarkdownConverter.rb 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 

Zawartość mojej pierwszej R Markdown postu:

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

Odpowiedz

4

Spróbuj wymienić kilka ostatnich wierszy z następującym

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

myślę, że trzeba R.pull, aby skopiować zawartość wyjścia R do Rubiego. Co więcej, zaleciłbym bezpośrednią konwersję z Rmd do html. Użyłem tej strategii z powodzeniem w pracy z Ruhoh, która jest inną platformą blogową opartą na rubinach.

AKTUALIZACJA. To jest bardzo dziwne, ale użycie rozszerzenia rmd wydaje się być w konflikcie z md. Zmieniłem go losowo na ram, a jekyll wydaje się poprawnie podnosić. Nie jestem pewien, dlaczego.

+0

Wygląda również na to, że jeśli dodasz 'markdown_ext: markdown' do' _config.yml' Jekyll przetworzy pliki 'rmd'. Oznacza to jednak, że pliki 'md' nie będą przetwarzane. Dla mnie to nic wielkiego, ponieważ korzystam z rozszerzeń plików ".downdown". – jbryer

+0

Powinien być sposób na zrobienie tego bez wywoływania 'rinruby', która jest znana jako powolna. Zastanawiam się, jak użyć polecenia powłoki bezpośrednio do przetwarzania plików Rmd, jednak backticks używane przez knitr uruchamia wykonanie powłoki. – Ramnath

Powiązane problemy