Improve documentation, improve portability (with latest
oconfigure),
and add a large regression suite for testing behaviour of the system.
This is run by make regress
and requires no additional
utilities to run (beyond diff
).
Allow versions.xml
to be overridden and provide
versions.xml
for the actual file.
Tiny updates to portability. For most systems, no functional change. Update to newest oconfigure.
Extensive portability work. Internally switches to pkg-config(1) for detecting dependency locations. Now builds and installs properly on most popular UNIX systems.
Add data-sblg-const-img
variants of the existing
data-sblg-img
and friends.
This behaves like implicitly grabbing from the first
<img>
in that only the first invocation sets the
value.
The existing data-sblg-img
attributes, on the other
hand, will overwrite previous invocations.
Add 64
for printing the number of
remaining articles in a tagged navigation series.
Add data-sblg-author
attribute that can override the
set author. This is like the data-sblg-img
and so
forth.
Add data-sblg-atomcontent
to mirror
data-sblg-navcontent
in that Atom entry contents are
retained with symbols replaced.
Atom contents are now typed as XHTML and wrapped in an
xmlns
attribute accordingly.
Add LDFLAGS
to Makefile and fix typos in manpage.
Add two templates for photography blogs, one with a grid front page and one that's columnar. These create the blogs directly from EXIF data in your photos!
Finally remove that articles are followed by a permanent link by
default that must be disabled with data-sblg-permlink="0"
.
This has now been inverted such that
data-sblg-permlink="1"
is required to emit the
permanent link.
Add 0.5.11
and the -V
flag to the
binary to emit the version.
Add a brutalist template to the mix. This is has a front page and per-article styles. The way templates are installed has changed, but that's not likely to change any behaviour.
Provide the sblg-next-has
and
sblg-prev-has
to allow masking or showing of
and friends.
Add some style templates for simple blogs: one that's one article per page and one with a blogroll, and a retro blogroll. These are installed with the system and may be used a simple start to a blog.
Significant updates to the Atom functionality. This necessitates a
minor version bump because Atom identifiers created by the system no
longer use the tag
scheme, but instead the URL itself. This
makes the system much simpler. Also, several attributes
(data-sblg-update
, data-sblg-id
) are no
longer necessary to stipulate: since there can only be one element
for each invocation, these are superfluous. All of these makes it
much easier to combine existing Atom entries with an automated feed.
While here, update the documentation to be much more specific about how the template is handled.
Provide the data-sblg-aside
attribute like the others
(data-sblg-title
, etc.).
Also bring up to date with latest
oconfigure.
Documentation updates only: clarify multi-standalone
mode as
combined, remove references to amalgamation, clarify where tag
symbols may be used, add more meaningful examples, etc.
No code change.
Add ititle
and rititle
for
case-insensitive title sort.
Add data-sblg-ign-once
attribute, which is recognised
in the template file to indicate that a
data-sblg-article
should be ignored.
The once
part specifies that the attribute be removed
when it is processed.
This makes it easier to chain output to input, so a template may,
for example, wrap a navigation set as an article.
I use this for tag cloud collections.
Fix value reported by 64
, which was off
by one.
Provide data-sblg-title
and
data-sblg-datetime
overrides just like already found in
data-sblg-img
.
All sort types now have a reverse
mode.
Add in the title
sort, while here.
Fix typo causing compile errors on Linux.
Bug-fix a coredump caused by copy-paste. This occurred when a sort was specified on a navigation.
Add 64
variable.
No functionality changes. Speed up internal code by using hashtable lookups for element and attribute names. Conform to OpenBSD's style(9) more.
In list mode (-l), allow for long-format
listing by
specifying another -l.
This puts all tags (or files, with -r) to be printed on the
same line.
This makes it easier to use shell scripting to process tag lists.
When creating Atom feeds, strip away dangerous
HTML
attributes.
Do this by using the W3C's Atom feed
attribute whitelist, defined in their validator security
considerations.
In doing so, Atom feeds validate nicely.
Add data-sblg-forall
to Atom generation.
This makes it easy to have a single <entry>
for
all Atom entries. Also fix the generated <id>
to
use the current year and tidy the sblg(1)
documentation.
Also add data-sblg-altlink-fmt
to allow the alternative
link to be formatted arbitrarily.
While there, make Atom output process its internal tags.
This means you can use the tags within
documents and have them properly render within your Atom feed
content.
Clean up some possible memory leaks, too.
Add 0.344$
, 34
,
and ${sblg-count
to generate nice progress bars.
Specify what 23
actually does: shows the
current navigation index regardless the filters.
Add 23
for the actual position in the full
list of articles.
(Why anybody would want that, I don't know.)
Add , which is like
except that white-space is escaped for use
with the
data-sblg-navtag
and
data-sblg-articletag
attributes.
Introduce , which tests whether
key
has been set (e.g.,
data-sblg-set-key=foo
).
If it has been set, emits sblg-has-key
, or nothing otherwise.
This is useful for classes whose children will be masked depending upon the existence of a key.
Properly show dates in UTC instead of localtime. (Unless asking for localtime.)
Allow for data-sblg-navtag
and data-sblg-articletag
to support an embedded
.
This is useful for having a navigation list (in -L or -C mode) deriving from the page itself, such
as a
see also
.
Also bring up to date with newest oconfigure.
Compatibility fix for %F
, which wasn't supported by musl.
Also make data-sblg-articletag
respect escaped spaces.
Allow for white-space around date processing in the input document's <time>
element.
Bump to latest oconfigure. Fix up some documentation. No code change.
Bump to latest oconfigure. Fix up some documentation as noted by Johan Huldtgren—thanks!
Start using oconfigure for configuration.
Allow for data-sblg-navsort
attribute to override the search order set by -s.
Also add the rdate search order (reverse date).
Allow for data-sblg-set-xxxx="yyyy"
attributes for custom key-value pairs.
These may later be extracted using the invocation.
This is very useful for having structured values within, say, navigation.
Also merge Reyk Flöter's data-sblg-navxml
tag to cause the contents of a
data-sblg-nav="1"
statement to be included verbatim, not within a list.
Fix <id>
element in Atom feeds as patched by Reyk Flöter. Thanks!
Make Atom feeds aware of the data-sblg-striplink
attribute.
This attribute strips the directory part from the altlink (if requested), allowing input files to have arbitrary
directory parts harmlessly.
Fix data-sblg-navtag
to also support escaped spaces.
Enpower -l (tag-listing mode). This is now able to emit all tags in JSON formatted output via -j, which makes it easy for dynamic sites to play with tag listings in any way they choose. (See sblg(1) for an explanation of the output format.) Also add -r, which stipulates that -l will print tag-first. This is most useful for -j, as it allows for easy browsing by tag name.
Also internally start using a new way to configure
the build.
Added a new flag, -L, documented in sblg(1). This acts as if -C were specified for each article in its input without needing to run sblg(1) again and again. (Obviously, it will re-write the suffix just like -c without -o.) This makes the compile time for our divelog, which has many articles that used to be run with -C, much faster.
While plumbing, add some examples to the manpage and note the caveat regarding HTML entity names.
Fix the installation tarball. No code/functionality change.
Add the ability to attach an image to an article.
This is selected from the first <img>
or as overriden by the data-sblg-img
attribute.
Also add the ability to list tags in an article with version
, which accepts a filter prefix as
.
Then add
2016-11-27T00:00:00Z
to format time-date UTC pairs and
11/26/16
for human-formatted dates and times.
These collectively make date and time formatting much more rigorous.
While documenting these, polish up sblg(1).
Implement a new option, -l, that prints all tags for a given set of filenames. Also allow tags to have spaces if backslash-escaped.
Add support for JSON output with the -j flag. This generates a dump of all articles in JSON format. This makes it easy to mingle your static content with a dynamic feed, such as one coming from dblg.
Add sorting by command-line (natural) invocation order. Fix an issue reported by trondd555 where text after the end of an input article would continue to be printed. Thanks!
Require a valid ISO 3339 date-time for the article time, which now lets articles have a time as well as the date component.
Add a 44
tag for specifying the article's shown position.
Allow multiple articles to be specified within a single input file. This warrants a minor bump because the internals changed quite significantly, as did the default behaviour of handling multiple articles per file (earlier they were just ignored).
Add the data-sblg-articletag
attribute for articles (like data-sblg-navtag
) and allow for
data-sblg-navstart
for navigation (the first article to show of those that would be shown).
Also clean up the manpage in the interests of readability.
Implement Darwin's sandbox for security's sake.
Fix versions
, which was accidentally behaving the same as versions
.
Change all the strip
tags to refer only to directory and suffix stripping, then add the lang
addition
(e.g., versions
to remove both.
Add the data-sblg-sort
attribute to articles that allows them to override their relative positioning.
Prepare for importing a read-only repository into GitHub.
Add a versions
version of versions
that also removes the directory part.
The same has been added to the positional references like versions
.
Bug-fix: when reading the time from an article (via the <time>
element), sblg was looking only at the first attribute.
This has been fixed: all attributes are examined until finding the time.
Bug-fix: if an amalgamation template had more entries than articles, it would crash. This was found and noted by Hiroshi Hakoyama—thanks!
Spruce up documentation and web content for clarity, including fixing some of the older Tips and Tricks
articles in the blog section.
No functional change.
Fix the Atom generator (using the -a flag) to use the <content> tag regardless of whether displaying a summary or the content itself. This behaviour conforms to RFC 4287. Noted by Svyatoslav Mishyn–thanks! While here, spend a few hours running the system through AFL. Note: I had accidentally installed version 0.2.5 as version 0.2.6. This error pointed out by Svyatoslav–thanks again!
First, actually use the -C (the prior -f was still specified). Second, have the blog amalgamation, standalone amalgamation, and compile modes properly treat the template symbols described in sblg(1). In doing so, the system was made much more efficient by re-using the saved buffer of article contents instead of re-parsing for each treatment.
Add the <article data-sblg-lang="en lv ru">
attribute for controlling how
filenames are stripped for the versions
symbol (see sblg(1)), specifically that a
language of (e.g.) en
would, in a filename of index.en.html
or index.html.en
, have the
.en
part stripped out before the suffix is stripped.
This makes multilanguage sites much easier to manage.
Also add a small portability framework, automatically invoked by the Makefile, that provides compatibility functions for strlcat(3), strlcpy(3), and reallocarray(3). So now the system is portable across most UNIX systems, not just BSD!
Polish documentation and web-site. No significant functional changes.
Document (and fix) the versions
and versions
keywords.
Add the versions
and versions
keywords.
Allow multiple tags in data-sblg-navtag
attributes.
Bumped minor after changing the symbols replaced within <nav data-sblg-navcontent="1">
.
These are all now prefixed with sblg-
.
Also switched -f
to -C
for consistency.
Lastly, allowed all non-article and non-navigation text and attribute values within the templates for -c
and
-C
to have the same symbols as for navigation replacement.
Fix tagging to allow for data-sblg-tags
attributes anywhere in an article.
Also fix off-by-one in replacing .xml
with .html
in -c mode.
Stipulate that all content is used when data-sblg-content="1"
is used in an Atom template.
Allowed <hN>
, <aside>
, <time>
, and <author>
tags to
appear anywhere in the article instead of just in the <header>
.
Disable expansion of internal entity references (e.g., <) so that input is completely preserved.
Added titletext
to filled-in parameters such as to differentiate from title
, which includes any markup
within the parse context.
While there, add author
and authortext
.
Overhaul documentation (web, articles, manual, in-line) for simplicity.
Add tag indexing (see Tags article).
Simplify the flow of standalone to amalgamated articles by mandating that
data-sblg-article="1"
appear in input articles.
Fix download so that it compiles properly.