Commit graph

262 commits

Author SHA1 Message Date
Vicent Marti
429546d2cd Add missing Stack code
Oops... Forgot about it.
2011-09-01 06:26:30 +02:00
Vicent Marti
b9670c1570 Prefer header lines to item lists
If a line is followed by a header line, do always render it as a header,
even if it begins with a number or slash.
2011-09-01 06:11:33 +02:00
Vicent Marti
c8e42e1eaf Fix #57 "Issue with emphasized links"
The closing character was mismatched.
2011-09-01 05:50:40 +02:00
Vicent Marti
fcfb81f24d Fix #56 "nested strong/em"
I don't understand what was that check doing there, but it makes no
sense. Emphasis parsing is non-greedy, so it should always close on the
nearest match.
2011-09-01 05:43:05 +02:00
Vicent Marti
13359d5898 Create a standalone markdown object
This was the next logical step on the interface revamp for 2.0.

The old API was doing very fishy stuff with allocation: the `rndr`
struct was being called once for every `sd_markdown` call, and the
amount stack space filled with it was just inappropriate (256 bytes
just from the char table and 300 more from pointers in the callback
table).

By creating the renderer on the heap and reusing it, we save a lot of
time on initialization code, at the expense of not being able to
change the enabled extensions on each parse (something which is not
that common anyway).

This will make wrapping Sundown in higher level languages more direct,
given that every other language has OO design, which maps better to
the concept of a reusable renderer.
2011-09-01 05:02:26 +02:00
Vicent Marti
fa42843852 Drop dependency on the old array.c
The old array was not quite optimal, and was not used optimally either.

- The `struct array` that was used for accessing link references has
been replaced with a minimal, fixed-width hash table. This should
be much more straightforward for small documents.

- The `struct parray` used as a string pool has been replaced with
a fast-growing stack. Realloc'ing once per push has never been a
good idea anyway.

Yey for losing boilerplate!
2011-09-01 04:32:38 +02:00
Vicent Marti
9988a0123c Perfect hashing for HTML block names
Because fuck binary searches, that's why.
2011-08-30 17:46:06 +02:00
Vicent Marti
714348714d Cleanup table parsing 2011-08-08 21:11:42 -07:00
Neil Williams
6cfe32ade8 Use <th> for table header cells. 2011-08-08 20:57:35 -07:00
Vicent Marti
a0b0a11d0e markdown: Fix codespan skip
Backport from Upskirt. Thanks Natacha!
2011-08-08 12:35:50 -07:00
Vicent Marti
dd979be0ed Experimental: New Renderer management
No more dynamic allocation. Explicit is better than implicit.
2011-08-04 16:22:38 +02:00
Vicent Marti
1d6f114b86 Sup bro
Add support for the Superscript extension.
2011-07-25 02:15:43 +02:00
Vicent Marti
251d02a260 i += 1 is boring 2011-07-19 21:45:38 +02:00
Vicent Marti
e3e2f5e53d Fix invalid memory read in find_emph_char 2011-07-19 21:44:43 +02:00
Vicent Marti
cdfaee1993 smartypants: Do not replace inside <code> blocks
Following the original Smartypants code, do not do SmartyPants
replacements inside of <code>, <pre>, <kbd> and <script> blocks.
2011-07-19 21:32:14 +02:00
Vicent Marti
7cba7b6ba3 Add figure as block-level tag 2011-07-19 20:45:11 +02:00
Brandon Croft
3b8605f248 fix autolink.h include guard 2011-07-19 03:29:33 -06:00
Vicent Marti
5d201dbcdc Rename Upskirt to Sundown
It is by the goodness of God that in our country we have those
three unspeakably precious things:

    freedom of speech,
    freedom of conscience,
    and the prudence never to practice either of them.

                -- Mark Twain, Following the Equator (1897)
2011-07-19 01:10:05 +02:00
Vicent Marti
3b0a641094 Dashes are allowed in domain names! 2011-06-19 20:58:36 +02:00
Vicent Marti
76fd65c396 autolink: Better domain name checker 2011-06-11 16:18:18 +02:00
Vicent Marti
cf5cb52ae9 Remove html_autolink.c
This file has been moved to Rinku
2011-06-11 16:17:51 +02:00
Vicent Marti
b3957282ce autolink: Cleanup API 2011-06-09 02:58:06 +02:00
Vicent Marti
8af37fd1b4 autolinking: fix bugs 2011-06-08 23:11:58 +02:00
Vicent Marti
cbb7fb53c6 Create an autolinking API for external applications 2011-06-08 18:30:37 +02:00
Vicent Marti
79e9a7ac36 More strict email autolinking 2011-06-02 23:54:52 +02:00
Vicent Marti
c631d97c11 Fix delimiter parsing in autolinking 2011-06-02 22:52:49 +02:00
Vicent Marti
268e9b411b Autolinking bonanza
This autolinker is not only twice as fast, it also passes the Rails
autolinking test suite. Supports email addresses and autolinks without
`http://` prefix.
2011-06-02 21:17:28 +02:00
Krzysztof Kowalczyk
22ccf400a9 msvc fixes 2011-06-01 19:30:19 +02:00
Krzysztof Kowalczyk
7b56710f80 spelling fixes in comments 2011-06-01 19:29:54 +02:00
Vicent Marti
b1450fdf8f Escape only the characters defined by the standard
ROCK ON MOTHERFUCKERS \m/
2011-05-20 03:57:30 +03:00
Vicent Marti
f20823e175 Even smarter autolink matching 2011-05-18 22:16:13 +03:00
Vicent Marti
2275e90888 Bump version number 2011-05-17 15:32:55 +03:00
Vicent Marti
0d26f74fba Match version number with Redcarpet's 2011-05-17 15:32:00 +03:00
Vicent Marti
29e4c66e90 Fix numbers in email links
Never forget about <133h4x0r69@hotmail.com> and the likes.
2011-05-17 15:32:00 +03:00
Vicent Marti
fb517dcabf Add support for versioning 2011-05-11 20:07:28 +03:00
Vicent Marti
cf81b53ee8 Do not call bufgrow unless necessary 2011-05-07 21:24:38 +03:00
Vicent Marti
a8cb69438c Add MKDEXT_SPACE_HEADERS extension 2011-05-06 22:28:47 +03:00
Vicent Marti
7cb1a9e027 Do not inline bufgrow() and bufput()
These two methods are no longer used by the SmartyPants parser, so
there's no performance benefit when inlining them.

This reverts commit 8a19bdd635.
2011-05-05 18:30:13 +03:00
Vicent Marti
9fa8438a41 Use a two-layer array for active character callbacks
Do not stick 2KB of NULL values inside the `struct render`, use a double
lookup to character -> ptr. This makes the struct 8 times smaller.
2011-05-05 17:40:04 +03:00
Vicent Marti
35a580ffce More lax support for Table headers
The separation row can now be separated with spaces from the column
borders.
2011-05-03 00:05:24 +03:00
Vicent Marti
bb9dbe8b5f Rename strict emphasis flag again
'Cause I can and I like pretty names
2011-04-30 03:54:29 +03:00
Vicent Marti
d2ffc352f4 More agressive buffer management
Use two different buffer queues for span level and block level
elements, with different step sizes for the buffers in each queue.
2011-04-30 03:40:02 +03:00
Vicent Marti
0d11119240 Always print header and footer
Even on empty Markdown documents
2011-04-30 03:05:24 +03:00
Vicent Marti
daedc8e8ce Much more solid autolinking
We now capture links when enclosed in parenthesis and other punctuation
chars.
2011-04-30 02:18:14 +03:00
Vicent Marti
16b4342f24 Lax emphasis is the default
With no extension flags, Upskirt now matches the behavior of Gruber's
Markdown when parsing emphasis without surrounded spaces.
2011-04-28 13:33:23 +03:00
Vicent Marti
1d84eccd45 Do not segfault when unescaping empty links 2011-04-27 15:18:55 +03:00
Vicent Marti
8f0988ab84 Allow escaping characters inside of URL links 2011-04-27 04:26:42 +03:00
Vicent Marti
018fea055e Fix autolink URI parsing and generation 2011-04-26 00:14:30 +03:00
Ben Noordhuis
8a19bdd635 20-25% of CPU time is spent in bufputc() and bufgrow(). Inline for great performance justice. 2011-04-26 00:14:26 +03:00
Ben Noordhuis
5985563743 Fix memory leaks in bufrelease() and bufreset(). 2011-04-25 02:03:27 +02:00
Ben Noordhuis
fc8c15ede5 Fix memory leak in ups_markdown(). 2011-04-25 02:01:05 +02:00
Vicent Marti
ba88cb6ea3 Saner code blocks
- The language detection from shebangs has been dropped. Use your
highlighting library to detect this kind of things.

- New flags XHTML_GITHUB_CODEBLOCKS, which generates safer codeblocks
without letting the user specify custom CSS classes.
2011-04-23 00:38:10 +03:00
Vicent Marti
f3fcabda16 Make autolinking case-insensitive 2011-04-22 14:49:48 +03:00
Vicent Marti
4e8cb77e7c Improve quoting/striking through inner spans
- Smart quotes with Smartypants now work across different text spans,
	e.g. This "[link][foo]" gets quoted properly

- Strikethrough has now its own rendering callback.
2011-04-22 14:35:32 +03:00
Vicent Marti
3118304d80 Allow newlines inside of link declarations
This makes parsing more lax to support syntax like:

	* Edit `~/.wmii/config.yaml` to your liking. For a real-life example,
	see [my personal configuration file](
		http://github.com/sunaku/wmiirc/blob/personal/config.yaml
	).
2011-04-21 23:53:45 +03:00
Vicent Marti
129bf7c380 Remove first HTML block lookup pass again
Adding it broke the official Markdown test suite
2011-04-21 23:45:19 +03:00
Vicent Marti
cc565992ed Honor fenced code block standards 2011-04-21 23:39:17 +03:00
Vicent Marti
550b98b2ea Lax HTML blocks are now a MD extension 2011-04-18 22:16:59 +03:00
Vicent Marti
8dd10d10d4 Refactor buffer management 2011-04-16 18:05:24 +03:00
Vicent Marti
70f7b76700 More strict language declarations 2011-04-16 17:48:32 +03:00
Vicent Marti
481b099032 Add support for syntaxes in fenced code blocks 2011-04-16 13:14:28 +03:00
Vicent Marti
e1e5ea96ff Initial commit 2011-04-15 11:36:46 +03:00