New Code!
Discount has been pushed, kicking and screaming, up to version 1.4.0, and has been hurled out the door so other people can find bugs in it. Why have I so rudely evicted it from the development machines today? Because I went through and added a handful of new functions to the published interface, and have split and renamed some of the existing functions to try to fit into the grand naming scheme I’m trying to follow.
I’ve not actually taken anything out of the published interface, but I’ve renamed some of the functions (mkd_style
, mkd_text
) and left the older names merely as #define
s.
The new functions are
mkd_css
- Allocate a buffer and populate it with the
<style>
sections found in the code mkd_generatecss
- Write the
<style>
sections to a file (this is the oldmkd_style
function) mkd_line
- Process a line of text, then place it into an allocated buffer.
mkd_generateline
- Process a line of text, then write it to a file (this is the old
mkd_text
function)
An internal function has been pulled out and made into a pair of public functions. I had a private function ___mkd_xml()
which someone wanted access to in both write-to-file and write-to-buffer formats, so I expanded it out:
mkd_xml
- Allocate a buffer, then populate it with an xml'ed version of the input.
mkd_generatexml
- Write the xml'ed version of the input string to a file
(the xmlification of a string is simply replacing “>” with “>”, “<” with “<”, “&” with “&”, “"” with “"”, and “'” with “&apos”, plus stripping out all the control characters (0x00
-0x1f
))
There are also some cleanups in the way I handle utf-8 characters (so that they’re actually handled instead of silently dropped) and I’ve cleaned up some of the documentation to have it not comment on features that vanished in the 0.x era.
So this was enough to bump the version to 1.4.0, and it’s certainly enough to make all the cautions about New Code! extra important. The code works for me (if it didn’t you’d not be seeing this message on tsfr, nor would you see the web page describing the new land mines for you to stumble upon) but if there are any little surprises elsewhere you might find them faster than I will.
So why not download the code, compile it, and see if your workstation will implode, catch fire, or both?