fauno / jekyll-pandoc-multiple-formats

Use pandoc on jekyll to generate posts in multiple formats. Development has moved to https://0xacab.org/edsl/jekyll-pandoc-multiple-formats
https://endefensadelsl.org
Other
88 stars 28 forks source link

undefined method `matches` for #<Jekyll::Converters::Markdown:0x00000001d9e4e0> (NoMethodError) #3

Open lingnand opened 10 years ago

lingnand commented 10 years ago

I'm using a Octopress+Jekyll setup and placed pandoc.rb under <web-directory>/plugins; I've changed _config.yml as suggested in readme.md.

But as soon as I run jekyll build I get the following

Configuration from /home/lingnan/Dropbox/lynnard.github.com/_config.yml Building site: source -> build /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:62:in block in converter': undefined methodmatches' for #Jekyll::Converters::Markdown:0x00000001d9e4e0 (NoMethodError) from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:62:in each' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:62:infind' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:62:in converter' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:54:inoutput_ext' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/page.rb:145:in html?' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:300:inblock in site_payload' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:300:in reject' from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:300:insite_payload' from /home/lingnan/Dropbox/lynnard.github.com/plugins/pagination.rb:33:in paginate' from /home/lingnan/Dropbox/lynnard.github.com/plugins/pagination.rb:14:inblock in generate' from /home/lingnan/Dropbox/lynnard.github.com/plugins/pagination.rb:13:in `each'

fauno commented 10 years ago

hmmm have you tried with a newer jekyll? i don't remember which version we were using when we started but now we're on jekyll 1.0+

mauriciopasquier commented 10 years ago

It works with jekyll 1.0.0 here.. haven't tried with an older version.

lingnand commented 10 years ago

mhh I'm using it with Octopress and Octopress is using a jekyll of version 0.12 and that might be where the problem comes from. Tried to tell Octopress to use a higher version, but that would break the whole thing. Guess this plugin is not compatible with Octopress...

mauriciopasquier commented 10 years ago

It seems so... Octopress' tasks use jekyll's old switch style instead of subcommands. Maybe it's easy to patch it, maybe not.

Anyway, I think I can make this plugin backwards compatible..

mauriciopasquier commented 10 years ago

@lynnard please test again with branch 'fix-3' from this repo.

lingnand commented 10 years ago

Thanks for your effort! There're still some issues though.

## Generating Site with Jekyll
unchanged sass/screen.scss
Configuration from /home/lingnan/Dropbox/lynnard.github.com/_config.yml
Building site: source -> public
/home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:7:in `generate': undefined method `[]' for nil:NilClass (NoMethodError)
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:190:in `block in generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `each'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:40:in `process'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/bin/jekyll:264:in `<top (required)>'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `load'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `<main>'
mauriciopasquier commented 10 years ago

At least now it's in the Generator and not the Converter :P

Are you sure you have a pandoc key in _/home/lingnan/Dropbox/lynnard.github.com/_config.yml? Could you shows that file?

lingnand commented 10 years ago

Somehow I thought it would be a good idea to test without my config changed first, so all the previous error info is in fact produced by calling rake generate just after placing the pandoc.rb in my plugins directory.

After making the necessary changes to _config.yml there pops an entire different list of errors

Creating markdown/blog/2013/07/30
pandoc --smart --bibliography=ref.bib -t markdown -o markdown/blog/2013/07/30/the-very-first-blog-post/ 
Creating markdown/blog/2013/07/31
pandoc --smart --bibliography=ref.bib -t markdown -o markdown/blog/2013/07/31/ren-xing-zhi-shang/ 
Invalid Markdown processor: pandoc
  Valid options are [ maruku | rdiscount | kramdown ]
Liquid Exception: Invalid Markdown process: pandoc in atom.xml
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/converters/markdown.rb:87:in `setup'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/converters/markdown.rb:102:in `convert'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/filters.rb:25:in `markdownify'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/context.rb:58:in `invoke'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/variable.rb:43:in `block in render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/variable.rb:38:in `each'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/variable.rb:38:in `inject'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/variable.rb:38:in `render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/tags/for.rb:116:in `block (2 levels) in render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/tags/for.rb:104:in `each'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/tags/for.rb:104:in `each_with_index'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/tags/for.rb:104:in `block in render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/context.rb:91:in `stack'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/tags/for.rb:103:in `render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:94:in `block in render_all'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `collect'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:92:in `render_all'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/block.rb:82:in `render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/template.rb:124:in `render'
/home/lingnan/.gem/ruby/2.0.0/gems/liquid-2.3.0/lib/liquid/template.rb:132:in `render!'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/convertible.rb:79:in `do_layout'
/home/lingnan/Dropbox/lynnard.github.com/plugins/post_filters.rb:167:in `do_layout'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/page.rb:100:in `render'
/home/lingnan/Dropbox/lynnard.github.com/plugins/category_generator.rb:100:in `write_category_index'
/home/lingnan/Dropbox/lynnard.github.com/plugins/category_generator.rb:111:in `block in write_category_indexes'
/home/lingnan/Dropbox/lynnard.github.com/plugins/category_generator.rb:110:in `each'
/home/lingnan/Dropbox/lynnard.github.com/plugins/category_generator.rb:110:in `write_category_indexes'
/home/lingnan/Dropbox/lynnard.github.com/plugins/category_generator.rb:139:in `generate'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:190:in `block in generate'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `each'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `generate'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:40:in `process'
/home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/bin/jekyll:264:in `<top (required)>'
/home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `load'
/home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `<main>'
Build Failed

Here's the relevant parts from my _config.yml

# ----------------------- #
#    Jekyll & Plugins     #
# ----------------------- #

# If publishing to a subdirectory as in http://site.com/project set 'root: /project'
root: /
permalink: /blog/:year/:month/:day/:title/
source: source
destination: public
plugins: plugins
code_dir: downloads/code
category_dir: blog/categories
markdown: pandoc
#rdiscount:
  #extensions:
    #- autolink
    #- footnotes
    #- smart
pandoc: 
    skip: false
    flags: '--smart --bibliography=ref.bib'
    site_flags: '--toc'
    outputs:
        pdf: '--latex-engine=latex'
        epub:
        markdown:
pygments: false # default python pygments have been replaced by pygments.rb
pygments: false # default python pygments have been replaced by pygments.rb

paginate: 10          # Posts per page on the blog index
pagination_dir: blog  # Directory base for pagination URLs eg. /blog/page/2/
recent_posts: 5       # Posts in the sidebar Recent Posts section
excerpt_link: "Read on &rarr;"  # "Continue reading" link text at the bottom of excerpted articles

titlecase: true       # Converts page and post titles to titlecase

# list each of the sidebar modules you want to include, in the order you want them to appear.
# To add custom asides, create files in /source/_includes/custom/asides/ and add them to the list like 'custom/asides/custom_aside_name.html'
default_asides: [asides/recent_posts.html, asides/github.html, asides/delicious.html, asides/pinboard.html, asides/googleplus.html]

# Each layout uses the default asides, but they can have their own asides instead. Simply uncomment the lines below
# and add an array with the asides you want to use.
# blog_index_asides:
# post_asides:
# page_asides:
fauno commented 10 years ago

ehr... didn't meant to close the issue :|

mauriciopasquier commented 10 years ago

@lynnard sorry that it took so long. Could you try again with this file? I think I got the problem.

lingnand commented 10 years ago

Unfortunately I'm presented with this error

## Generating Site with Jekyll
unchanged sass/screen.scss
Configuration from /home/lingnan/Dropbox/lynnard.github.com/_config.yml
Building site: source -> public
Creating pdf/blog/2013/07/30
pandoc --smart --bibliography=ref.bib -o pdf/blog/2013/07/30/the-very-first-blog-post/ --latex-engine=latex
/home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:49:in `write': Broken pipe (Errno::EPIPE)
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:49:in `puts'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:49:in `block (3 levels) in generate'
        from /usr/lib/ruby/2.0.0/open3.rb:217:in `popen_run'
        from /usr/lib/ruby/2.0.0/open3.rb:99:in `popen3'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:48:in `block (2 levels) in generate'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:15:in `each'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:15:in `block in generate'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:10:in `each_pair'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:10:in `generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:190:in `block in generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `each'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:40:in `process'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/bin/jekyll:264:in `<top (required)>'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `load'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `<main>'

On 15/08, Mauricio Pasquier Juan wrote:

@lynnard sorry that it took so long. Could you try again with this file? I think I got the problem.


Reply to this email directly or view it on GitHub: https://github.com/fauno/jekyll-pandoc-multiple-formats/issues/3#issuecomment-22748229

Lingnan Dai

mauriciopasquier commented 10 years ago

I think it throws that error when it can't find a file. So that means your old jekyll did find the plugin this time :)

Do you have that ref.bib file that is configured here?

flags: '--smart --bibliography=ref.bib'

If not, remove the --bibliography option and try again, please. If that doesn't solve it, I've had some troubles with non-default (by jekyll standards) source, layouts and plugins locations. Maybe it's that.

fauno commented 10 years ago

pandoc --smart --bibliography=ref.bib -o pdf/blog/2013/07/30/the-very-first-blog-post/ --latex-engine=latex

the -o flag requires a file with the correct extension, it's being passed a directory. i think the problem is with permalinks now.

fauno commented 10 years ago

@lynnard could you try the hotfix/issue-3 branch?

lingnand commented 10 years ago

Mmh...Now is this

$ rake generate
 ## Generating Site with Jekyll
unchanged sass/screen.scss
Configuration from /home/lingnan/Dropbox/lynnard.github.com/_config.yml
Building site: source -> public
Creating /home/lingnan/Dropbox/lynnard.github.com/source/pdf/blog/2013/07/30
pandoc --smart --bibliography=ref.bib -o /home/lingnan/Dropbox/lynnard.github.com/source/pdf/blog/2013/07/30/-blog-2013-07-30-the-very-first-blog-post.pdf --latex-engine=latex
/home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:56:in `write': Broken pipe (Errno::EPIPE)
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:56:in `puts'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:56:in `block (3 levels) in generate'
        from /usr/lib/ruby/2.0.0/open3.rb:217:in `popen_run'
        from /usr/lib/ruby/2.0.0/open3.rb:99:in `popen3'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:55:in `block (2 levels) in generate'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:18:in `each'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:18:in `block in generate'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:10:in `each_pair'
        from /home/lingnan/Dropbox/lynnard.github.com/plugins/pandoc.rb:10:in `generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:190:in `block in generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `each'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:189:in `generate'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/lib/jekyll/site.rb:40:in `process'
        from /home/lingnan/.gem/ruby/2.0.0/gems/jekyll-0.12.0/bin/jekyll:264:in `<top (required)>'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `load'
        from /home/lingnan/.gem/ruby/2.0.0/bin/jekyll:23:in `<main>'
lingnand commented 10 years ago

Hi, any update on this problem? I think I should as well look into the code myself, but I haven't got time to whip up my ruby skills.

fauno commented 10 years ago

hey! sorry to keep you waiting, could you try with a more modern jekyll? i just saw you're using 0.12

xizepu commented 8 years ago

I use jekyll 2.2.0, and the error message like this:

zepu@zepu-thinkpad-e420:~/Twenty-Jekyll-Theme$ jekyll -v

jekyll 2.2.0

use jekyll:

zepu@zepu-thinkpad-e420:~/Twenty-Jekyll-Theme$ jekyll serve

Configuration file: /home/zepu/Twenty-Jekyll-Theme/_config.yml
            Source: /home/zepu/Twenty-Jekyll-Theme
       Destination: /home/zepu/Twenty-Jekyll-Theme/_site
      Generating... 
  Conversion error: There was an error converting '_posts/2014-08-07-first-post.markdown/#excerpt'.
jekyll 2.2.0 | Error:  undefined method `keys' for nil:NilClass

I try to update jekyll zepu@zepu-thinkpad-e420:~/Twenty-Jekyll-Theme$ gem update jekyll

Updating installed gems
Nothing to update
fauno commented 6 years ago

@XiZepu i don't know why i don't get email notifications, sorry i never replied! :/

i think we fixed your issue a while ago, it had to do with excerpts being included on the yaml metadata but actually being a ruby object, so we skipped it