From 12f174533fab60669069bd92ca5261fb4f275f1b Mon Sep 17 00:00:00 2001 From: Alfredo Beaumont Date: Wed, 22 Mar 2017 18:30:49 +0100 Subject: [PATCH] Add support for either an automatic or manual excerpt for index --- src/config.lisp | 2 ++ src/packages.lisp | 2 +- src/posts.lisp | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/config.lisp b/src/config.lisp index 15b5b1f..ac65ca8 100644 --- a/src/config.lisp +++ b/src/config.lisp @@ -5,6 +5,7 @@ (charset :initarg :charset :reader charset) (deploy-dir :initarg :deploy-dir :reader deploy-dir) (domain :initarg :domain :reader domain) + (excerpt-sep :initarg :excerpt-sep :reader excerpt-sep) (feeds :initarg :feeds :reader feeds) (lang :initarg :lang :reader lang) (license :initarg :license :reader license) @@ -22,6 +23,7 @@ :license nil :plugins nil :sitenav nil + :excerpt-sep "" :charset "UTF-8" :lang "en" :page-ext "html" diff --git a/src/packages.lisp b/src/packages.lisp index fe07a90..45c96cd 100644 --- a/src/packages.lisp +++ b/src/packages.lisp @@ -5,7 +5,7 @@ #:make-keyword #:mappend) (:import-from :cl-fad #:file-exists-p) - (:import-from :cl-ppcre #:scan-to-strings) + (:import-from :cl-ppcre #:scan-to-strings #:split) (:import-from :closure-template #:compile-template) (:import-from :local-time #:format-rfc1123-timestring) (:import-from :uiop #:getcwd diff --git a/src/posts.lisp b/src/posts.lisp index d8fe29d..5c25ea7 100644 --- a/src/posts.lisp +++ b/src/posts.lisp @@ -3,14 +3,19 @@ (defclass post (content) ((title :initarg :title :reader title-of) (author :initarg :author :reader author-of) + (excerpt :initarg :excerpt :reader excerpt-of) (format :initarg :format :reader post-format)) - (:default-initargs :author nil)) + (:default-initargs :author nil :excerpt nil)) (defmethod initialize-instance :after ((object post) &key) - (with-slots (url title author format text) object + (with-slots (url title author excerpt format text) object (setf url (compute-url object (slugify title)) format (make-keyword (string-upcase format)) text (render-text text format) + excerpt (or excerpt + (first (split (excerpt-sep *config*) + (render-text text format) + :limit 2))) author (or author (author *config*))))) (defmethod render ((object post) &key prev next)