Skip to content

Instantly share code, notes, and snippets.

@wzyboy
Created December 15, 2017 15:26
Show Gist options
  • Save wzyboy/b7c81d94cb23a2a8debb034ecc66f24a to your computer and use it in GitHub Desktop.
Save wzyboy/b7c81d94cb23a2a8debb034ecc66f24a to your computer and use it in GitHub Desktop.
Generate excerpts for Lektor
from html.parser import HTMLParser
from lektor.pluginsystem import Plugin
class HTMLTagStripper(HTMLParser):
def __init__(self):
self.reset()
self.strict = False
self.convert_charrefs = True
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = HTMLTagStripper()
s.feed(html)
return s.get_data()
def get_excerpt(md, length=256):
html = md.html
plain = strip_tags(html)
excerpt = plain[:length]
return excerpt
class ExcerptPlugin(Plugin):
name = 'excerpt'
description = 'Generate excerpts for blog posts'
def on_setup_env(self, **kwargs):
self.env.jinja_env.filters['excerpt'] = get_excerpt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment