Entry parsing functions take in a filename and the Request object. They then open the file and parse it out. The can call cb_preformat and cb_postformat as they see fit. They should return a dict containing at least "title" and "story" keys. The "title" should be a single string. The "story" should be a list of strings (with \n at the end).
Here's an example code that reads *.plain files which have the title as the first line, metadata lines that start with # and then after all the metadata the body of the entry:
import os
def cb_entryparser(entryparsingdict):
"""
Register self as plain file handler
"""
entryparsingdict['plain'] = parse
return entryparsingdict
def parse(filename, request):
"""
We just read everything off the file here, using the filename as
title
"""
entrydata = {}
f = open(filename, "r")
lines = f.readlines()
f.close()
# strip off the first line and use that as the title.
title = lines.pop(0).strip()
entrydata['title'] = title
# absorb meta data lines which begin with a # and consist
# of a name and a value
while lines and lines[0].startswith("#"):
meta = lines.pop(0)
meta = meta[1:].strip() # remove the hash
meta = meta.split(" ", 1)
entrydata[meta[0].strip()] = meta[1].strip()
# join the rest of the lines as the story
story = ''.join(lines)
entrydata["story"] = "".join(lines)
return entrydata