API
STATICL
Functions
Creates a new site skeleton with a few posts.
STATICL/BUILDER
Functions
STATICL/CLEAN-URLS
Generics
Converts the pathname to the form that should be used to write content to the disk.
If the site has the clean-urls setting enabled, then the filename like some/page.html will be converted to some/page/index.html. If clean-urls is not enabled, the pathname will remain unchanged.
Converts the URL
to the form that should be used on the site.
If the site has the clean-urls setting enabled, then the URL
like /some/page.html will be converted
to /some/page/. If clean-urls is not enabled, the URL
will remain unchanged.
STATICL/CONTENT
Classes
CONTENT-FROM-FILE
Readers
Absolute pathname to the file read from disk or NIL
for content objects which have no source file, like RSS
feeds.
CONTENT-TYPE
Readers
CONTENT-WITH-TAGS-MIXIN
Readers
CONTENT-WITH-TITLE-MIXIN
Readers
CONTENT
Readers
A hash with additional fields specified in the file's header.
Generics
Should return an absolute pathname to a file where this content item should be rendered.
Returns T if content has a given TAG-NAME
. For content which does not support tags, returns NIL
.
Returns a list of content
objects corresponding to a given content type.
EXCLUDE
argument is a list of pathname prefixes to ignore. Pathnames should be given relative to the root dir of the site.
Returns a list of content
objects loaded from files.
EXCLUDE
argument is a list of pathname prefixes to ignore. Pathnames should be given relative to the root dir of the site.
Returns a list of content-type
objects.
Writes CONTENT
object to the STAGE-DIR
.
Writes CONTENT
object to the STREAM
using given FORMAT
.
Functions
Changes metadata dictionary by adding a new item with key KEY
.
Key should be a string and it is automatically downcased.
Note, this way, you can override content's object slots.
To prevent accidential override, function will raise an error
in case if a slot named KEY
exists in the object CONTENT
.
To force override provide OVERRIDE-SLOT
argument.
STATICL/CONTENT-PIPELINE
Classes
LOAD-CONTENT
Readers
Functions
Reads content from the disk.
By default only post
and page
files are loaded. But this list could be extended if you'll define
a custom site class and a method for staticl/content:supported-content-types
generic-function.
STATICL/CONTENT/HTML-CONTENT
Generics
Returns a content as HTML
string.
Returns an excerpt of full content as HTML
string.
Returns T if there is more content than was returned by content-html-excerpt
generic-function.
STATICL/CONTENT/PAGE
Classes
PAGE-TYPE
PAGE
STATICL/CONTENT/POST
Classes
POST-TYPE
POST
This is the class for a page which will not be included into the feed and indices.
Functions
Returns T if given object is a content of post
class.
STATICL/CONTENT/READER
Functions
Returns a plist of metadata from FILE
with :TEXT
holding the content going after the SEPARATOR
.
STATICL/CURRENT-ROOT
Functions
Macros
STATICL/FEEDS/ATOM
Classes
ATOM
Functions
Creates an XML
feed in Atom format at TARGET-PATH
.
Only a LIMIT
latest posts are included into the feed.
STATICL/FEEDS/RSS
Classes
RSS
Functions
Creates an XML
feed in Rss format at TARGET-PATH
.
Only a LIMIT
latest posts are included into the feed.
STATICL/FILTER
Classes
FILTER
Readers
Macros
Filters input content objects and processes them using pipeline items given as a body.
Arguments:
PATH
: result will contain only items read from the given path.TAGS
: result will contain only items having all given tags.INVERT
: inverts effect of the filter.PIPELINE
: any number of function calls returning pipeline nodes.
Note: Right now, all new items generated by PIPELINE
given to the filter
macro
are added to the toplevel list and stay invisible to the sebsequent pipeline nodes.
The same applicable to content deletion.
STATICL/FORMAT
Generics
STATICL/INDEX/BASE
Classes
BASE-INDEX
Readers
Relative pathname to a directory where all pages will be generated.
INDEX-PAGE
Readers
Relative pathname to a file with page content.
A title of the page.
Accessors
STATICL/INDEX/PAGINATED
Classes
PAGINATED-INDEX
Readers
A callback to change page titles.
Accepts single argument - a page number and should return a pathname relative to the site's root.
By default, it returns index.html
for the first page and page-2.html
, page-3.html
for others.
If site has "clean urls" setting enabled, then additional transformation to the pathname will be applied automatically.
A callback to change page titles.
Accepts single argument - a page number and should return a string.
For example, here is how you can translate page title into a russian:
(paginated-index :target-path #P"ru/"
:page-title-fn (lambda (num)
(fmt "Страница ~A" num)))
Functions
Creates additional HTML
files with post's excerpts grouped by PAGE-SIZE
items.
By default index.html
, page-2.html
, page-3.html
, etc. filenames are used, but this
can be overriden by PAGE-FILENAME-FN
argument.
The same way page title may be overriden by providing a function as PAGE-TITLE-FN
argument.
Arguments:
PAGE-FILENAME-FN
:
A callback to change page titles.
Accepts single argument - a page number and should return a pathname relative to the site's root.
By default, it returns index.html
for the first page and page-2.html
, page-3.html
for others.
If site has "clean urls" setting enabled, then additional transformation to the pathname will be applied automatically.
PAGE-TITLE-FN
:
A callback to change page titles.
Accepts single argument - a page number and should return a string.
For example, here is how you can translate page title into a russian:
(paginated-index :target-path #P"ru/"
:page-title-fn (lambda (num)
(fmt "Страница ~A" num)))
STATICL/INDEX/TAGS
Classes
TAGS-INDEX
Readers
A callback to change page titles.
Accepts single argument - a tag name and should return a pathname
By default, for tag "foo-bar" it returns foo-bar.html.
If site has "clean urls" setting enabled, then additional transformation to the pathname will be applied automatically.
A callback to change page titles.
Accepts single argument - a tag name and should return a string.
For example, here is how you can translate page title into a russian:
(tags-index :target-path #P"ru/"
:page-title-fn (lambda (tag-name)
(fmt "Записи с тегом ~A" tag-name)))
Functions
Creates additional HTML
files with post's excerpts grouped by tag names.
By default some.html
, another.html
filenames are used, but this
can be overriden by PAGE-FILENAME-FN
argument.
The same way page title may be overriden by providing a function as PAGE-TITLE-FN
argument.
Arguments:
PAGE-FILENAME-FN
:
A callback to change page titles.
Accepts single argument - a tag name and should return a pathname
By default, for tag "foo-bar" it returns foo-bar.html.
If site has "clean urls" setting enabled, then additional transformation to the pathname will be applied automatically.
PAGE-TITLE-FN
:
A callback to change page titles.
Accepts single argument - a tag name and should return a string.
For example, here is how you can translate page title into a russian:
(tags-index :target-path #P"ru/"
:page-title-fn (lambda (tag-name)
(fmt "Записи с тегом ~A" tag-name)))
STATICL/INJECTIONS
Classes
CONTENT-WITH-INJECTIONS-MIXIN
Readers
Generics
Adds a piece of HTML
to the list of pieces to be inserted to a given point when content will be rendered to a file.
STATICL/LINKS/LINK
Classes
LINK
Readers
Functions
Creates a link to the given content piece.
When such object is passed to the template, it is resolved to a
page URL
and title.
STATICL/LINKS/PREV-NEXT
Classes
PREV-NEXT-LINKS
Functions
Creates a links between pages.
Links are added to the content item's metadata and available in templates as
content.prev.url
and content.next.url
variables.
STATICL/NAVIGATION
Classes
ITEM
Readers
MENU
Readers
Functions
STATICL/PIPELINE
Generics
A method for this generic function should process CONTENT-ITEMS
- a list of conten items
produced by a previous pipeline nodes.
During the execution, method can call produce-item
or remove-item
functions to add a new content
or to remove some content item.
Functions
STATICL/PLUGIN
Classes
PLUGIN
Functions
STATICL/PLUGINS/DISQUS
Classes
DISQUS
Readers
Functions
Enables Disqus on the page.
To make it work, you have to register your site at Disqus and provide a short site name to the function.
STATICL/PLUGINS/MATHJAX
Classes
MATHJAX
Readers
Functions
Enables MathJAX
on the page if it's content has tag equal to the TAG-NAME
or if FORCE
argument was given.
STATICL/PLUGINS/SITEMAP
Classes
SITEMAP
Functions
STATICL/RSYNC
Classes
RSYNC
Readers
Functions
STATICL/SERVER
Functions
STATICL/SITE
Classes
SITE
Readers
Generate some-page/index.html instead of some-page.html to make URL
s look like https://my-site.com/some-page/ instead of https://my-site.com/some-page.html
Site's charset. By default it is UTF-8
.
A directory pathname where .staticlrc file can be found.
Site's description.
Site's navigation.
A list of pipline nodes
A theme object for the site.
Site's title.
Site's URL
.
Functions
STATICL/SKELETON
Functions
Creates a new site skeleton with a few posts.
STATICL/TAG
Classes
TAG
Readers
STATICL/THEME
Classes
THEME
Readers
Generics
Copies static files such as CSS
, JS
, images into the STAGE-DIR
.
Usually it is enough to define a method for list-static
generic-function.
Returns a list of static files such as CSS
, JS
, images.
Each list item should be a list of two items where first item is an absolute pathname and second is a pathname relative to the root of the site.
Renders fills template named TEMPLATE-NAME
with given VARS
and renders into a given STREAM
.
NAME
argument is a string.VARS
argument is a hash table with string keys.
Fills a hash-table given as HASH
argument with variables for filling a template.
If hash is NIL
, then a new hash-table should be allocated with EQUAL
:TEST
argument.
Returned hash-table will be used for rendering a template for an OBJECT
.
STATICL/URL
Generics
Returns a full object URL
.
A method should return an relative URL
, but if case if FULL
argument was given,
the full url with schema and domain will be returned.
Note a call to this method should happen in a context of the with-base-url
macro,
because it is always return a path from the site's root even if FULL
is not given
(in this case return only the path without a domain).
You may wonder: "Why does we bother to return a path without a domain?" It is much easier to service such static site locally for debugging purpose, because you don't have to setup a web server and dns resolver.
Actually you will need to use FULL
argument only in a rare case when you really need
and absolute URL
, for example in an RSS
feed.
Macros
STATICL/UTILS
Functions
Returns a new list where each value is replaced with results of call of normalizing functions.
For example:
CL-USER> (normalize-plist '(:foo "Bar" :blah 123)
:foo (lambda (value)
(alexandria:make-keyword (string-upcase value))))
(LIST :FOO :BAR :BLAH 123)
Macros
For each file under ROOT-PATH
, run BODY
. If FILE-TYPE
is provided, only run
BODY
on files that match the given extension.