in the YAML front matter, if I have
title: "Post title : Part 1"
the post is not shown by Jekyll.
An instant solution to this is to encode it yourself. A colon is: : as an entity.
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'
When I use quotes around a title, the site is generated correctly.
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):
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)
lines[i] = "title:" + match.group(1).replace(":", ":") + "\n"
with open(file, "w") as f:
print "updating ", file
for line in lines:
Instant help! Yay.
Unfortunately, Jekyll can't do much about this. It's really a YAML problem.
Can Jekyll not even do anything useful about the error message? A meaningful error message would be really helpful.
@nottrobin On master, it looks like we give a more helpful error. Did you test on 1.0.0.beta2?
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.
@gideonite We asked about this here, check it out: dtao/safe_yaml#54
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.
Replace `:` with `:` in post title [jekyll/jekyll#549]