Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Post not shown if title contains : (colon) #549

Closed
Heliosmaster opened this Issue · 13 comments

10 participants

@Heliosmaster

in the YAML front matter, if I have

title: "Post title : Part 1"

the post is not shown by Jekyll.

@nickcharlton

An instant solution to this is to encode it yourself. A colon is: : as an entity.

See: http://stackoverflow.com/questions/10963002/jekyll-new-posts-not-being-generated

@Vanuan

The problem is it's hard to find which page contains colon. Jekyll produces exception:

/usr/share/ruby-rvm/gems/ruby-1.9.3-p194/gems/psych-1.3.4/lib/psych.rb:203:in `parse': (<unknown>): mapping values are not allowed in this context at line 4 column 14 (Psych::SyntaxError)
    from /usr/share/ruby-rvm/gems/ruby-1.9.3-p194/gems/psych-1.3.4/lib/psych.rb:203:in `parse_stream'
    from /usr/share/ruby-rvm/gems/ruby-1.9.3-p194/gems/psych-1.3.4/lib/psych.rb:151:in `parse'
    from /usr/share/ruby-rvm/gems/ruby-1.9.3-p194/gems/psych-1.3.4/lib/psych.rb:127:in `load'
    from /usr/share/ruby-rvm/gems/ruby-1.9.3-p194/gems/jekyll-0.11.2/lib/jekyll/convertible.rb:33:in `read_yaml'
@Vanuan

When I use quotes around a title, the site is generated correctly.

@srubin

I had this problem when importing from a tumblr. To fix colons in titles (with python; I'm sure there's some one-liner to do this, but it works):

import re
import glob
colon = re.compile(r"title:(.*:.*)")
for file in glob.glob("_posts/tumblr/*.html"):
    with open(file) as f:
        lines = f.readlines()
    for i, line in enumerate(lines):
        match = colon.match(line)
        if match:
            lines[i] = "title:" + match.group(1).replace(":", "&#58;") + "\n"
            with open(file, "w") as f:
                print "updating ", file
                for line in lines:
                    f.write(line)
@nottrobin

Instant help! Yay.

@parkr
Owner

Unfortunately, Jekyll can't do much about this. It's really a YAML problem.

@parkr parkr closed this
@nottrobin

Can Jekyll not even do anything useful about the error message? A meaningful error message would be really helpful.

@parkr
Owner

@nottrobin On master, it looks like we give a more helpful error. Did you test on 1.0.0.beta2?

@gideonite

I'm using jekyll 2.5.3 and I'm still getting an unhelpful error:

Error reading file /home/path/to/01-01-1900-init-my-first-post.md: (<unknown>): mapping values are not allowed in this context at line 3 column 12 

line 3 contains the title of the post which has a colon in it.

@parkr
Owner

@gideonite We asked about this here, check it out: dtao/safe_yaml#54

@else else referenced this issue in raumzeitlabor/rzl-homepage
Closed

YAML does not require quotes #130

@CaioProiete

Also using jekyll 2.5.3 and the workaround I prefer, is to use the "non-specifig tag" YAML syntax.

---
title: ! 'Attention: This post title has "colon" & stuff'
date: 2015-05-24 11:12:13
---

This allows me to use colon, double quotes, and pretty much any special char.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.