forked from hypernumbers/erlmarkdown
-
Notifications
You must be signed in to change notification settings - Fork 24
/
README.html
263 lines (157 loc) · 8.25 KB
/
README.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
<h1>DEVELOPER NOTES</h1>
<p>Erlmarkdown uses generated tests. There are 2 levels of generation:
<code>./tests/index.html</code> uses <code>generate_tests.js</code> to take a set of input test cases
and output an EUnit test file for Erlang.</p>
<p>Some of the tests in <code>generate_tests.js</code> are hand written and some have been generated from the MarkdownSharp test suites.</p>
<p>The MarkdownSharp test suites were originally downloaded from:
<code>http://code.google.com/p/markdownsharp/</code></p>
<p>They can be found in <code>./tests/markdowndownsharp/</code></p>
<p>The code that generates tests from them in in the escript file:
<code>./priv/make_tests</code></p>
<h1>Release Notes</h1>
<h2>Version 1.1.12 Production Bug Fix</h2>
<p>Bug fix for "<>"</p>
<h2>Version 1.1.11 Production Bug Fix</h2>
<p>Bug Fix for tags with a couple more shonky unfixed whitespace bugs</p>
<h2>Version 1.1.10 Production Bug Fix</h2>
<p>Shonk Alert! A couple of whitespace bugs remain unfixed</p>
<h2>Version 1.1.9 Production Bug Fix</h2>
<p>Wasn't handling special white space inserted by the <strong><em>PARSER</em></strong> (don't ask!)</p>
<h2>Version 1.1.8 Production Bug Fix</h2>
<p>Some blocktag/html errrors fixed</p>
<h2>Version 1.1.7 Production Bug Fix</h2>
<p>URl's were not html encoded.</p>
<p>Failing tests of 1.1.5 not addressed in this release</p>
<h2>Version 1.1.6 UTF8 Support</h2>
<p>Can now specify a UTF 8 entry point - this addresses the non-breaking space/ascii 160 problem of Version 1.1.3</p>
<p>Failing tests of 1.1.5 not addressed in this release</p>
<h2>Version 1.1.5 (Interim)</h2>
<p>Integration of additional tests from markdownsharp:
http://code.google.com/p/markdownsharp/source/browse/trunk/MarkdownSharpTests/#MarkdownSharpTests/testfiles%3Fstate%3Dclosed</p>
<p>17 currently failing which is why this is an interim release</p>
<h2>Version 1.1.4 Production Bug Fix</h2>
<p>Fixes 4 sets of bugs:</p>
<ul>
<li>you can now put an image inside an href
` (eg [![alt](/img/some.png)](http://example.com/dir/)`
</li>
<li>text in ordered and unordered lists now renders correctly
eg bold and italic etc
</li>
<li>the 'you can't have 2 code segments in a single line' bug is fixed</li>
</ul>
<h2>Version 1.1.3 Production Bug Fix</h2>
<p>Under certain circumstances non-breaking spaces (ascii 160) could wedge
the server.</p>
<p>fuzz.erl rejigged to make for better diagnostics and run with 1,000,000 random
characters against markdown.</p>
<p><strong><em>CAVEAT</em></strong>: having serious doubts as to how erlmarkdown will handle unicode</p>
<h2>Version 1.1.2 Production Bug Fix</h2>
<p>A number of failures have been noticed in production of bits of markdown
failing to convert.</p>
<p>A fuzz generator has been added to produce large amounts or random characters
with particular emphasis on characters that are 'structural' in markdown.
50,000 random character strings found 3 or 4 new bugs which have been fixed
in this release.</p>
<h2>Version 1.1.1 Production Bug Fix</h2>
<p>Fixed a bug involving underscores/formatting characters inside inline
references and images</p>
<h2>Version 1.1 Production Bug Fix</h2>
<p>In the beginning erlmarkdown was an implementation of markdown written to spec</p>
<ul>
<li>the spec being the daring-fireball syntax page.</li>
</ul>
<p>BUT it soon transpired that there were significant differences between <em>our</em>
implementation of the spec and that of showdown (from attacklabs.net). Given
that the client-side markdown and the server-side markdown need to work together
we switched the erlang code from being an implementation of the spec to being
a server-side implementation of showdown.</p>
<p>BUT the WMD dialog box produces (as input) code which is 'off spec' (but which
showdown supports), <strong>so</strong>...</p>
<p>Version 1.1 is tested for compatibility with:</p>
<ul>
<li>showdown</li>
<li>the markdown input produced by the WMD dialog box editor</li>
</ul>
<p>We are tracking the release of WMD <strong>and</strong> showdown from this version on github:
<a href="http://github.com/derobins/wmd/commit/980f68797307d28f0541868c740974cb2eeb1209">http://github.com/derobins/wmd/commit/980f68797307d28f0541868c740974cb2eeb1209</a></p>
<p>We are no longer tracking the showdown code on attacklabs.net</p>
<p>As a result of this is that the list of ERATTA AND KNOWN BUGS is a bit longer</p>
<h2>Version 1.0 Production Release</h2>
<p>This is a major rewrite. There is little point writing servers-side markdown
without a client-side markdown to preview it.</p>
<p>This markdown will now track showdown from Attack Labs as its twin
implementation.</p>
<p><a href="http://attacklab.net/showdown/">http://attacklab.net/showdown/</a></p>
<p>To that end the test suite has been repurposed to test
compatibility with showdown. The current release of showdown used is V0.9</p>
<p>The directory <code>/tests</code> now contains an webpage <code>index.html</code> which generates
the tests (ie the file <code>markdown_tests.erl</code> in <code>/src</code>).</p>
<p><code>index.html</code> loads a javascript file <code>generate_tests.js</code> which holds a list of
strings which it generates the tests from (ie testing if markdown produces the
same output as showdown...)</p>
<p>There are a number of places where markdown is not <em>whitespace compatible</em> with showdown - you can inspect these by looking for commented out tests in
<code>generate_tests.js</code>. There are also a number of showdown bugs or other
inconsistencies which also show up as commented out tests in
<code>generate_tests.js</code>.</p>
<p>The biggest single difference is that showdown doesn't escape any html tags
by default whereas markdown has a whitelist of blocklevel tags which it doesn't
escape (see the function <code>markdown:is<em>block</em>tag/1</code>).</p>
<p>(Other) Known Bugs and Errata:
as per the previous versions (see bottom of document)</p>
<p>There are 261 Unit Tests.</p>
<h2>Version 1.0 RC1.1 First Point Release</h2>
<p>Various bug fixes:</p>
<ul>
<li>supports short inline URL references of the form 'some text <a href="http://sub.dom.tld:1234/some/path\\t\\n" title="Title">id</a> some more'</li>
<li>fixes bugs with lines containing markdown only like '#', '>', '=' and '-'</li>
<li>fixes a bug where a terminating '\n\n' would mean each line came back reversed</li>
<li>fixes various 'atx header' bugs</li>
<li>fixes bugs where lines start with an emphasis or strong marker (thanks to Tom McNulty)</li>
</ul>
<p>Unit tests bumped up to 255.</p>
<h2>Version 1.0 RC1 Production Release Candidate</h2>
<p>This version comes with 226 Unit Tests and is being released for pre-production testing.</p>
<p>It also has 1 System Test - this document :)</p>
<h1>Known Bugs And Errata</h1>
<h2>1 This is a valid markdown for references</h2>
<p>The title wrap to a new line is not supported in this release.</p>
<h2>2 Character Escaping</h2>
<p>I'm not entirely clear how character escaping should work for:</p>
<pre><code>\ backslash
` backtick
</code></pre>
<ul>
<li>asterisk
_ underscore
{} curly braces
[] square brackets
</li>
</ul>
<pre><code>() parentheses
# hash mark
</code></pre>
<ul>
<li>plus sign</li>
<li>minus sign (hyphen)</li>
</ul>
<pre><code>. dot
! exclamation mark
</code></pre>
<p>I escape them only in context.</p>
<h2>3 Anti-spam mailto's</h2>
<p>The official release obfuscated e-mail addresses, this don't :(</p>
<h2>4 Nesting</h2>
<p>Showdown supports nested <ul>'s, <ol>'s and <blockquote>'s - erlmarkdown doesnt (yet)...</p>
<h1>What It Is</h1>
<p>This is an Erlang implementation of Markdown.</p>
<p>See http://daringfireball.net/projects/markdown/ for details</p>
<h1>License</h1>
<p>The license is the same as the original Markdown</p>
<h2>Musical Colophon</h2>
<p>'My Song' when I wrote this was:
<a href="http://open.spotify.com/track/6mqdunuFFSODHKcpDTFvAj">http://open.spotify.com/track/6mqdunuFFSODHKcpDTFvAj</a></p>
<p>'Generic Song' to play when you find a bug in my code:
<a href="http://open.spotify.com/track/5YLa8jWik5OqgBoSix3NUp">http://open.spotify.com/track/5YLa8jWik5OqgBoSix3NUp</a></p>
<p>'Generic Song' about how I feel about myself when you find a bug:
<a href="http://open.spotify.com/track/2RbJj7D5pRff82NtDDSwah">http://open.spotify.com/track/2RbJj7D5pRff82NtDDSwah</a></p>