Support name-fn for modifying URL strings.

Once the title has been converted to a URL (by `slugify`), name-fn changes it.
It is available in the .coleslawrc as `:namefn 'fn`, with the default
`:name-fn 'identity`
This commit is contained in:
Spenser Truex 2020-03-24 15:51:54 -07:00
parent 656401df71
commit efc0bfb738
2 changed files with 4 additions and 1 deletions

View file

@ -7,6 +7,7 @@
(domain :initarg :domain :reader domain) (domain :initarg :domain :reader domain)
(excerpt-sep :initarg :excerpt-sep :reader excerpt-sep) (excerpt-sep :initarg :excerpt-sep :reader excerpt-sep)
(feeds :initarg :feeds :reader feeds) (feeds :initarg :feeds :reader feeds)
(name-fn :initarg :name-fn :reader name-fn)
(lang :initarg :lang :reader lang) (lang :initarg :lang :reader lang)
(license :initarg :license :reader license) (license :initarg :license :reader license)
(page-ext :initarg :page-ext :reader page-ext-intolerant) (page-ext :initarg :page-ext :reader page-ext-intolerant)
@ -25,6 +26,7 @@
:plugins '((rsync "-avz" "--delete" "--exclude" ".git/" "--exclude" ".gitignore" "--copy-links")) :plugins '((rsync "-avz" "--delete" "--exclude" ".git/" "--exclude" ".gitignore" "--copy-links"))
:sitenav nil :sitenav nil
:excerpt-sep "<!--more-->" :excerpt-sep "<!--more-->"
:name-fn 'identity
:charset "UTF-8" :charset "UTF-8"
:lang "en" :lang "en"
:page-ext #1="html" :page-ext #1="html"

View file

@ -42,7 +42,8 @@ is provided, it overrides the route used."
(error "No routing method found for: ~A" class-name)) (error "No routing method found for: ~A" class-name))
(let* ((result (format nil route unique-id)) (let* ((result (format nil route unique-id))
(type (or (pathname-type result) (page-ext *config*)))) (type (or (pathname-type result) (page-ext *config*))))
(make-pathname :name (pathname-name result) (make-pathname :name (funcall (name-fn *config*)
(pathname-name result))
:type (when (string/= type "") :type (when (string/= type "")
(if (or (string-equal "index" (if (or (string-equal "index"
(pathname-name result)) (pathname-name result))