smu

Simple markup processor
git clone https://git.sinitax.com/codemadness/smu
Log | Files | Refs | README | LICENSE | Upstream | sfeed.txt

commit fc9310966e8c38fea21fd1cfe2f3e916cbbb11b7
parent c87f6e21b60354f352c2fd8aa02fc7aff1b9d737
Author: gottox@work <gottox@work>
Date:   Mon, 28 Jan 2008 14:10:32 +0100

More documentation; fixed dosurround

Diffstat:
Mdocumentation | 69++++++++++++++++++++++++++++++++++++++++-----------------------------
Msmu.c | 23+++++++++++------------
2 files changed, 51 insertions(+), 41 deletions(-)

diff --git a/documentation b/documentation @@ -22,21 +22,31 @@ Inline pattern There are several pattern you can use to highlight your text: - * Emphasis - * Surround your text with `*` or `_` to get *emphasis* text: - This *is* cool. - This _is_ cool, too. - * Surround your text with `**` or `__` to get **strong** text: - This **is** cool. - This __is__ cool, too. - * inline Code +* Emphasis + * Surround your text with `*` or `_` to get *emphasis* text: + This *is* cool. + This _is_ cool, too. + * Surround your text with `**` or `__` to get **strong** text: + This **is** cool. + This __is__ cool, too. + * Surround your text with `***` or `___` to get ***strong and emphasis*** text: + This ***is*** cool. + This ___is___ cool, too. + * But this example won't work as expected: + ***Hello** you* + This is a wontfix bug because it would make the source to complex. + Use this instead: + ***Hello*** *you* - You can produce inline code with surrounding `\`` or `\`\`` - Use `rm -rf /` if you're a N00b. +* inline Code - Use ``rm -rf /`` if you're a N00b. + You can produce inline code with surrounding `\`` or `\`\`` - `\`\`` makes it possible to use Backticks without backslashing them. + Use `rm -rf /` if you're a N00b. + + Use ``rm -rf /`` if you're a N00b. + + `\`\`ABC\`\`` makes it possible to use Backticks without backslashing them. Titles @@ -164,27 +174,28 @@ block. Other interesting stuff ----------------------- - * to insert a horizontal rule simple add `- - -` into an empty line: +* to insert a horizontal rule simple add `- - -` into an empty line: + + Hello + - - - + Hello2 - Hello - - - - - Hello2 + Result: + <p> + Hello + <hr /> + + Hello2</p> +* You can escape the following pattern to avoid them from being interpreted: - Result: - <p> - Hello - <hr /> - - Hello2</p> - * You can escape the following pattern to avoid them from being interpreted: - `` \ ` * _ { } [ ] ( ) # + - . ! `` + \ ` * _ { } [ ] ( ) # + - . ! - * To force a linebreak simple add two spaces to the end of the line: +* To force a linebreak simple add two spaces to the end of the line: - No linebreak - here. - But here is - one. + No linebreak + here. + But here is + one. embed HTML ---------- diff --git a/smu.c b/smu.c @@ -433,29 +433,28 @@ doshortlink(const char *begin, const char *end, int newblock) { int dosurround(const char *begin, const char *end, int newblock) { unsigned int i, l; - const char *p, *ps, *q, *qend; + const char *p, *start, *stop; for(i = 0; i < LENGTH(surround); i++) { l = strlen(surround[i].search); - if(end - begin < l || strncmp(begin, surround[i].search, l) != 0) + if(end - begin < 2*l || strncmp(begin, surround[i].search, l) != 0) continue; - for(ps = surround[i].search; *ps == '\n'; ps++); - l = strlen(ps); - p = begin + strlen(surround[i].search) - 1; + start = begin + l; + p = start - 1; do { - p = strstr(p + 1, ps); + p = strstr(p + 1, surround[i].search); } while(p && p[-1] == '\\'); - if(!p || p == end) + if(!p || p >= end) continue; fputs(surround[i].before, stdout); - for(q = begin + strlen(surround[i].search); *q == ' '; q++); - for(qend = p-1; *qend == ' '; qend--); + if(!(stop = strstr(start, surround[i].search)) || stop >= end) + continue; if(surround[i].process) - process(q, qend + 1, 0); + process(start, stop, 0); else - hprint(q, qend + 1); + hprint(start, stop); fputs(surround[i].after, stdout); - return p - begin + l; + return stop - begin + l; } return 0; }