Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

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

Closed
Heliosmaster opened this Issue · 12 comments

9 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

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.