Nyctergatis Markup Engine
Creole is a
collaborative effort to create a common markup language to be used across
different wikis. It is a work in progress, and currently it is difficult to
assess its potential success.
NME, or Nyctergatis Markup Engine, is an open-source ISO-C implementation
of a markup parser based on Creole 1.0. The markup language it supports is
described in its documentation.
If you are interested, you can experiment with
an online sandbox.
You can also read the source code documentation.
Feedback is welcome on my
discussion
page.
Releases
15 October 2007
NME-071015.zip (source code, 83 KB)
- unnested unnumbered or numbered list items weren't recognized
when following sublists; fixed
12 October 2007
NME-071012.zip (source code, 83 KB)
- NME output better escapes characters when it has to, but usually
doesn't unless required
- in NME output, support for mixed nested lists
- double-slash is considered as a part of URL instead of italic
markup only if it follows a digit, letter, '+', '-' or '.', and a
colon; and it precedes a nonblank character; therefore, a tilde
before the colon, such as abc~://..., restores the meaning
of the double-slash sequence as italic markup
9 October 2007
NME-071009.zip (source code, 82 KB)
- in lists, item markup must match, else it is interpreted as plain
characters or as bold or monospace markup
- NMEMFC.cpp compiles correctly without _UNICODE
4 October 2007
NME-071004.zip (source code, 82 KB)
- link encoding for RTF output
- NMEGtk tuning
- parHook and divHook bugs, revealed by new option
--checkhooks of NMEMain.c, fixed
29 September 2007
NME-070929.zip (source code, 80 KB)
- new high-level function NMEGtkInsert to insert NME text
directly into a GtkTextBuffer; NMEGtkTest.c
modified to use it
- NMEProcess optionally returns the output length in
unicode characters, assuming UTF-8 input
- in NMEMain.c, option --strictcreole doesn't
disable escape character anymore
- NMECpp.h uses C++ exceptions for error handling only if
UseNMECppException is defined; else method
getOutput returns an error code (the choice is useful for
platforms where exceptions are not supported or have a large cost)
- minor bug fixes in NMEStyle.c (plain paragraphs and
tables)
- refined NMEMFC.cpp
- error codes in hook callbacks weren't handled correctly; fixed
- support for links and images in span hook and NMEStyle
- support for links in NMEGtk
- in NMECpp and NMEStyleCpp, copy constructors
and assignment operators
- NMEEncodeURLFun has an additional argument for
application-specific data, and structure NMEOutputFormat has an
additional field for it
23 August 2007
NME-070823.zip (source code, 75 KB)
- bug in unicode offset computation fixed
- kNMEProcessOptXRef wasn't handled correctly; fixed
- blanks following starting = or preceding ending = in titles are
ignored
- in NMEGtkApplyStyle, additional argument for the offset
of NME output in GTK+ text buffer
- in LaTeX output, braces are now escaped and bold italic is
suported
- monospace text wasn't signalled to spanHookFun; fixed
- MFC glue with NMEMFC.cpp and NMEMFC.h (function
NMEMFCSetRichText which renders NME text into a
CRichEditCtrl)
5 July 2007
NME-070705.zip (source code, 70 KB)
- option to have verbatim rendered as monospace
(kNMEProcessOptVerbatimMono)
4 July 2007
NME-070704.zip (source code, 70 KB)
- callback to check valid wordwrap points
- bad unicode encoding for RTF fixed
- tilde is an escape character before any nonblank character,
including alphanumeric
19 June 2007
NME-070619.zip (source code, 69 KB)
- support for UCS-16 offset (16-bit unicode offsets when the input
is encoded in UTF-8)
- C++ glue for NMEStyle (NMEStyleCpp.h)
- in block preformatted, when 3 closing braces follow spaces at the
beginning of a line, one space is removed
7 June 2007
NME-070607.zip (source code, 67 KB)
- NMEStyle to separate text from style
- NMEGtkTest.c, a test application for
NMEStyle which displays a text file with NME markup in a
GTK+ 2 window
- support for placeholders (plugin option to use triple angle
brackets instead of double angle brackets)
- bug fixes
30 May 2007
NME-070530.zip (source code, 63 KB)
- heading of level 1 and 2 following other paragraphs without a
blank line were always numbered; fixed
- XHTML-compatible image tag in HTML output
- plugins source code in separate files
- in plugin tables, single field for option flags instead of
separate boolean fields
- in plugin tables, option flag for plugins between paragraphs
- characters weren't encoded in preformatted blocks; now there is a
separate callback
- new opaque structure NMEContext for output data and other
contextual information, to reduce the number of arguments passed
around and to support string output with embedded expressions from
plugin and autoconvert functions
- variable o (offset in source code) in embedded
expressions, useful as unique identifiers for hyperlinks
- hook functions for paragraphs and sections
- functions to retrieve current output format and options in
plugin, autoconvert and hook functions, and to copy input text from
input to output
- change in the arguments of NMEProcess, to keep original source
code
- table of contents plugin (sample code for the new features)
- C++ glue (NMECpp.h)
24 April 2007
NME-070424.zip (source code, 47 KB)
- optional automatic links for URLs beginning with http://,
https://, ftp://, mailto:
- optional separate source file for automatic links for camelcase
and URL
- options to disable indented paragraphs and definitions lists
- in NMEMain.c, option --strictnme to disable features
not in Creole 1.0
19 April 2007
NME-070419.zip (source code, 44 KB)
- optional numbering of headings, level 1 and/or 2
- images weren't supported in links; fixed
- empty cells weren't output correctly in text format; fixed
- in NMEMain.c, most plugins have reparseOutput set,
so that word-wrap is applied to output
- Python glue for the command-line application
(nme.py)
18 April 2007
NME-070418.zip (source code, 43 KB)
- plugins now use the "placeholder" syntax, with double angle
brackets
- references to plugin globally-unique identifiers removed
- option to match only the beginning of plugin names
16 April 2007
NME-070416.zip (source code, 43 KB)
- doc header and trailer suppressed in plugin output
- less references to Creole in source code
- "null" format for producing no output
- better handling of plugins, especially those which produce NME
code which must be processed again
- autoconversion plugins which make substitutions before NME
conversion (as an example, NMEMain.c has an option to convert
camelCase words to links)
30 March 2007
NME-070330.zip (source code, 40 KB)
- wrong encoding of unicode characters >= 32768 for RTF output;
fixed
- optional processing of plugin output
- calendar plugin in NMEMain.c
23 March 2007
NME-070323.zip (source code, 39 KB)
- support for parenthesis in expressions in output strings
- replicated strings themselves can contain expressions, and syntax
for expressions in output strings has been changed to support it
- default font size in structure NMEOutputFormat and
support for default font size (with nonpositive values, HTML does
not contain font size specifications at all, relying on the browser
defaults)
- argument withPreAndPostDoc of
NMEProcess replaced by options
- images
- option to consider line breaks as paragraph separators
- minor documentation fixes
20 March 2007
NME-070320.zip (source code, 35 KB)
|