all repos — grayfriday @ e7910a813fbd94acce2680899175fa106b7b1787

blackfriday fork with a few changes

e7910a81
Merge pull request #327 from russross/readme-update

Update README for v2
Vytautas Šaltenis vytas@rtfb.lt
Sat, 06 May 2017 19:33:15 +0300
af57319f
Merge pull request #328 from russross/v2-functional-opts

Change the public interface to use functional options
Vytautas Šaltenis vytas@rtfb.lt
Sat, 06 May 2017 19:31:47 +0300
5ebfae50
Merge pull request #331 from russross/v2-fix-180-again

Fix #180 again
Vytautas Šaltenis vytas@rtfb.lt
Tue, 14 Feb 2017 21:40:27 +0200
b98e3068
Merge pull request #332 from russross/v2-rename-headers-to-headings

Fix all headings wrongly referred to as headers
Vytautas Šaltenis vytas@rtfb.lt
Tue, 14 Feb 2017 21:17:32 +0200
ad7f7c56
Merge pull request #322 from russross/v2-perf-tweaks

V2 perf tweaks
Vytautas Šaltenis vytas@rtfb.lt
Thu, 02 Feb 2017 17:08:19 +0200
a4dd8ad4
Merge pull request #324 from russross/move-toc-to-html

Move TOC and OmitContents to HTML flags
Vytautas Šaltenis vytas@rtfb.lt
Wed, 07 Dec 2016 21:07:04 +0200
3d1baecb
Merge pull request #323 from russross/ditch-skip-style

Ditch SkipStyle flag
Vytautas Šaltenis vytas@rtfb.lt
Wed, 07 Dec 2016 21:00:43 +0200
52676fb0
Merge pull request #314 from Ambrevar/v2consttype

v2: Add missing type to TableAlignment* constants
Vytautas Šaltenis vytas@rtfb.lt
Sun, 09 Oct 2016 10:26:09 +0300
2b483a85
Merge pull request #310 from Ambrevar/v2FixWalkNoContainer

v2: Fix walk with non-container root nodes
Vytautas Šaltenis vytas@rtfb.lt
Sat, 08 Oct 2016 18:24:09 +0300
6141d5fd
Merge pull request #306 from russross/v2-add-links-to-footnotes

V2 add links to footnotes
Vytautas Šaltenis vytas@rtfb.lt
Mon, 03 Oct 2016 08:14:53 +0300
64d8e9ed
Merge pull request #300 from Ambrevar/rmLaTeX

v2: Remove the LaTeX renderer stub and point to Ambrevar's implementation
Vytautas Šaltenis vytas@rtfb.lt
Mon, 12 Sep 2016 19:57:33 +0300
b91b5719
Merge pull request #302 from russross/v2-move-footnotest-to-html

v2: move footnotes to html
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 11:32:03 +0300
0a029cbe
v2: Run the reference benchmark on Travis (#304)

* Run the reference benchmark on Travis

So that we could have a historic record of performance.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 05 Sep 2016 19:52:01 +0300
91753e8b
v2: Extract package level documentation to doc.go (#303)

* Extract package level documentation to doc.go

Plus elaborate the documentation a bit.

* Fix grammar
Vytautas Šaltenis vytas@rtfb.lt
Mon, 05 Sep 2016 10:25:10 +0300
6fd47b3b
v2: Only split when inline callbacks consume some bytes (#301)

* Only split when inline callbacks consume some bytes

The former hacks around maybeLineBreak and Smartypants are no longer
needed.
The algorithm has been streamlined: shorter, simpler, faster.
The 'currBlock' field of the parser is gone.

* Remove spurious logs
Pierre Neidhardt ambrevar@gmail.com
Fri, 19 Aug 2016 11:26:33 +0530
57606563
Merge pull request #299 from Ambrevar/v2lint

html.go: Lint RenderNode()
Vytautas Šaltenis vytas@rtfb.lt
Fri, 12 Aug 2016 09:13:22 +0300
9926922c
Merge pull request #295 from Ambrevar/v2FactorSmarty

v2: Factor Smartypants to HTML
Vytautas Šaltenis vytas@rtfb.lt
Wed, 10 Aug 2016 23:01:58 +0300
9bff4103
Merge pull request #293 from Ambrevar/v2ExportFuncs

v2: Export tree manipulation functions
Vytautas Šaltenis vytas@rtfb.lt
Wed, 10 Aug 2016 09:21:33 +0300
37141d5b
Merge pull request #296 from Ambrevar/v2icon

v2: Add Icon parameter to the HTML renderer
Vytautas Šaltenis vytas@rtfb.lt
Tue, 09 Aug 2016 22:22:31 +0300
c9f76b53
Merge pull request #294 from Ambrevar/v2TOC2Renderer

v2: Move TOC generation to the HTML Renderer
Vytautas Šaltenis vytas@rtfb.lt
Tue, 09 Aug 2016 22:06:04 +0300
0f3eafdd
Merge pull request #287 from Ambrevar/v2walkfix

v2: Fix walk so that it does not step outside the root node
Vytautas Šaltenis vytas@rtfb.lt
Fri, 05 Aug 2016 09:17:14 +0300
2e23e31b
Fix typo
Vytautas Šaltenis vytas@rtfb.lt
Mon, 01 Aug 2016 20:52:17 +0300
bb31c533
Merge pull request #286 from russross/add-benchmark

Repeat a run of reference tests under benchmark
Vytautas Šaltenis vytas@rtfb.lt
Sun, 31 Jul 2016 10:22:15 +0300
a9baf845
Unpublish and rename LinkType constants (#285)

* Unpublish and rename LinkType constants

The constants are only used in the parsing phase, they are not recorded
in the AST directly, so make them private. Improve their names along the
way. Fix tagLength to return two values instead of taking an output
parameter.

* autoLinkType -> autolinkType

And remove unnecessary comment.
Vytautas Šaltenis vytas@rtfb.lt
Fri, 29 Jul 2016 08:01:31 +0300
ca4bf013
Merge pull request #284 from russross/fix-lint

Fix most of lint errors on v2
Vytautas Šaltenis vytas@rtfb.lt
Thu, 28 Jul 2016 19:45:39 +0300
ce05617f
Return *Latex from NewLatexRenderer
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 09:47:58 +0300
a4f1e5c7
Limit Node.String() to print itself, no children
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 09:44:24 +0300
89653c99
Merge pull request #274 from Ambrevar/v2misc

v2: Implicit interface and Stringer
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 09:39:58 +0300
fd97b7d3
Merge pull request #282 from russross/v2-fix-279

v2: Fix issue in fenced code block pre-processing.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 16 Jul 2016 10:25:34 +0300
6291a00f
Remove dead fields from HTMLRenderer
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Jul 2016 07:33:21 +0300
2f1f0b6b
Add RenderNode to Renderer interface
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Jul 2016 07:32:16 +0300
cb6bd672
Remove dead HTMLWriter code
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Jul 2016 22:02:22 +0300
f90a576a
Untangle some mess with attribute escaping

1. Remove unused preserveEntities parameters
2. Move attrEscape() implementation inside esc()
3. Delegate most of esc() work to escCode()
Vytautas Šaltenis vytas@rtfb.lt
Sat, 02 Jul 2016 10:45:06 +0300
ab20da6e
Merge pull request #275 from Ambrevar/v2css

v2: Fix empty path to CSS
Vytautas Šaltenis vytas@rtfb.lt
Sat, 02 Jul 2016 10:37:00 +0300
7ee035ea
Merge pull request #276 from russross/v2-move-test-helpers-to-test-pkg

v2: Only include test helpers inside test package.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 02 Jul 2016 10:31:14 +0300
3575453f
Move a couple helpers to parser where they're used
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:51:16 +0300
76d8c71d
Unduplicate attrEscape funcs
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:50:33 +0300
e95d2306
Rename HTML to HTMLRenderer
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:45:40 +0300
c26fdef4
Move html entity regexp to where it's used

And unify regexp variable names.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:28:05 +0300
c207eca9
Clean up Renderer interface: remove all callbacks

We now expose the structure of the document in the form of AST, there's
no longer need to have all those callbacks to represent structure.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:22:38 +0300
c9ea588e
Convert uint32 fields to ints

The former is a bit too inconvenient despite being more accurate.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:15:15 +0300
98ddf989
Get rid of unneeded method in Renderer
Vytautas Šaltenis vytas@rtfb.lt
Mon, 11 Apr 2016 11:12:41 +0300
24e146a7
Make HTMLRendererParameters a substruct of HTML
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 14:44:14 +0300
9f5de868
Go style: take advantage of zero value init
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 14:34:30 +0300
1303ea14
Cleanup renderer constructors

Move all parameters under HTMLRendererParameters struct, rename
constructors to New{HTML|Latex}Renderer.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 14:18:32 +0300
4f8d2881
Remove a bit of cruft from HTML renderer
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 13:54:57 +0300
123179b8
Make Markdown the most general API call

Get rid of MarkdownOptions.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 13:45:00 +0300
83b4cb60
Implement SkipHTML, add test
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 12:37:02 +0300
7e9a5746
Implement SkipStyle, add test

Fix a bug in findHtmlTagPos introduced with e02c392d.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 12:13:37 +0300
fecfec20
Implement SkipImages and add test
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 11:12:30 +0300
9da90c59
Allow NodeVisitor to have some control over traversal

Make NodeVisitor return status and decide upon it which node to go to
next. So far, this allows to skip subtrees and quit early.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 11:10:46 +0300
e7d45749
Give node visitor callback type a name and docs
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 10:08:50 +0300
76062d42
Fixup broken test reporting

Dereference the pointer introduced in f35fae8.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 10:00:34 +0300
6bd31203
Add test for UseXHTML
Vytautas Šaltenis vytas@rtfb.lt
Tue, 05 Apr 2016 09:51:46 +0300
106f1ec1
Add test for CompletePage flag

The implementation for CompletePage was committed with d7f1878 by
accident, following up with the test.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 14:17:16 +0300
607478a8
Implement SkipLinks, add test
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 14:08:35 +0300
0774c060
Get rid of unnecessary test helpers
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 14:00:26 +0300
f35fae81
Extract panic recovery code

Call recover() in a single place so it could be easily turned off when
not needed.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 13:13:57 +0300
f1fd3a64
Do away with doTestsInlineParam

What used to be doTestsBlockWithRunner is now renamed to
doTestsWithRunner and is good for both block and inline tests.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 12:18:06 +0300
0c7120d6
Fix old omission in doTestsBlockWithRunner

It calls the provided runner in the -short run, but the standard runner
in the complete run. Fix that.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 12:09:36 +0300
a658caac
Use TestParams in block tests

The different testing function interfaces get unified a bit closer,
runnerWithRendererParameters completely eliminated.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 11:45:36 +0300
b069de62
Wrap inline test parameters in a struct

Take advantage of zero value initialization.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 11:18:50 +0300
15e052e4
Move all testing helper funcs in one place

Moved verbatim except for uncommented panic recovery section in the
doTestsInlineParam function.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 10:41:05 +0300
d7f18785
Implement TOC and OmitContents

Move these two flags from HTML renderer's flags to extensions. Implement
both since they were not yet implemented in the AST rewrite. Add tests.

Note: the expected test strings differ very slightly from v1. The HTML
produced by v2 has a few extra newlines compared to the old one, but
it's now uniform with other sections of the generated document. If the
newline placement gets cleaned up in the future, this will get fixed
automatically, since the renderer is agnostic about the TOC list.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Apr 2016 10:14:49 +0300
0b697962
Go style: more Html -> HTML renames
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 15:37:21 +0300
02a5ce37
Go style: Html{Block|Span} -> HTML{Block|Span}
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 13:15:47 +0300
32802dba
Go style: rename Toc to TOC
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 13:12:38 +0300
f1361aa0
Make ForEachNode func a Walk method on Node
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 12:36:56 +0300
04673c9f
Improve documentation for Node struct
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 12:33:05 +0300
8a4d4fa0
Move Header-related fields to a nested struct
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:48:52 +0300
bcd5b5b7
Move table cell fields to a nested struct
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:46:09 +0300
4ba99193
Store cell alignment in own type instead of int
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:44:59 +0300
67f85cf5
Move code block fields to a nested struct
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:29:15 +0300
c8eb7337
Fix typos
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:22:13 +0300
60026cc3
Make ListData a nested struct instead of pointer
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 11:21:25 +0300
2a073864
Rename HtmlFlags to HTMLFlags to adhere to Go style
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 10:49:23 +0300
71fe9a19
Remove dead code
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 10:48:25 +0300
a55b2615
Run Smartypants as a separate pass over the AST

Separate Smartypants somewhat from the HTML renderer. Move its flags
from HtmlFlags to Extensions (probably should be moved to its own set of
flags, but not now). With that done, do a separate walk of the tree and
either run Smartypants processor if it's enabled, or simply escape text
nodes.
Vytautas Šaltenis vytas@rtfb.lt
Fri, 01 Apr 2016 10:44:22 +0300
7869a127
Combine two Smartypants structs into one

Combine smartypantsRenderer and smartypantsData into one struct. Make
action funcs methods on that struct.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 31 Mar 2016 21:40:37 +0300
4a7ff562
Rename Html to HTML to adhere to Go style
Vytautas Šaltenis vytas@rtfb.lt
Thu, 31 Mar 2016 13:54:09 +0300
fd2d69de
Make renderer write to an explicit io.Writer
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 21:13:02 +0300
4c11a2a6
Expose Parse func that grabs input and returns AST
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 19:40:10 +0300
c1011c8a
Remove unneeded reference to Renderer from parser
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 19:35:53 +0300
4d74c6a0
Make common flags and extensions public

Add DefaultOptions convenience variable.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 19:29:00 +0300
dc7d4b68
Remove some cruft
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 15:56:53 +0300
0382dab0
The single node renderer is a separate func now

A default HTML renderer for a single node is now easily accessible.
Makes it easy to fall back to the default behavior when writing custom
HTML renderers.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 15:48:43 +0300
886a1405
Extract local funcs/vars into methods/members
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 15:37:03 +0300
6fe811b6
Fix TitleBlock test

It seems like the implementation of the extension was rather sloppy and
didn't adhere to the style common to the rest of Blackfriday.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 15:05:24 +0300
a32ecdb8
Fix footnote tests

This commit does some changes to the test suite. The changes are only to
the newlines. Turns out the former implementation of footnotes produced
slightly different spacing when rendering the footnotes list. The new
implementation produces the list that is compatible with the rest of the
package.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 15:03:11 +0300
70124f1e
Enable full AST construction, use the new renderer

Connect the block and inline parsers. Most of the tests now pass, only a
couple fail, they need fixes in the test suite.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 14:47:30 +0300
eb70b232
Construct AST WIP: add inline-level nodes

Parse the content of the block nodes for inline markdown, decorate the
tree with what's found. Tests still broken, need to connect the dots.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 14:38:19 +0300
7c95b7a1
Construct AST WIP: add block-level nodes

Build a partial tree by adding block nodes. The block nodes will then be
traversed and inline markdown parsed inside each of them. Tests are
broken at this point until the full tree is constructed.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 12:57:12 +0300
94893247
Add a new renderer from AST

This is the new renderer that walks AST and renders everything to a
buffer. Completely covers all the functionality of the previous renderer
and will likely replace it.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 11:57:02 +0300
7846a310
Remove unused code
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 11:54:29 +0300
2bbed304
Add AST data structures

The main Node structure that holds every AST node and some supplementary
substructs. A bit of helper code to handle the nodes.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 30 Mar 2016 11:28:59 +0300
f8378658
Fix rendering of tables

Add proper capture groups to fix the order of bits and pieces.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 09 Nov 2015 21:57:27 +0200
d1b544e2
HACK: render TOC the old way, backup and truncate output
Vytautas Šaltenis vytas@rtfb.lt
Mon, 09 Nov 2015 21:28:23 +0200
97235182
Enable writing plain text straight to output

It's only used in a single place and should probably be refactored away,
but this workaround is OK for now.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 09 Nov 2015 21:14:32 +0200
114d6b0d
Eradicate 'out' parameter in top level code
Vytautas Šaltenis vytas@rtfb.lt
Thu, 05 Nov 2015 22:00:37 +0200
0dfcd3be
Remove all uses of 'out' in Latex renderer
Vytautas Šaltenis vytas@rtfb.lt
Thu, 05 Nov 2015 21:55:49 +0200
7a97ffe6
Remove almost all uses of 'out' in HTML renderer
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 22:49:18 +0200
91771dc3
Redirect output to a capture buffer where necessary

Use CaptureWrites where output should go to a temp buffer instead of the
final output.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 22:18:46 +0200
08233481
Fix Begin/EndHeader to use the new 'out'-less interface

Remove the 'out' parameter. Also, instead of returning and passing the
position of TOC, use CopyWrites to capture contents of the header and
pass that captured buffer instead.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 22:14:02 +0200
dce6df90
Add infrastructure to collect output in a buffer

Add a structure to collect output in a buffer (replaces what used to be
the 'out' parameter all over the place).

Notable things about this struct are the captureBuff and copyBuff
buffers. They're intended to redirect all the output (captureBuff) or
make a copy of all the output (copyBuff) while they're set to non-nil.
Here's an example of their intended use:

    // what used to be a temp buffer as an 'out' parameter
    //     var cellWork bytes.Buffer
    //     p.inline(&cellWork, data[cellStart:cellEnd])
    // can now be captured like this:
    cellWork := p.r.CaptureWrites(func() {
           p.inline(data[cellStart:cellEnd])
    })
Vytautas Šaltenis vytas@rtfb.lt
Tue, 03 Nov 2015 21:43:00 +0200
352ffdef
Remove a bunch of 'out' parameters from calls, WIP

Still not all of them, still broken.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 21:57:30 +0200
7ec50399
Remove 'out' parameter from parser funcs

This only removes the parameter from declarations, everything is broken
at the moment.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 21:35:43 +0200
6e42506f
Remove 'out' parameter from renderer interface

This only removes the parameter from func declarations, not from their
bodies, so obviously breaks everything. Will be restored in upcoming
commits.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 21:27:55 +0200
a7834480
Fix smartypants smart dash processing

Change the way maybeLineBreak gets called to avoid breaking up stretches
of unprocessed characters that smartypants expects.

This inline processing is getting a bit out of hand, something needs to
be done about it.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 31 Oct 2015 14:52:46 +0200
dd01088b
Remove last call to Truncate() from parser

Autolink detection used to be triggered by a colon and preceding
protocol name used to be rewound. Now instead of doing that, trigger
autolink processing on [hmfHMF] and see if it looks like a link.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 27 Oct 2015 21:56:16 +0200
8e90e8b6
Remove calls to Truncate() from linebreak parser

Replace output truncation with appropriate inline callbacks. lineBreak()
is now only responsible for handling HardLineBreak. BackslashLineBreak
is handled in escape() and trailing whitespace is considered in
maybeLineBreak().
Vytautas Šaltenis vytas@rtfb.lt
Tue, 27 Oct 2015 21:33:43 +0200
ef087889
Remove a couple calls to Truncate() from parser

Link parser used to truncate in two cases: when parsing image links and
inline footnotes. In order to avoid this truncation, introduce a
separate callback for each of these cases and avoid writing extra
characters instead of truncating them after the fact.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:47:20 +0200
29f02f7d
Rename Renderer method receivers

From 'options' to 'r'. This change contains only a massive rename, no
other changes.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:42:41 +0200
bc4735b8
Remove callback from Footnotes renderer event

Split Footnotes into two events: BeginFootnotes and EndFootnotes,
removing the need for callback.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:39:08 +0200
6d6be3d2
Remove callback from Paragraph renderer event

Split Paragraph into two events: BeginParagraph and EndParagraph,
removing the need for callback.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:35:42 +0200
af1b26fa
Remove callback from List renderer event

Split List into two events: BeginList and EndList, removing the need for
callback.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:32:33 +0200
82be6cab
Remove callback from Header renderer event

Split Header into two events: BeginHeader and EndHeader, removing the
need for callback.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 20:25:23 +0200
b16c9b37
Simplify callbacks in Renderer interface

The callbacks used to return bools, but none of the actual
implementations return false, always true. So in order to make further
refactorings simpler, make the interface reflect the inner workings: no
more return values, no more conditionals.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 19:41:15 +0200
ee98bc0b
Massive replacement of C_STYLE flags to typed ones
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 18:16:57 +0200
06515e91
Rename public constants to idiomatic Go
Vytautas Šaltenis vytas@rtfb.lt
Mon, 26 Oct 2015 17:29:52 +0200
0b647d05
Use more idiomatic form for set of strings.

This is a better style for a set, since each value can only be present
or absent.

With bool as value type, each value may be absent, or true or false. It
also uses slightly more memory.
Dmitri Shuralyov shurcooL@gmail.com
Mon, 09 Nov 2015 21:18:55 -0800
18432fc9
Add a few missing HTML5 block tags

Closes #197.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 08 Nov 2015 21:34:44 +0200
f1ce82cb
Sort block tag list alphabetically
Vytautas Šaltenis vytas@rtfb.lt
Sun, 08 Nov 2015 21:33:20 +0200
510be64d
Merge pull request #216 from russross/issue-194

Fix footnote following an exclamation point
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 21:40:57 +0200
f21f0671
Merge pull request #215 from russross/issue-193

Fix nested footnotes
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 21:37:52 +0200
660c9fd2
Add <style> tag to a list of recognized block tags

Closes #182.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 12:31:55 +0200
9c9c590f
Merge pull request #211 from russross/issue-122

Fix issue 122: fenced code blocks inside blockquotes
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 09:44:04 +0200
ceb8293c
Merge pull request #212 from nitoyon/readme

README: Add 'Definition lists' and 'Footnotes'
Vytautas Šaltenis vytas@rtfb.lt
Fri, 30 Oct 2015 20:37:43 +0200
d4ee3ea0
Simplify return value
Vytautas Šaltenis vytas@rtfb.lt
Wed, 28 Oct 2015 21:21:51 +0200
4b26653f
Fix broken test and add test for HTML_SMARTYPANTS_DASHES
Vytautas Šaltenis vytas@rtfb.lt
Tue, 27 Oct 2015 20:21:08 +0200
6712f32c
Merge pull request #190 from anthonyfok/add-flag-for-smart-dashes

Add HTML_SMARTYPANTS_DASHES for toggling smart dashes
Vytautas Šaltenis vytas@rtfb.lt
Tue, 27 Oct 2015 20:08:54 +0200
a18a46c9
Merge pull request #203 from russross/issue-136

Handle comments within a block
Vytautas Šaltenis vytas@rtfb.lt
Tue, 20 Oct 2015 20:45:00 +0300
53982c11
Merge pull request #206 from russross/issue-164

Fix footnote followed by a reference style link
Vytautas Šaltenis vytas@rtfb.lt
Mon, 19 Oct 2015 09:17:51 +0300
4b668b87
Merge pull request #205 from russross/issue-156

Fix bug parsing emphasis
Vytautas Šaltenis vytas@rtfb.lt
Mon, 19 Oct 2015 09:08:30 +0300
82a3b626
Merge pull request #208 from russross/issue-18

Fix escaping asterisks within emphasis
Vytautas Šaltenis vytas@rtfb.lt
Mon, 19 Oct 2015 09:05:52 +0300
1d673b3c
Bump const VERSION to 1.4

This is probably not used by too many people, but there it goes anyway.

Closes #119.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 18 Oct 2015 20:51:29 +0300
fbdd0614
Add Go 1.5 to Travis config
Vytautas Šaltenis vytas@rtfb.lt
Sat, 17 Oct 2015 21:11:06 +0300
8cec3a85
LaTeX backend: add # to list of characters requiring backslash-escaping
Russ Ross russ@dixie.edu
Mon, 20 Jul 2015 13:48:36 -0600
386ef80f
Merge pull request #175 from vbatoufflet/deflist-fix

Fix definition lists end-of-list detection
Vytautas Šaltenis vytas@rtfb.lt
Mon, 08 Jun 2015 11:33:30 +0300
706b1e01
Merge pull request #176 from tw4452852/index_out_of_range

fix index out of range panic in reference link
Vytautas Šaltenis vytas@rtfb.lt
Mon, 08 Jun 2015 11:31:14 +0300
54d3f20b
Merge pull request #171 from vbatoufflet/deflist-support

Add definition lists extension support
Vytautas Šaltenis vytas@rtfb.lt
Wed, 03 Jun 2015 10:40:24 +0300
93ae1e87
Merge pull request #170 from russross/no-newline-after-img

Do not emit newline after <img> tag.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 26 May 2015 11:24:09 +0300
10880f66
README: Update import path of github_flavored_markdown package.

It has moved out into a standalone repo recently. See shurcooL/go#19 for rationale.
Dmitri Shuralyov shurcooL@gmail.com
Mon, 25 May 2015 11:54:26 -0700
0bf420d7
Fix a couple typos
Vytautas Šaltenis vytas@rtfb.lt
Sat, 23 May 2015 09:28:21 +0300
4bed88b4
Merge branch 'jtolds-master'
Vytautas Šaltenis vytas@rtfb.lt
Wed, 06 May 2015 16:00:36 +0300
c6be4fad
Merge pull request #161 from rtfb/issue-146

Issue 146
Vytautas Šaltenis vytas@rtfb.lt
Wed, 06 May 2015 15:30:31 +0300
d3270c47
Merge pull request #163 from neclepsio/master

Implement backslash hard line break extension
Vytautas Šaltenis vytas@rtfb.lt
Thu, 23 Apr 2015 11:58:36 +0300
17bb7999
Add Go 1.4 to Travis config
Vytautas Šaltenis vytas@rtfb.lt
Sat, 11 Apr 2015 18:07:21 +0300
a2702e74
Simplify isRelativeLink() a bit
Vytautas Šaltenis vytas@rtfb.lt
Sat, 11 Apr 2015 18:06:30 +0300
b3137e7c
Merge pull request #152 from elian0211/about_links

update about links
Vytautas Šaltenis vytas@rtfb.lt
Thu, 09 Apr 2015 20:41:45 +0300
3a90da10
Merge pull request #159 from rtfb/sequential-footnotes

Fix recognition of consecutive footnotes
Vytautas Šaltenis vytas@rtfb.lt
Sun, 05 Apr 2015 09:28:21 +0300
2c0c5467
Merge pull request #157 from dchest/reflib

Renaming of upskirt
Vytautas Šaltenis vytas@rtfb.lt
Tue, 24 Mar 2015 18:21:34 +0200
6928e11e
Merge pull request #155 from beyang/master

add rel="noreferrer" option
Vytautas Šaltenis vytas@rtfb.lt
Sun, 15 Mar 2015 19:31:50 +0200
77efab57
Merge pull request #149 from tw4452852/fenced_code

Delete unnecessary copy of input when enable fenced code extension
Vytautas Šaltenis vytas@rtfb.lt
Wed, 11 Feb 2015 10:22:51 +0200
4f4aec01
Merge pull request #145 from eparis/license

Move the license info from README to LICENSE file
Vytautas Šaltenis vytas@rtfb.lt
Tue, 10 Feb 2015 13:09:14 +0200
fe5c2f48
Merge pull request #142 from anthonyfok/avoid-converting-dates-into-fractions

Avoid converting dates into fractions
Vytautas Šaltenis vytas@rtfb.lt
Tue, 27 Jan 2015 10:58:53 +0200
7001890e
Merge pull request #140 from russross/update-import-path/sanitized_anchor_name

Update import path of sanitized_anchor_name.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 12 Jan 2015 21:54:11 +0200
8ad7215b
Merge pull request #138 from KenjiTakahashi/emphasis_link

Fix for #19 + some tests for emphasis with links.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 29 Dec 2014 02:32:11 +0200
48aaef5f
Merge pull request #131 from russross/minor-cleanup

Minor cleanup.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 30 Nov 2014 09:02:35 +0200
315f87d8
Merge pull request #128 from bjornerik/angled-quotes

Add support for angled, double quotes
Vytautas Šaltenis vytas@rtfb.lt
Fri, 28 Nov 2014 19:33:07 +0200
f10a439f
Merge pull request #130 from shurcooL/master

Fix test case.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 25 Nov 2014 09:37:08 +0200
77aeb0ca
Merge pull request #129 from halostatue/header-prefixes-and-suffixes

Allow configurable header ID prefix/suffixes.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 24 Nov 2014 22:32:19 +0200
1f004e1c
Merge pull request #126 from halostatue/generate-unique-header-ids

Prevent header collisions on generation.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 24 Nov 2014 22:30:42 +0200
7c8f3c1d
Merge pull request #125 from halostatue/auto-header-id

Add a flag to turn on header ID generation.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 28 Oct 2014 16:34:49 +0200
411a019e
Merge pull request #124 from halostatue/fix-header-id-toc-rendering

Use supplied header ID for TOC rendering.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 28 Oct 2014 16:34:44 +0200
05b8cefd
Merge pull request #118 from rtfb/test-relative-links

Make sure relative URLs are preserved
Vytautas Šaltenis vytas@rtfb.lt
Mon, 22 Sep 2014 11:58:14 +0300
64fbfbba
Merge pull request #117 from rtfb/remove-sanitization

Remove sanitization
Vytautas Šaltenis vytas@rtfb.lt
Sat, 20 Sep 2014 14:54:26 +0300
44a39c16
Merge pull request #111 from rtfb/master

Add Travis configuration and a badge
Vytautas Šaltenis vytas@rtfb.lt
Sat, 30 Aug 2014 10:12:56 +0300
74dee4bb
Fixup tests after 67002b0
Vytautas Šaltenis vytas@rtfb.lt
Fri, 29 Aug 2014 15:26:37 +0300
9328516b
Merge pull request #109 from tummychow/html5-code-block

Use HTML5 recommended style of language on code blocks
Vytautas Šaltenis vytas@rtfb.lt
Fri, 29 Aug 2014 12:20:42 +0300
7dd925f9
Merge pull request #107 from shurcooL/master

Improve parser to detect LineBreak independently of renderer.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Aug 2014 10:28:42 +0300
52f7a2a7
Fix misleading wording in README

Fixes #103.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 21 Aug 2014 14:05:37 +0300
2e7d6909
Merge pull request #98 from cpuguy83/master

Add titleblock support
Vytautas Šaltenis vytas@rtfb.lt
Mon, 04 Aug 2014 23:02:18 +0300
8b4c144e
Merge pull request #95 from anonx/master

Whitelisted th and td to fix #79
Vytautas Šaltenis vytas@rtfb.lt
Tue, 22 Jul 2014 17:00:57 +0300
c7617b05
Merge pull request #93 from shurcooL/patch-1

Add a reference to github_flavored_markdown in README.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 09 Jul 2014 16:25:33 +0300
7680f7fd
Merge pull request #88 from dimfeld/master

Remove unnecessary HTML_ABSOLUTE_LINKS flag
Vytautas Šaltenis vytas@rtfb.lt
Fri, 30 May 2014 10:30:05 +0300
3c2ae1d1
Merge pull request #86 from dimfeld/master

Add absolute link transformation and footnote enhancements
Vytautas Šaltenis vytas@rtfb.lt
Thu, 29 May 2014 16:13:04 +0300
03a690ac
Merge pull request #82 from dimfeld/master

Sanitize shouldn't filter out URLs without protocol.
Vytautas Šaltenis vytas@rtfb.lt
Fri, 16 May 2014 12:10:22 +0300
93aad334
Update README.md

link to markdownfmt, add note about LaTeX output
Russ Ross russ@russross.com
Wed, 14 May 2014 13:27:37 -0600
bb14a3f9
Merge pull request #78 from JeffPaine/patch-1

Add Usage heading to README
Vytautas Šaltenis vytas@rtfb.lt
Fri, 09 May 2014 11:07:21 +0300
f3ab1849
Merge pull request #39 from athom/tilde-escape

allow \~ to escape as ~
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 16:01:58 +0300
b7820521
Merge pull request #77 from mprobst/cleanup_sanitize_test

Move sanitization tests into their own file.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 15:41:56 +0300
7b519110
Merge pull request #73 from johnsto/bugfix/fenced-code-append

Fix fenced code extension modifying data beyond slice
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 15:15:44 +0300
717a976f
Merge pull request #76 from mprobst/self-closing

feat: Write self-closing tags with a />
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 15:11:53 +0300
643477a0
Merge pull request #75 from mprobst/sanitize_test

Avoid raw mode parsing so that tags like <script> don't cause escaping
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 15:11:41 +0300
50b8e037
Merge pull request #74 from mprobst/sanitize_test

Add a test for the correct handling of escaped entities in HTML.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 May 2014 13:58:03 +0300
c76eb634
Merge pull request #71 from mprobst/master

Add support for a bunch more safe HTML element tags, and bring them into...
Vytautas Šaltenis vytas@rtfb.lt
Fri, 02 May 2014 00:55:47 +0300
aeb569ff
Merge pull request #70 from mprobst/master

fix: Handle all different token types that the parser can emit (d'oh).
Vytautas Šaltenis vytas@rtfb.lt
Thu, 01 May 2014 21:59:07 +0300
60ba757e
Merge branch 'gihnius-master'
Vytautas Šaltenis vytas@rtfb.lt
Thu, 01 May 2014 21:46:51 +0300
b44be784
Allow rel attribute in sanitizer

Fixes issue #68.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 01 May 2014 20:49:49 +0300
b54984b7
Merge pull request #69 from mprobst/master

Use go.net/html's parser to sanitize HTML.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 01 May 2014 20:47:17 +0300
3ca168f8
Merge pull request #64 from willnix/master

Add table tags to the whitelist.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 20 Apr 2014 23:15:54 +0300
9c7cf8b1
Merge pull request #61 from shurcooL/feature/dont-expand-tabs-inside-fenced-code-blocks

Don't expand tabs inside fenced code blocks.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 13 Apr 2014 10:56:02 +0300
5bcdd5eb
Merge pull request #60 from shurcooL/fix/fenced-code-block-extra-newline

Fix for potential extra newline added inside fenced code blocks.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 12 Apr 2014 21:58:08 +0300
c5ece173
Merge pull request #59 from johnsto/master

Header ID specifiers
Vytautas Šaltenis vytas@rtfb.lt
Fri, 11 Apr 2014 21:31:27 +0300
1fd57a27
Merge pull request #56 from muhqu/issue/45

Fix for Fenced Code Blocks without a blank line before
Vytautas Šaltenis vytas@rtfb.lt
Tue, 08 Apr 2014 13:00:13 +0300
78dbffcf
Merge pull request #58 from aspic/master

Explicit return byte array at end of function.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 05 Apr 2014 21:48:09 +0300
55bb56bf
Merge pull request #55 from rtfb/master

Autolink fixes
Vytautas Šaltenis vytas@rtfb.lt
Sun, 30 Mar 2014 19:58:39 +0300
d643453f
Merge pull request #50 from rtfb/master

Better protection against JavaScript injection
Vytautas Šaltenis vytas@rtfb.lt
Sun, 30 Mar 2014 19:52:13 +0300
e078bb8e
Merge pull request #52 from laslowh/master

add HTML_NOFOLLOW_LINKS
Vytautas Šaltenis vytas@rtfb.lt
Mon, 10 Mar 2014 21:47:35 +0200
5405274d
Merge pull request #44 from FreakyDazio/safe-relatives

Relative URIs are considered safe
Vytautas Šaltenis vytas@rtfb.lt
Wed, 08 Jan 2014 11:51:13 -0800
0c38d23c
Merge pull request #43 from microcosm-cc/master

Cells in THEAD > TR are now TH.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 08 Jan 2014 11:46:30 -0800
d0e587ac
Change GOROOT references to GOPATH in README
Russ Ross russ@russross.com
Thu, 21 Nov 2013 08:47:41 -0700
48d1f9d9
fix smartypants to pass single backticks through, issue #38
Russ Ross russ@dixie.edu
Tue, 01 Oct 2013 13:55:34 -0600
ca82b8db
panic fix (issue #33) with test case
Russ Ross russ@dixie.edu
Wed, 11 Sep 2013 12:47:43 -0600
472fe3a7
Merge pull request #32 from bertzzie/master

Enable Parsing Inside a Link
Lancee LY.lancee@gmail.com
Sun, 08 Sep 2013 23:16:18 -0700
3f24fadb
Merge pull request #31 from aybabtme/patch-1

Fix typo.
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sun, 01 Sep 2013 11:56:32 -0700
d4bdd8db
update license language to match OSI
Russ Ross russ@russross.com
Wed, 14 Aug 2013 07:43:17 -0600
8395200a
Merge pull request #29 from athom/master

add EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK flag to make it closer to GFM
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 10 Aug 2013 13:13:13 -0700
264c82ed
Merge pull request #27 from moshee/master

Footnotes (addresses #14)
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Mon, 08 Jul 2013 23:03:42 -0700
2336fd31
Merge pull request #22 from rtfb/master

Add some protection against script injection
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Tue, 21 May 2013 13:19:17 -0700
015b0af4
Merge pull request #24 from subosito/sample-fixes

Fix table syntax example on README
Russ Ross russ@russross.com
Mon, 20 May 2013 15:15:38 -0700
3c0965e6
Merge pull request #16 from cespare/blockcodegithub_doc_fix

Fix up method documentation formatting for the BlockCodeGithub method.
Russ Ross russ@russross.com
Thu, 22 Nov 2012 18:00:19 -0800
585af8ba
Merge pull request #15 from moshee/master

HTML5
Russ Ross russ@russross.com
Mon, 22 Oct 2012 06:39:47 -0700
b3c64946
recognize fraction slash as well as regular slash to make fractions
Russ Ross russ@russross.com
Sun, 11 Mar 2012 16:10:42 -0600
82ba5850
link directly to blackfriday-tool
Russ Ross russ@russross.com
Wed, 07 Mar 2012 22:12:46 -0700
c317affd
readme updates for go 1
Russ Ross russ@russross.com
Wed, 07 Mar 2012 22:06:07 -0700
a5441fd9
updates for go 1
Russ Ross russ@russross.com
Wed, 07 Mar 2012 21:36:31 -0700
6bc8c7a2
version bump to v1.1
Russ Ross russ@russross.com
Mon, 26 Sep 2011 15:45:49 -0600
b97990f1
permit backslash-escaped vertical bars in tables
Russ Ross russ@dixie.edu
Tue, 13 Sep 2011 16:23:24 -0600
583b3c5e
fixed bug with blank line handling within list items
Russ Ross russ@dixie.edu
Fri, 09 Sep 2011 12:30:45 -0600
b8bc812a
table unit tests and fix for a crash uncovered by them
Russ Ross russ@russross.com
Mon, 25 Jul 2011 11:39:02 -0600
c99557ec
bug in tables when a row has too few columns
Russ Ross russ@russross.com
Mon, 25 Jul 2011 10:23:31 -0600
fbbd3248
tag as version 1.0
Russ Ross russ@russross.com
Tue, 19 Jul 2011 11:42:24 -0600
530123dd
additional doc comments
Russ Ross russ@russross.com
Thu, 07 Jul 2011 12:05:29 -0600
bb8ee591
doc improvements, commenting
Russ Ross russ@russross.com
Thu, 07 Jul 2011 11:56:45 -0600
256ff946
readme tweak
Russ Ross russ@russross.com
Wed, 06 Jul 2011 10:04:30 -0600
60cb261a
readme updates
Russ Ross russ@russross.com
Wed, 06 Jul 2011 10:01:13 -0600
2b87b0e7
simplify naming of parsing functions
Russ Ross russ@russross.com
Tue, 05 Jul 2011 14:22:21 -0600
fb435fe2
finished removing redundant end-of-buffer checks in block parsing; code cleanup
Russ Ross russ@russross.com
Mon, 04 Jul 2011 18:56:29 -0600
e35b4b66
bounds checking stress tests
Russ Ross russ@russross.com
Sun, 03 Jul 2011 10:51:07 -0600
123a149e
missing bounds check
Russ Ross russ@russross.com
Sun, 03 Jul 2011 10:30:28 -0600
bd60e369
removing more redundant checks, additional cleanup of block parsing
Russ Ross russ@dixie.edu
Fri, 01 Jul 2011 14:13:26 -0600
689f6cb7
more consistent spacing of block-level elements
Russ Ross russ@dixie.edu
Fri, 01 Jul 2011 11:19:42 -0600
d4353d99
remove redundant tests for tab characters in parsing
Russ Ross russ@dixie.edu
Fri, 01 Jul 2011 10:03:03 -0600
a99c922b
remove NO_EXPAND_TABS options
Russ Ross russ@dixie.edu
Fri, 01 Jul 2011 09:57:11 -0600
7544368f
removing redundant end-of-buffer checks in block parsing
Russ Ross russ@russross.com
Wed, 29 Jun 2011 20:15:58 -0600
ae9562f6
move whitespace stripping to parser, not renderers
Russ Ross russ@russross.com
Wed, 29 Jun 2011 15:38:35 -0600
d3c82250
corner case spacing issue with table of contents
Russ Ross russ@russross.com
Wed, 29 Jun 2011 13:24:15 -0600
2aca6670
simplify inline callback interface
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 13:00:54 -0600
8b9cd447
version bump to 0.6
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 11:22:20 -0600
70c92fef
inline helpers put parser arg first
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 11:21:46 -0600
3c6f18af
Renderer is now an interface
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 11:13:17 -0600
793fee54
preparing for switch to rendering interface
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 10:43:10 -0600
55697351
table of contents support beefed up
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 10:36:56 -0600
873a60ad
complete page rendering is now an option in the library
Russ Ross russ@dixie.edu
Wed, 29 Jun 2011 10:08:56 -0600
b1a03182
refactoring: inline renderers return bools, preparing rendering struct to become an interface
Russ Ross russ@russross.com
Tue, 28 Jun 2011 19:46:35 -0600
f0cd9a42
render -> Parser, made parsing functions methods of *Parser
Russ Ross russ@russross.com
Tue, 28 Jun 2011 18:58:53 -0600
55cde00c
camel case
Russ Ross russ@russross.com
Tue, 28 Jun 2011 16:02:12 -0600
c969dff7
added simplified interface for common usage
Russ Ross russ@russross.com
Tue, 28 Jun 2011 15:55:27 -0600
fde2c606
version number, few more options for command-line tool
Russ Ross russ@dixie.edu
Tue, 28 Jun 2011 11:30:10 -0600
84eeba25
example markdown binary: try to guess a title
Russ Ross russ@dixie.edu
Tue, 28 Jun 2011 10:58:37 -0600
2a18706c
options to supress tab expansion or to expand tabs to 8 spaces instead of 4
Russ Ross russ@dixie.edu
Tue, 28 Jun 2011 10:58:10 -0600
2f839dc3
fenced code: ending marker must match beginning marker, tests for fenced code blocks
Russ Ross russ@dixie.edu
Tue, 28 Jun 2011 10:30:25 -0600
66b71b1f
readme tweak
Russ Ross russ@russross.com
Mon, 27 Jun 2011 20:15:12 -0600
4bd8627b
README tweak
Russ Ross russ@russross.com
Mon, 27 Jun 2011 20:14:13 -0600
f8f70572
simplified BSD license
Russ Ross russ@russross.com
Mon, 27 Jun 2011 20:11:32 -0600
8233aad6
preformatted html block tests
Russ Ross russ@russross.com
Mon, 27 Jun 2011 19:35:40 -0600
fffbd3ed
tests for ordered lists
Russ Ross russ@russross.com
Mon, 27 Jun 2011 18:03:54 -0600
00cb90e9
horizontal rule and list testing
Russ Ross russ@russross.com
Mon, 27 Jun 2011 16:06:32 -0600
c8f7e789
more robust whitespace stripping and matching corrections to tests
Russ Ross russ@russross.com
Mon, 27 Jun 2011 16:06:16 -0600
9a0217f7
fixed minor bugs uncovered by more testing
Russ Ross russ@russross.com
Mon, 27 Jun 2011 14:35:11 -0600
47c48525
unit tests for underlined headers, improved whitespace handling for the same
Russ Ross russ@dixie.edu
Mon, 27 Jun 2011 11:42:38 -0600
3af64a90
fixed headers nested in lists, added prefix header unit tests
Russ Ross russ@dixie.edu
Mon, 27 Jun 2011 10:13:13 -0600
e22e43bf
eliminate a buffering level for paragraphs
Russ Ross russ@russross.com
Sun, 26 Jun 2011 17:21:11 -0600
ea3d80e2
clean up main markdown function: split out first and second passes
Russ Ross russ@russross.com
Sun, 26 Jun 2011 09:51:36 -0600
f5e3dc80
refactoring: newlines as hard breaks changed from HTML option to global markdown option
Russ Ross russ@russross.com
Sat, 25 Jun 2011 15:45:51 -0600
812e8d01
refactoring paragraph rendering
Russ Ross russ@russross.com
Sat, 25 Jun 2011 15:18:34 -0600
eff64c56
reduce copying for lists
Russ Ross russ@russross.com
Sat, 25 Jun 2011 15:02:46 -0600
cf97fbd8
experiment: render headers directly to output buffer to avoid a copy; minor speed boost
Russ Ross russ@russross.com
Sat, 25 Jun 2011 08:20:08 -0600
45ab8d0d
dumb tweak that gives a little speed bump
Russ Ross russ@russross.com
Fri, 24 Jun 2011 21:53:46 -0600
44db7217
rewrite of attrEscape: cleaner and faster
Russ Ross russ@russross.com
Fri, 24 Jun 2011 19:11:06 -0600
a74678bf
enable profiling from command-line tool
Russ Ross russ@russross.com
Fri, 24 Jun 2011 17:13:42 -0600
c337e07e
fraction example in readme
Russ Ross russ@russross.com
Fri, 24 Jun 2011 16:42:17 -0600
be0fb460
more inline unit tests
Russ Ross russ@russross.com
Fri, 24 Jun 2011 16:39:50 -0600
f9b03f67
output validates, command-line tool has useful options
Russ Ross russ@russross.com
Fri, 24 Jun 2011 11:50:03 -0600
157bb44c
improved (hopefully) smart quote handling
Russ Ross russ@dixie.edu
Wed, 22 Jun 2011 15:40:58 -0600
9ffeaf98
convert test files to unix format, fix a few broken ones
Russ Ross russ@dixie.edu
Fri, 10 Jun 2011 09:41:00 -0600
1e40ebaf
unit test for linebreaks
Russ Ross russ@russross.com
Wed, 01 Jun 2011 18:52:55 -0600
4b850e80
tab expansion bug
Russ Ross russ@russross.com
Wed, 01 Jun 2011 18:52:40 -0600
a4339270
fix test name conflicts
Russ Ross russ@russross.com
Wed, 01 Jun 2011 18:52:24 -0600
cd5e4957
Merge pull request #2 from kjk/markdown-tests

integrate tests for markdown 1.0.3 test files by comparing them with refe
Russ Ross russross
Wed, 01 Jun 2011 17:24:11 -0700
2abc3af0
starting inline unit tests, fix a few minor bugs they exposed
Russ Ross russ@russross.com
Wed, 01 Jun 2011 12:17:17 -0600
87f1e83d
readme updates
Russ Ross russ@russross.com
Tue, 31 May 2011 16:31:36 -0600
921ac7d0
comments, minor cleanups
Russ Ross russ@russross.com
Tue, 31 May 2011 16:28:07 -0600
b6e65308
rewrote the stinking pile of code that was blockParagraph
Russ Ross russ@russross.com
Tue, 31 May 2011 16:07:15 -0600
9f1d6199
tab expansion fixed to handle multibyte unicode characters
Russ Ross russ@dixie.edu
Tue, 31 May 2011 12:04:58 -0600
f3386eb8
gofmt
Russ Ross russ@dixie.edu
Tue, 31 May 2011 11:49:49 -0600
df64ec5d
allocate new buffers on stack; mild speed improvement
Russ Ross russ@dixie.edu
Tue, 31 May 2011 11:11:04 -0600
9d23b68f
export all names from Renderer struct
This enables new back-ends that are not part of the package
Basically a big search-and-replace for this commit
Russ Ross russ@russross.com
Mon, 30 May 2011 21:44:52 -0600
679e1686
performance fix: with autolinking on, it is almost twice as fast now
Russ Ross russ@russross.com
Mon, 30 May 2011 15:36:31 -0600
4a17a5b5
remove dependency on less function
Russ Ross russ@russross.com
Mon, 30 May 2011 14:42:38 -0600
cd7b9521
readme tweak
Russ Ross russ@russross.com
Mon, 30 May 2011 11:15:56 -0600
ee3fe992
rudimentary latex backend, additional cleanup
Russ Ross russ@russross.com
Mon, 30 May 2011 11:06:20 -0600
81cefb5e
split parser into multiple files, clean up naming
Russ Ross russ@russross.com
Sun, 29 May 2011 17:00:31 -0600
4e2d6a50
cleanup in markdown: better naming, misc fixes
Russ Ross russ@russross.com
Sun, 29 May 2011 11:43:18 -0600
bb3c0f73
comments on performance
Russ Ross russ@russross.com
Sun, 29 May 2011 09:30:57 -0600
59dc1f85
fix smartypants and html entity escaping
Russ Ross russ@russross.com
Sat, 28 May 2011 22:50:33 -0600
de40da7a
escape entities when using smartypants
Russ Ross russ@russross.com
Sat, 28 May 2011 22:39:22 -0600
3ee2b137
return result instead of taking buffer as input
Russ Ross russ@russross.com
Sat, 28 May 2011 22:37:12 -0600
6c6efa13
features list
Russ Ross russ@russross.com
Sat, 28 May 2011 21:43:17 -0600
a3ff1b5d
mdash
Russ Ross russ@russross.com
Sat, 28 May 2011 21:34:02 -0600
9a11e966
readme file
Russ Ross russ@russross.com
Sat, 28 May 2011 21:33:16 -0600
965748ad
refactored into a proper package
Russ Ross russ@russross.com
Sat, 28 May 2011 21:17:53 -0600
de458292
smartypants
Russ Ross russ@dixie.edu
Sat, 28 May 2011 17:37:18 -0600
cab328f2
cleanup
Russ Ross russ@russross.com
Sat, 28 May 2011 13:00:47 -0600
b117dcc9
compatibility fixes
Russ Ross russ@russross.com
Sat, 28 May 2011 09:49:21 -0600
c3545f4e
output matches upskirt for markdown test suite
Russ Ross russ@dixie.edu
Fri, 27 May 2011 16:12:21 -0600
f16de74d
fixing link parsing
Russ Ross russ@russross.com
Fri, 27 May 2011 13:38:10 -0600
48923aa4
basics working, still a few renderers to write
Russ Ross russ@russross.com
Thu, 26 May 2011 22:27:33 -0600
87127316
parsing done but untested
Russ Ross russ@russross.com
Thu, 26 May 2011 14:22:59 -0600
91dd5cc4
working on inline parsing
Russ Ross russ@russross.com
Thu, 26 May 2011 12:10:16 -0600
90f07150
emph parsing
Russ Ross russ@russross.com
Thu, 26 May 2011 09:47:41 -0600
2151ed61
reference extraction
Russ Ross russ@russross.com
Thu, 26 May 2011 08:28:14 -0600
c7272741
setup, starting reference handling
Russ Ross russ@russross.com
Wed, 25 May 2011 20:46:16 -0600
cb7b5466
fixed ordered lists
Russ Ross russ@dixie.edu
Wed, 25 May 2011 16:00:01 -0600
f565f325
all block-level parsers
Russ Ross russ@dixie.edu
Wed, 25 May 2011 15:41:25 -0600
282b8dfa
working on listitem
Russ Ross russ@russross.com
Wed, 25 May 2011 13:59:30 -0600
8eb58026
initial commit
Russ Ross russ@russross.com
Tue, 24 May 2011 16:14:35 -0600
2f988eb2
integrate tests for markdown 1.0.3 test files by comparing them with reference files rendered with upskirt (no extensions)
Krzysztof Kowalczyk kkowalczyk@gmail.com
Wed, 01 Jun 2011 16:47:32 -0700
e69cdde7
Add some HTML5
moshee moshee@displaynone.us
Sun, 21 Oct 2012 21:28:31 -0700
8a86b6d6
HTML5 doctype, Wrap TOC with <nav>

<nav> makes the TOC more easily identifiable and workable with CSS.
moshee moshee@displaynone.us
Sun, 21 Oct 2012 21:23:44 -0700
a25d9a54
Fix html tag ordering in doc string.
Caleb Spare cespare@gmail.com
Thu, 22 Nov 2012 12:52:52 -0800
d0d85495
Fix up method documentation formatting.
Caleb Spare cespare@gmail.com
Thu, 22 Nov 2012 12:12:08 -0800
227e2c00
fix table syntax example
Alif Rachmawadi subosito@gmail.com
Sun, 05 May 2013 10:35:09 +0700
82262382
Improve html element stripping code
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Thu, 18 Apr 2013 03:15:47 +0300
079a5585
Fix typo
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sun, 14 Apr 2013 01:44:18 +0300
375cae5d
Add HTML_SKIP_SCRIPT to MarkdownCommon
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sun, 14 Apr 2013 01:43:21 +0300
85e2207c
Couple more tests
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sun, 14 Apr 2013 01:42:47 +0300
dcaaa9b5
More <script> stripping

Partially addresses issue #11.
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 23:24:30 +0300
fb923cdb
Add an option to strip <script> elements

Partially addresses issue #11.
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 22:57:16 +0300
b79e720a
Make isHtmlTag() case insensitive
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 22:34:37 +0300
a2fda5e9
Extract repetitive code to a func
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 22:26:29 +0300
d5a8df16
Fix bug in isHtmlTag()

Fix what seems to be a typo. j should iterate through all tagname, so it
should be initialized to zero. The test exposes this bug.
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 22:21:47 +0300
90509d39
Make a way to parameterize inline tests

Expose extensions and html flags parameters so that tests could specify
what code paths they want to exercise.
Vytautas Šaltenis Vytautas.Shaltenis@gmail.com
Sat, 13 Apr 2013 22:18:14 +0300
3ea84a58
parser no longer returns prematurely from empty footnote ref
moshee moshee@displaynone.us
Mon, 08 Jul 2013 22:34:12 +0000
4513607d
leftover debug stuff
moshee moshee@displaynone.us
Mon, 08 Jul 2013 09:42:29 +0000
1a73bae5
added slice bounds check
moshee moshee@displaynone.us
Mon, 08 Jul 2013 06:54:25 +0000
c23099e5
Implementation and some tests for inline footnotes. Also I noticed the list items had the wrong ids, that was silly of me.
moshee moshee@displaynone.us
Mon, 01 Jul 2013 01:37:52 +0000
8346559a
Referenced footnotes appear to be functional. Inline still unimplemented.
moshee moshee@displaynone.us
Wed, 26 Jun 2013 16:09:27 +0000
7bdb82c5
new tests pass but old tests now fail...
moshee moshee@displaynone.us
Wed, 26 Jun 2013 15:57:51 +0000
be082a1e
First attempt at supporting Pandoc-style footnotes. The existing tests have not broken but the new functionality does not work yet.
moshee moshee@displaynone.us
Tue, 25 Jun 2013 01:18:47 +0000
31798e0e
add testcase for GFM autolink
athom athom@126.com
Fri, 09 Aug 2013 17:24:26 +0800
16c09b01
make autolink peforms like GFM
athom athom@126.com
Fri, 09 Aug 2013 16:28:35 +0800
8751c35d
add EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK flag to make it closer to GFM(Github flavor Markdown)
athom athom@126.com
Tue, 30 Jul 2013 10:32:11 +0800
bd3e6c94
Fix typo.
Antoine Grondin antoinegrondin@gmail.com
Sun, 01 Sep 2013 10:59:06 -0700
e2503482
Image inside a link now works.
Alex Xandra Albert Sim bertzzie@gmail.com
Mon, 09 Sep 2013 12:51:46 +0700
da8f2753
Added test for link inside image
Alex Xandra Albert Sim bertzzie@gmail.com
Mon, 09 Sep 2013 12:51:20 +0700
5b954f1f
Updated tests to check for th tags instead of td tags within thead blocks
David Kitchen david@buro9.com
Thu, 17 Oct 2013 10:35:44 +0100
6e6572e9
Added th to table headers so that styling with things like Twitter Bootstrap and typeset.css work as expected. Cells in headers should always be TH unless they are advisory cells within headers in which case TD is acceptable (but being Markdown a user with such needs could just enter HTML for this)
David Kitchen david@buro9.com
Wed, 16 Oct 2013 11:36:33 +0100
607ec214
Tests for links when using  HTML_SAFELINK
Darren Coxall darren@darrencoxall.com
Thu, 19 Dec 2013 10:00:47 +0000
59358ade
  Relative URIs are considered safe
Darren Coxall darren.coxall@simplybusiness.co.uk
Mon, 09 Dec 2013 14:41:37 +0000
d71c7591
add HTML_NOFOLLOW_LINKS
Graham Miller graham.miller@gmail.com
Tue, 25 Feb 2014 09:21:57 -0500
84ee8e62
Add a note about JavaScript injections to README
Vytautas Šaltenis vytas@rtfb.lt
Mon, 17 Feb 2014 21:08:10 +0200
2f50a53f
Rename HTML_SKIP_SCRIPT to HTML_SANITIZE_OUTPUT
Vytautas Šaltenis vytas@rtfb.lt
Wed, 22 Jan 2014 01:23:43 +0200
55cd8200
Rewrite protection against JavaScript injection

This drops the naive approach at <script> tag stripping and resorts to
full sanitization of html. The general idea (and the regexps) is grabbed
from Stack Exchange's PageDown JavaScript Markdown processor[1]. Like in
PageDown, it's implemented as a separate pass over resulting html.

Includes a metric ton (but not all) of test cases from here[2]. Several
are commented out since they don't pass yet.

Stronger (but still incomplete) fix for #11.

[1] http://code.google.com/p/pagedown/wiki/PageDown
[2] https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
Vytautas Šaltenis vytas@rtfb.lt
Wed, 22 Jan 2014 01:14:35 +0200
e02c392d
Extract useful code to separate func
Vytautas Šaltenis vytas@rtfb.lt
Wed, 22 Jan 2014 00:45:43 +0200
e5937643
Fix bug in autolink with trailing semicolon

In case the link ends with escaped html entity, the semicolon is a part
of the link and should not be interpreted as punctuation.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 26 Jan 2014 23:40:26 +0200
b0bdfbec
Fix bug in autolink overescaping html entities

If autolink encounters a link which already has an escaped html entity,
it would escape the ampersand again, producing things like these:
    &amp;  --> &amp;amp;
    &quot; --> &amp;quot;
This commit solves that by first looking for all entity-looking things
in the link and copying those ranges verbatim, only considering the rest
of the string for escaping.
Doesn't seem to have considerable performance impact.
The mailto: links are processed the old way.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 26 Jan 2014 21:39:38 +0200
cc0d56d0
Extract a chain of ifs into separate func

This gives a ~10% slowdown of a full test run, which is tolerable.
Switch statement is still slightly slower (~5%). Using map turned out to
be unacceptably slow (~3x slowdown).
Vytautas Šaltenis vytas@rtfb.lt
Sun, 26 Jan 2014 21:27:34 +0200
31a96c6c
go fmt
Vytautas Šaltenis vytas@rtfb.lt
Sun, 26 Jan 2014 21:21:25 +0200
f2d43f69
Fix bug in autolink termination

Detect the end of link when it is immediately followed by an element.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 25 Jan 2014 21:59:38 +0200
9fc8c9d8
Fix bug with overzealous autolink processing

When the source Markdown contains an anchor tag with URL as link text
(i.e. <a href=...>http://foo.bar</a>), autolink converts that link text
into another anchor tag, which is nonsense. Detect this situation with
regexp and early exit autolink processing.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 25 Jan 2014 21:42:34 +0200
786aed62
Explicit return byte array at end of function.
Kjetil Mehl aspic@mehl.no
Sat, 05 Apr 2014 16:59:28 +0200
cb288d6b
Revert "add an infinity-loop detection to block-level parsing"

This reverts commit 0c62e28e900533ff5d0376fac2e5b0c4894e1fa3.
Mathias Leppich mleppich@muhqu.de
Tue, 08 Apr 2014 11:51:17 +0200
17ca2614
optimisation: only fix fenced code blocks if the extensions parser flag is set... ;-)
Mathias Leppich mleppich@muhqu.de
Tue, 01 Apr 2014 23:14:31 +0200
09327332
out-comment stderr debug output
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 22:30:38 +0200
ec90dd0f
add some stderr output to reference stress tests
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 22:29:24 +0200
cd3fa08c
fix issue #45: 'Fenced Code Blocks without a blank line before'

Add missing newline between paragraph and fenced code block within `firstPass()`.
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 21:57:58 +0200
a4274bba
add error message when panic has been raised within `doTestsBlock()`
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 21:59:20 +0200
0c62e28e
add an infinity-loop detection to block-level parsing
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 00:04:45 +0100
d4c367a9
add test cases for issue #45
Mathias Leppich mleppich@muhqu.de
Sun, 30 Mar 2014 22:00:26 +0200
924064f3
Also support header IDs in ## headers ##
Dave Johnston johnsto@gmail.com
Sun, 06 Apr 2014 10:30:40 +0100
7ad5f9c1
Correctly emit trailing header ID brace
Dave Johnston johnsto@gmail.com
Sat, 05 Apr 2014 20:59:03 +0100
cf01a945
Add Header IDs to default extensions
Dave Johnston johnsto@gmail.com
Sat, 05 Apr 2014 20:45:57 +0100
2dff0864
Add header ID support and tests: # Header {#myid}
Dave Johnston johnsto@gmail.com
Sat, 05 Apr 2014 20:42:58 +0100
8df342ac
Fix bug where newlines were inserted inside fenced code blocks.

Change firstPass() code that checks for fenced code blocks to check all
of them and properly keep track of lastFencedCodeBlockEnd.
This way, it won't misinterpret the end of a fenced code block as a
beginning of a new one.
Dmitri Shuralyov shurcooL@gmail.com
Fri, 11 Apr 2014 21:27:28 -0700
ef2a2b02
Add failing test for an issue introduced by PR #56.

The issue is that when there are more than 1 fenced code blocks with a
blank line before and after, the parser introduces a single extra new
line to all the fenced code blocks except the last one.
Dmitri Shuralyov shurcooL@gmail.com
Fri, 11 Apr 2014 19:54:55 -0700
ad246ef7
Don't expand tabs inside fenced code blocks.

Still do normalize newlines inside fenced code blocks.
Dmitri Shuralyov shurcooL@gmail.com
Sat, 12 Apr 2014 14:45:25 -0700
be9cbc63
tagWhitelist allows alignment attribute now

This is the closest I could get to removing everything "unsave" without introducing an additional regex.
willnix frieder.steinmetz@gmail.com
Sat, 19 Apr 2014 21:59:04 +0000
c1e49967
Add table tags to the whitelist.

Fixing:
https://github.com/russross/blackfriday/commit/55cd82008e9b35b9a03a80e06d5a4c4601320211

This commit introduced a html tag whitelist which does not include any table tags (<td>,<tr>,<thead>...). Therefore even tables the markdown parser itself generated will be removed.
willnix frieder.steinmetz@gmail.com
Thu, 17 Apr 2014 15:44:40 +0000
41251715
Use go.net/html's parser to sanitize HTML.

Use an HTML5 compliant parser that interprets HTML as a browser would to parse
the Markdown result and then sanitize based on the result.
Escape unrecognized and disallowed HTML in the result.
Currently works with a hard coded whitelist of safe HTML tags and attributes.
Martin Probst martin@probst.io
Sun, 27 Apr 2014 23:40:44 +0200
3dba5bc5
Merge branch 'master' of github.com:gihnius/blackfriday into gihnius-master

Conflicts:
	html.go
	inline_test.go
Vytautas Šaltenis vytas@rtfb.lt
Thu, 01 May 2014 21:43:42 +0300
c9977f0c
test: add nofollow ref for non internal links only
gihnius gihnius@gmail.com
Fri, 21 Mar 2014 11:17:31 +0800
93484b14
add nofollow ref for non internal links only
gihnius gihnius@gmail.com
Fri, 21 Mar 2014 11:14:58 +0800
ecf59d4a
add target blank attr
gihnius gihnius@gmail.com
Fri, 21 Mar 2014 10:52:46 +0800
f9b7593e
fix: Handle all different token types that the parser can emit (d'oh).
Martin Probst martin@probst.io
Thu, 01 May 2014 20:55:53 +0200
8d2af3a2
Add support for a bunch more safe HTML element tags, and bring them into some order.
Martin Probst martin@probst.io
Thu, 01 May 2014 22:08:32 +0200
915f7049
Add a test for the correct handling of escaped entities in HTML.

The sanitization code does not retain any particular escaped entities - it
parses the HTML and thus loses the information on what entities were in the
original. The result is correct UTF-8 HTML though.
Martin Probst martin@probst.io
Sat, 03 May 2014 12:34:16 +0200
11e042f6
Avoid raw mode parsing so that raw mode tags like <script> don't cause issues.

Certain tags like <script> but also <title> and others switch an HTML5 parser
into raw mode, which causes the rest of the HTML string to be always parsed as
text, including any elements or entities that we do want to support (e.g. <p>).

As we're going to escape any of the raw text elements anyway (it's e.g. script,
style, title, xmp, noframes, and a couple of others) we can just switch of raw
text parsing by disabling it after each starting tag.
Martin Probst martin@probst.io
Sat, 03 May 2014 12:58:25 +0200
55d8f72d
feat: Write self-closing tags with a />

Adds tests for self-closing tags both for correct writing and for correct
sanitization, i.e. stripping attributes on them.
Martin Probst martin@probst.io
Sat, 03 May 2014 12:58:25 +0200
baebdee6
Avoid double alloc
Dave Johnston johnsto@gmail.com
Sat, 03 May 2014 08:50:44 +0100
852c1967
Fix fenced code extn modifying data beyond slice
Dave Johnston johnsto@gmail.com
Fri, 02 May 2014 23:05:06 +0100
7daa6e8b
Move sanitization tests into their own file.

Also adds an explicit test for [link](...) syntax to be sanitized.
Martin Probst martin@probst.io
Sat, 03 May 2014 14:37:23 +0200
4c11f724
allow \~ to escape as ~
athom athom@126.com
Tue, 01 Oct 2013 15:15:55 +0800
d55bbf4b
Add Usage heading
Jeff Paine JeffPaine@users.noreply.github.com
Thu, 08 May 2014 18:42:05 -0400
e10ba882
Sanitize shouldn't filter out URLs without protocol.
Daniel Imfeld daniel@danielimfeld.com
Fri, 16 May 2014 03:28:44 -0500
10f1dc63
Fix spelling error
Daniel Imfeld daniel@danielimfeld.com
Wed, 28 May 2014 23:52:45 -0500
4ccf982a
Add tests for absolute prefix
Daniel Imfeld daniel@danielimfeld.com
Sun, 25 May 2014 13:22:33 -0500
2ce05928
Add tests for new footnote functionality
Daniel Imfeld daniel@danielimfeld.com
Sun, 25 May 2014 13:07:05 -0500
628c02d3
Move footnote prefix to a better place
Daniel Imfeld daniel@danielimfeld.com
Sat, 24 May 2014 14:28:37 -0500
c7f4b178
Use parameters object for extra options. Enhance footnote support.

Option to add return links.
Option to make footnote prefixes unique, for rendering multiple
documents per page.
Daniel Imfeld daniel@danielimfeld.com
Sat, 24 May 2014 13:29:39 -0500
ec41294b
Add footnote prefix option. Needs testing
Daniel Imfeld daniel@danielimfeld.com
Sat, 24 May 2014 02:55:13 -0500
5c12499a
Add ability to convert relative links to absolute
Daniel Imfeld daniel@danielimfeld.com
Sun, 18 May 2014 01:28:15 -0500
5bf00efe
Remove unnecessary HTML_ABSOLUTE_LINKS flag
Daniel Imfeld daniel@danielimfeld.com
Thu, 29 May 2014 09:17:20 -0500
51cf25db
Add a reference to github_flavored_markdown in README.
Dmitri Shuralyov shurcooL@gmail.com
Fri, 04 Jul 2014 18:10:34 -0700
86bc6131
Whitelisted th and td to fix #79
anonx anonx@anonx
Tue, 22 Jul 2014 19:34:23 +0600
539b27a6
Add titleblock support
Brian Goff cpuguy83@gmail.com
Fri, 01 Aug 2014 22:54:21 -0400
78172e5f
Improve parser to detect LineBreak independently of renderer.

When checking if it's a newline preceeded by two spaces, look at the input data rather than the output, since the output depends on the renderer implementation.
Dmitri Shuralyov shurcooL@gmail.com
Tue, 26 Aug 2014 21:00:07 -0700
67002b01
Use HTML5 recommended style of language on code blocks

For code blocks that contain a certain language of code, the recommended
attribute structure is <pre><code class="language-foo">. This also
corresponds to the behavior expected by various JS syntax highlighters.

The GitHub code block implementation was obsolete, and identical to the
normal implementation except for its attribute structure, so it was
removed.

Closes #108.
tummychow tummychow@users.noreply.github.com
Wed, 27 Aug 2014 23:26:20 -0400
16035869
Remove go tip from Travis build matrix
Vytautas Šaltenis vytas@rtfb.lt
Sat, 30 Aug 2014 10:09:18 +0300
c50c5116
More Travis stuff: better go get, plus build badge
Vytautas Šaltenis vytas@rtfb.lt
Sat, 30 Aug 2014 00:10:33 +0300
ff693ab4
Add a simple Travis config
Vytautas Šaltenis vytas@rtfb.lt
Fri, 29 Aug 2014 15:39:26 +0300
8e739c7f
Change Sanitize() to SanitizeBytes() in example
Vytautas Šaltenis vytas@rtfb.lt
Sat, 20 Sep 2014 14:48:01 +0300
819f70a8
Document usage of blackfriday along w/ bluemonday
Vytautas Saltenis vytas@rtfb.lt
Fri, 19 Sep 2014 20:50:54 +0300
cf6bfc9d
Rip off all blackfriday's html sanitization effort

As per discussion in issue #90.
Vytautas Saltenis vytas@rtfb.lt
Fri, 19 Sep 2014 20:30:00 +0300
427a14ca
Convert silly funcs to consts
Vytautas Saltenis vytas@rtfb.lt
Mon, 22 Sep 2014 11:44:58 +0300
3a994616
Make sure relative URLs are preserved

Add tests to make sure we don't break relative URLs again.
Extracted common html flags and common extensions for easy access from
tests.

Closes issue #104, which was fixed as a side effect of cf6bfc9.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 21 Sep 2014 16:29:24 +0300
8cc40f8e
Use supplied header ID for TOC rendering.

- Fixes #112 so that `#header {#header-id}` renders the TOC with
  `#header-id` instead of `#toc_1`.
Austin Ziegler austin@zieglers.ca
Mon, 27 Oct 2014 16:49:28 -0400
a5e88a33
Add a flag to turn on header ID generation.

- Fixes #51, #101, and #102.
- Uses the [code][gfm] mentioned by @shurcooL from his Github
  Flavored Markdown parser extension in a [comment on #102][comment].
  Since this was mentioned, I assumed that @shurcooL would be OK with
  this being included under the licence provided by blackfriday (there
  is no licence comment on his code).
- I’ve added it behind another flag, EXTENSION_AUTO_HEADER_IDS, that
  would need to be turned on for it to work. It works with both prefix
  and underline headers.

[gfm]: https://github.com/shurcooL/go/blob/3bec0366a85101d116bf88b477e92ea6cdd75e4e/github_flavored_markdown/main.go#L90-L102
[comment]: https://github.com/russross/blackfriday/issues/102#issuecomment-51272260
Austin Ziegler austin@zieglers.ca
Mon, 27 Oct 2014 16:54:23 -0400
40f28ee0
Prevent generated header collisions, less naively.

> This is a rework of an earlier version of this code.

The automatic header ID generation code submitted in #125 has a subtle
bug where it will use the same ID for multiple headers with identical
text. In the case below, all the headers are rendered a `<h1
id="header">Header</h1>`.

  ```markdown
  # Header
  # Header
  # Header
  # Header
  ```

This change is a simple but robust approach that uses an incrementing
counter and pre-checking to prevent header collision. (The above would
be rendered as `header`, `header-1`, `header-2`, and `header-3`.) In
more complex cases, it will append a new counter suffix (`-1`), like so:

  ```markdown
  # Header
  # Header 1
  # Header
  # Header
  ```

This will generate `header`, `header-1`, `header-1-1`, and `header-1-2`.

This code has two additional changes over the prior version:

1.  Rather than reimplementing @shurcooL’s anchor sanitization code, I
    have imported it as from
    `github.com/shurcooL/go/github_flavored_markdown/sanitized_anchor_name`.

2.  The markdown block parser is now only interested in *generating* a
    sanitized anchor name, not with ensuring its uniqueness. That code
    has been moved to the HTML renderer. This means that if the HTML
    renderer is modified to identify all unique headers prior to
    rendering, the hackish nature of the collision detection can be
    eliminated.
Austin Ziegler austin@zieglers.ca
Sat, 01 Nov 2014 18:35:35 -0400
9c061de9
Allow configurable header ID prefix/suffixes.

This is specifically driven by the Hugo usecase where multiple documents
are often rendered into the same ultimate HTML page.

When a header ID is written to the output HTML format (either through
`HTML_TOC`, `EXTENSION_HEADER_IDS`, or `EXTENSION_AUTO_HEADER_IDS`), it
is possible that multiple documents will hvae identical header IDs. To
permit validation to pass, it is useful to have a per-document prefix or
suffix (in our case, an MD5 of the content filename, and we will be
using it as a suffix).

That is, two documents (`A` and `B`) that have the same header ID (`#
Reason {#reason}`), will end up having an actual header ID of the form
`#reason-DOCID` (e.g., `#reason-A`, `#reason-B`) with these HTML
parameters.

This is built on top of #126 (more intelligent collision detection for
`EXTENSION_AUTO_HEADER_IDS`).
Austin Ziegler austin@zieglers.ca
Sun, 23 Nov 2014 20:37:27 -0500
fa1adcf8
Fix test case.

Fix a minor issue in expected anchor after recent PR. The tests were written before the improvement that squashes non-alphanumeric characters into a single dash, and does not include dashes at the beginning and end. This updates the test case to match that behavior so that tests pass and Travis is green.
Dmitri Shuralyov shurcooL@gmail.com
Mon, 24 Nov 2014 20:01:03 -0800
857a1a02
Add support for angled, double quotes

The flag `HTML_SMARTYPANTS_ANGLED_QUOTES` combined with `HTML_USE_SMARTYPANTS` configures rendering of double quotes as angled left and right quotes (&laquo; &raquo;).

The SmartyPants documentation mentions a special syntax for these, `<<>>`, a syntax neither pretty nor user friendly.

Typical use cases would be either or, or combined, but never in the same document. As an example would be a person from Norway; he has a blog in both English and Norwegian (his native tounge); he would then configure Blackfriday to use angled quotes for the Norwegian section, but keep them as reqular double quotes for the English.

If the flag `HTML_SMARTYPANTS_ANGLED_QUOTES` is not provided, everything works as before this commit.
bep bjorn.erik.pedersen@gmail.com
Wed, 05 Nov 2014 23:18:32 +0100
f4bb968b
Minor cleanup.

Apply gofmt on html.go.
Apply goimports-compatible formatting on block.go (space between standard and third party imports).
Move Travis build status image in a more pleasing, common location.
Remove "Markdown pretty-printer output engine" from TODO steps; this is already done in markdownfmt.
Remove unneeded trailing whitespace in README.
Dmitri Shuralyov shurcooL@gmail.com
Sat, 29 Nov 2014 20:41:11 -0800
f1472188
fix #19: return immediately from link skipping if end of emphasis is found
KenjiTakahashi wozniakk@gmail.com
Mon, 29 Dec 2014 00:32:26 +0100
fdda8b88
add tests for emphasis with links
KenjiTakahashi wozniakk@gmail.com
Wed, 24 Dec 2014 22:05:29 +0100
54a323aa
Update import path of sanitized_anchor_name.

It has moved into a smaller standalone repo.
Closes #139.
Dmitri Shuralyov shurcooL@gmail.com
Sat, 10 Jan 2015 18:23:29 -0800
2c9fe2cd
Avoid converting dates into fractions

So that dates like 1/2/2005 and 2005/3/4 stay the way it is
without turning into ½/2005 and 2005/¾.

See http://discuss.gohugo.io/t/any-way-to-disable-smart-fractions/328
for discussions.
Anthony Fok foka@debian.org
Sat, 24 Jan 2015 15:23:48 -0700
ec460625
Move the license info from README to LICENSE file

It's pretty standard to have a license file, and some projects require
them before your code can be used in their code.  Move the license to
its own file.
Eric Paris eparis@redhat.com
Mon, 09 Feb 2015 15:56:18 -0500
d90024b1
Delete unnecessary copy of input when enable fenced code extension

Copy of input waste time and memory.

Signed-off-by: Tw <tw19881113@gmail.com>
Tw tw19881113@gmail.com
Wed, 11 Feb 2015 14:59:40 +0800
60b0b402
add rel="noreferrer" option
Beyang Liu beyang@sourcegraph.com
Sat, 14 Mar 2015 16:46:32 -0700
ef9974b1
README: rename libupskirt to Sundown.

The original upskirt library by Natacha Porté has been renamed to
libsoldout, while the fork of it that was located at tanoku/upskirt has
been renamed to Sundown and moved to vmg/sundown. Since Blackfriday has
been started as a translation of tanoku/upskirt, rename its mention in
README to Sundown.
Dmitry Chestnykh dmitry@codingrobots.com
Tue, 24 Mar 2015 06:32:12 +0100
29c5b49e
Rename upskirtref to testdata; upskirtref_test.go to ref_test.go.
Dmitry Chestnykh dmitry@codingrobots.com
Tue, 24 Mar 2015 06:27:58 +0100
195dac9f
Fix recognition of consecutive footnotes

The second footnote was treated as if the pair of them were a reference
style link, without checking if the second bit is another footnote.

Fixes issue 158.
Vytautas Šaltenis vytas@rtfb.lt
Fri, 03 Apr 2015 21:05:54 +0300
bd11a52f
update func isSafeLink
elian0211 elian0211@gmail.com
Wed, 25 Feb 2015 21:27:13 +0800
27ba4ceb
update about links
when link to current directory or parent directory
elian0211 elian0211@gmail.com
Fri, 20 Feb 2015 17:06:55 +0800
58c4ddd4
Added test for backslash line break
neclepsio neclepsio@gmail.com
Thu, 23 Apr 2015 10:49:08 +0200
68a3c498
Add EXTENSION_BACKSLASH_LINE_BREAK
neclepsio neclepsio@gmail.com
Wed, 22 Apr 2015 14:10:44 +0200
c1917970
Use EXTENSION_BACKSLASH_LINE_BREAK
neclepsio neclepsio@gmail.com
Wed, 22 Apr 2015 14:09:39 +0200
d4c83fb4
Fix previous commit

Backslash was not removed from output.
neclepsio neclepsio@gmail.com
Wed, 22 Apr 2015 14:04:08 +0200
2824a549
Implement backslash hard line break

See http://spec.commonmark.org/0.18/#example-527
neclepsio neclepsio@gmail.com
Wed, 22 Apr 2015 12:23:19 +0200
f4655604
Cleanup a random bunch of repetitive loops

Replace them with helper function calls.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 07 Apr 2015 21:59:42 +0300
36787eca
Allow heading to end with \#

The problem was in a loop that skipped the optional closing hashes in a
heading like this:

    ### This is an H3 ###

Now it checks to see if a hash is escaped and if it is, treats it as a
rightmost character of the heading text, like this:

    ### This is an H3 #\##   ==>   ### This is an H3 ##

Fixes issue #146.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 07 Apr 2015 21:12:29 +0300
314ce8fe
Add a missing test case for reference override

Exercise link text override.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 06 May 2015 15:57:15 +0300
62f0018e
Replace snake_case with mixedCase
Vytautas Šaltenis vytas@rtfb.lt
Wed, 06 May 2015 15:55:04 +0300
eeb2c393
Merge branch 'master' of https://github.com/jtolds/blackfriday into jtolds-master

Conflicts:
	inline_test.go
Vytautas Šaltenis vytas@rtfb.lt
Wed, 06 May 2015 15:41:12 +0300
8e10236b
support replacing [refid][] syntax link content with alternate content
JT Olds hello@jtolds.com
Thu, 18 Dec 2014 17:36:46 -0700
5e8b222b
Add programmable reference overrides

If a user provides a ReferenceOverride function, then reference ids
will be passed to the given ReferenceOverride function first, before
consulting the generated reference table.

The goal here is to enable programmable support for
"WikiWords"-style identifiers or other application-specific
user-generated keywords.

Example, writing documentation:

 The [Frobnosticator][] is a very important class in our codebase.
 While it is used to frobnosticate widgets in general, it can also
 be passed to the [WeeDoodler][] to interesting effect.

This might be solveable with the HTML Renderer relative prefix, but
I didn't see a good way of making a short link to 'Frobnosticator'
relatively without having to write it twice. Maybe
'<Frobnosticator>' should work? Should Autolinks work for relative
links?

In addition, I wanted a little more richness. I plan to support
Godoc links by prefixing references with a '!', like so:

  Check out the [Frobnosticator][] helper function
  [!util.Frobnosticate()][]

The first link links to the Frobnosticator architectural overview
documentation, whereas the second links to Godoc.

Better advice on how to implement this sort of think with
Blackfriday is highly desired.
JT Olds hello@jtolds.com
Tue, 16 Dec 2014 16:17:49 -0700
18186eea
Do not emit newline after <img> tag.

This changes HTML renderer not to always add a newline character after
<img> tags. This is desirable because <img> tags can be inlined, and
sometimes you want to avoid whitespace on left and right sides. Previous
behavior of always adding a newline would unavoidably create whitespace
after <img> tag.

Update all tests to match new behavior. There are few changes, and
they're completely isolated to inline image tests.

Fixes #169.
Dmitri Shuralyov shurcooL@gmail.com
Mon, 25 May 2015 12:41:06 -0700
c4825a71
Add definition lists extension support
Vincent Batoufflet vincent@batoufflet.info
Fri, 29 May 2015 13:30:49 +0200
d28de22e
fix index out of range panic in reference link

Add checking before accessing the input data.

Fix #172 and #173 issues.

Signed-off-by: Tw <tw19881113@gmail.com>
Tw tw19881113@gmail.com
Mon, 08 Jun 2015 15:31:55 +0800
081aa9c3
Fix definition lists end-of-list detection
Vincent Batoufflet vincent@batoufflet.info
Sun, 07 Jun 2015 09:36:53 +0200
f7510976
Fix escaping asterisks within emphasis

First check for escaped character, *then* look if i-th character is an
emphasis character.

Closes #18.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 13 Oct 2015 19:57:07 +0300
cc3cc10e
Fix bug parsing emphasis

Start searching for emphasis character at 0th index instead of 1st.
Fixes a corner case with doubly emphasised code span followed by
another code span on the same line.

Changes interpretation of improperly nested emphasis, hence the change
in TestEmphasisMix().

Closes #156.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 12 Oct 2015 21:06:27 +0300
08eac30c
Fix footnote followed by a reference style link

When parsing a deferred footnote, we already know it's a footnote from
the '[^' part, so we can use that to hit a proper switch branch
(default) a bit later on.

Closes #164.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 12 Oct 2015 21:18:33 +0300
c9f5708b
Spread out test cases for readability
Vytautas Šaltenis vytas@rtfb.lt
Tue, 20 Oct 2015 20:31:08 +0300
5d3d5c19
Handle comments within a block

Added test cases both for inline and block workflows.

Closes #136.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 11 Oct 2015 11:01:48 +0300
38cc6e9a
Add HTML_SMARTYPANTS_DASHES for toggling smart dashes
Anthony Fok foka@debian.org
Mon, 03 Aug 2015 23:57:26 -0600
6a7bd0d6
README: Add 'Definition lists' and 'Footnotes'
nitoyon nitoyon@gmail.com
Sat, 31 Oct 2015 00:50:10 +0900
4193e866
Drop misleading comment and turn func into method

* The comment is no longer true.
* Other functions similar to terminateBlockquote() are methods, so make
this one a method too.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 09:32:30 +0200
6c330778
Merge pull request #214 from russross/issue-122-test-readability

Make test values more readable, add additional test cases.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 01 Nov 2015 09:25:47 +0200
15eb452a
Fix fenced code processing inside blockquotes

Add a call to fenced code block processor inside the loop that's
responsible for collecting the quoted lines. Grok all the fenced code
block as a part of the quoted text.

Closes #122.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 29 Oct 2015 20:06:27 +0200
607f2ceb
Move complex conditional to a helper func
Vytautas Šaltenis vytas@rtfb.lt
Thu, 29 Oct 2015 20:02:11 +0200
13378865
Refix fenced code blocks w/o preceding blank lines

Change approach at fixing #45: don't patch input markdown at preprocess
pass, instead improve special case detection when parsing paragraphs.

Leave the fenced code block detection in the preprocess pass though,
it's been put to another use since then, to suppress tab expansion
inside code blocks.
Vytautas Šaltenis vytas@rtfb.lt
Wed, 28 Oct 2015 21:37:14 +0200
e93d8f16
Make test values more readable, add additional test cases.
Dmitri Shuralyov shurcooL@gmail.com
Sat, 31 Oct 2015 14:35:21 -0700
a58274ac
Minor style fix: declare ref first in a loop
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 21:07:39 +0200
c29209fc
Add String() method to reference struct
Vytautas Šaltenis vytas@rtfb.lt
Mon, 02 Nov 2015 20:24:34 +0200
9e68ff93
Fix nested footnotes

This is both nasty and neat at the same time. All the code could handle
nested footnotes just fine, the only place that was not working was the
final loop that printed the list. The loop was in a range form, which
couldn't account for another footnote being inserted while processing
existing ones. Changing the loop to the iterative form solves that.

Closes #193.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 02 Nov 2015 20:17:46 +0200
c5943e06
Reformat a dustball of ifs into a switch statement
Vytautas Šaltenis vytas@rtfb.lt
Wed, 04 Nov 2015 21:32:53 +0200
ca8c21a2
Fix footnote following an exclamation point

Link parser interpreted the sequence "![^foo]" as an image, but if
footnote extension is enabled, it's quite clear that it should be
interpreted as a footnote following something with an exclamation point
at the end.

Closes #194.
Vytautas Šaltenis vytas@rtfb.lt
Tue, 03 Nov 2015 20:52:36 +0200
a41899bb
v2: Only include test helpers inside test package.
Dmitri Shuralyov shurcooL@gmail.com
Fri, 01 Jul 2016 11:47:39 -0700
20aa6213
Fix empty path to CSS
Pierre Neidhardt ambrevar@gmail.com
Fri, 01 Jul 2016 18:13:21 +0200
2560c5f1
Fix issue in fenced code block pre-processing.

Forwardport changes from #280.

Fixes #279.
Dmitri Shuralyov shurcooL@gmail.com
Fri, 15 Jul 2016 17:03:02 -0400
2e53c20b
Return a *HTMLRenderer from NewHTMLRenderer

Interfaces should be satisfied implicitly.
Pierre Neidhardt ambrevar@gmail.com
Fri, 01 Jul 2016 13:25:26 +0200
37ffc1c8
Make Node satisfy the Stringer interface

It allows for printing AST dumps in external code
Pierre Neidhardt ambrevar@gmail.com
Fri, 01 Jul 2016 13:24:44 +0200
a5270b6f
Shorten method receivers in Smartypants
Vytautas Šaltenis vytas@rtfb.lt
Thu, 28 Jul 2016 19:26:25 +0300
46b7355a
Fix bullet points in MarkdownCommon docs
Vytautas Šaltenis vytas@rtfb.lt
Thu, 28 Jul 2016 19:23:04 +0300
bd774a20
More lint: smartypants.go
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 21:45:25 +0300
6d7f5e1b
More lint: block.go
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 21:40:45 +0300
cd2f0791
More lint: inline.go
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 21:31:29 +0300
e054c962
More lint: markdown.go and ripples to other files
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 21:28:41 +0300
72633fdd
Lint node.go
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 21:04:20 +0300
f7ec3b0e
Fix a few lint errors, a.k.a. improve docs
Vytautas Šaltenis vytas@rtfb.lt
Wed, 27 Jul 2016 10:11:13 +0300
3fe4ad29
Enable common extensions for benchmark

Also, reset the timer after loading test data.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 30 Jul 2016 21:40:13 +0300
c61b63f4
Repeat a run of reference tests under benchmark

Will help with optimizing later on.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 25 Jul 2016 19:39:51 +0300
ff2d79c2
Fix walk so that it does not step outside the root node

When passed a non-container root node, or when the visitor whould return
SkipChildren for the root node, the former algorithm would go on walking
down the rest of the tree beyond the root.

This commit also removes unneeded functions and variables.
Pierre Neidhardt ambrevar@gmail.com
Wed, 03 Aug 2016 12:25:38 +0530
925d99bc
Add TOC generation tests
Pierre Neidhardt ambrevar@gmail.com
Tue, 09 Aug 2016 15:08:47 +0530
b5ff8e02
Break lines properly in TOC generation and omit content if required
Pierre Neidhardt ambrevar@gmail.com
Tue, 09 Aug 2016 14:59:22 +0530
4d756003
Move TOC generation to the HTML Renderer
Pierre Neidhardt ambrevar@gmail.com
Tue, 09 Aug 2016 12:37:44 +0530
413328d3
Add Icon parameter to the HTML renderer
Pierre Neidhardt ambrevar@gmail.com
Tue, 09 Aug 2016 17:54:34 +0530
fdbedcdb
Export tree manipulation functions
Pierre Neidhardt ambrevar@gmail.com
Tue, 09 Aug 2016 09:06:55 +0530
02da1dfe
Factor Smartypants to HTML

Smartypants is HTML-specific.
There is no need to run Smartypants from `Render()`.
This simplifies extensions built upon the HTML renderer.
Pierre Neidhardt ambrevar@gmail.com
Wed, 10 Aug 2016 09:56:37 +0530
225250dd
html.go: Lint RenderNode()
Pierre Neidhardt ambrevar@gmail.com
Wed, 10 Aug 2016 15:36:50 +0530
d36199c4
Rename firstPass -> preprocess
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 Sep 2016 15:32:37 +0300
3c2cb1ff
Fix typo
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 Sep 2016 15:29:28 +0300
43ba5399
Add some documentation to reference struct
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 Sep 2016 13:16:41 +0300
6947216e
Move footnote rendering to the renderer

Clean up footnotes part of an AST: don't force HTML-specific pieces
there, just keep a clean list of footnotes. Since some renderers might
want to process footnotes differently, let them know about footnotes by
having a flag on that list.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 03 Sep 2016 12:39:16 +0300
ea8dfc48
Move reference extraction to paragraph parser

Move reference and footnote extraction code from firstPass to a
paragraph block parser. This makes firstPass a little bit slimmer, ergo
closer to elimination.
Vytautas Šaltenis vytas@rtfb.lt
Mon, 29 Aug 2016 23:57:59 +0300
efa77da1
Fix omission in list item flags

When parseRefsToAST constructs a list of footnotes, it hardcoded the
item flags to ListTypeOrdered and omitted ListItemBeginningOfList.

However, a quick look around indicates that ListItemBeginningOfList
might have lost its meaning altogether in v2 (it used to control item
spacing in v1, which is now extracted from the AST structure). So add a
TODO to clean that up one day.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 28 Aug 2016 23:00:27 +0300
771cf410
Get rid of secondPass function

Most of its body was redundant, as it was moved to parseRefsToAST. After
removal of that code, only a single line remains, so move it out to the
caller of secondPass.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 28 Aug 2016 22:53:04 +0300
4688db5f
Remove the LaTeX renderer stub and point to Ambrevar's implementation
Pierre Neidhardt ambrevar@gmail.com
Sat, 10 Sep 2016 15:54:43 +0530
1aa82c40
Make golint happy: fix method receiver

golint insists on uniform receiver names.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 17 Sep 2016 19:36:55 +0300
8a111774
Add direct link to a footnote from it's referer

Some renderers might not care to have an explicit list of footnotes at
the end of the document, instead they're interested in the content of
the footnote at the location of a referer. Make their lives easier by
providing such a link
Vytautas Šaltenis vytas@rtfb.lt
Sat, 17 Sep 2016 19:31:29 +0300
14a0c487
Fix walk with non-container root nodes

When passed a non-container root node, the former algorithm would go on
walking down the rest of the tree beyond the root.

The former walk fix was supposed to do that but somehow the code
disappeared in the process.
Pierre Neidhardt ambrevar@gmail.com
Wed, 05 Oct 2016 09:43:05 +0530
627dc87c
Add missing type to TableAlignment* constants
Pierre Neidhardt ambrevar@gmail.com
Sun, 09 Oct 2016 08:43:40 +0530
b61f73e4
Ditch SkipStyle flag

It's been broken since early 2014, which clearly demonstrates that
nobody uses it.

Fixes #252.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 24 Nov 2016 20:37:33 +0200
9c4ef640
Move TOC and OmitContents to HTML flags

The root problem this commit fixes is the duplication of Extensions
field in HTMLRendererParameters. The duplication crept in there only to
support these two flags, so moving the flags solves the problem. They're
only used in renderer anyway.

Fixes #277.
Vytautas Šaltenis vytas@rtfb.lt
Thu, 24 Nov 2016 21:48:48 +0200
d04a53c6
Merge branch 'v2' into v2-perf-tweaks
Vytautas Šaltenis vytas@rtfb.lt
Thu, 02 Feb 2017 12:00:48 +0200
ea57e936
Several fixes after code review
Vytautas Šaltenis vytas@rtfb.lt
Thu, 02 Feb 2017 11:52:49 +0200
120bb2fa
Get rid of the preprocess stage

Yay!!
Vytautas Šaltenis vytas@rtfb.lt
Thu, 10 Nov 2016 21:49:58 +0200
22a3e5b7
Avoid calling bytes.Split() in appendLanguageAttr

This avoids some allocs.
Vytautas Saltenis vytas@uber.com
Sat, 29 Oct 2016 12:09:34 +0300
9357a8f9
Simplify inline() even more

* Move handler call inside the inner loop's 'if handler != nil' clause
* Move appender of possible tail bytes outside of loop
* Get rid of outer loop
* Rename i -> beg

Again, this does not seem to gain much performance, but makes the code
significantly more readable.
Vytautas Saltenis vytas@uber.com
Sat, 29 Oct 2016 11:05:26 +0300
6438ce6d
Avoid some conditionals in inline parser

Rearrange inline parser a little bit to check less conditionals for
every byte.

* Add early check for len(data) == 0
* Move 'for i < len(data)' check inside the (rarer) positive clause of
  trigger result handling
* A check for newline turned out to be redundant
* Look up p.inlineCallback only once

All that does not gain much performance in itself, but doesn't hurt and
makes the code structure simpler, which will hopefully allow further
streamlining.
Vytautas Saltenis vytas@uber.com
Sat, 29 Oct 2016 10:10:22 +0300
c60ee1aa
Avoid allocating []byte for every written newline

This shaves off another ~25% of allocs.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 08 Oct 2016 18:17:00 +0300
46180361
Simplify escapeHTML and uncomment it's benchmark

Simplify and optimize escapeHTML as per @Ambrevar's suggestion: lean on
the fact that we're dealing with bytes: declare a 256-element array with
most of it filled with zeros, except for the few slots that need
escaping. This avoids some conditionals in a tight loop.

Also, uncomment it's benchmark.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 08 Oct 2016 17:58:30 +0300
d9ffdb74
Use bytes.IndexByte to skip til EOL
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 15:24:45 +0300
993325d1
Roll our own implementation of HTML escaper
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 14:33:37 +0300
31f2685b
Remove lots of string literals

Using strings in helper functions causes a lot of string-to-[]byte
allocations. This fix is centered around converging the tag() helper
func to the []byte lingo. In order to do that, a lot of string literals
have moved to global variables, where string to []byte conversion can
happen once.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 12:39:22 +0300
e0fc1a0c
Don't bother removing trailing newlines in code blocks

The code that collects the block bytes has already removed the trialing
newlines, so this heavyweight regexp machinery is actually doing
nothing.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 12:21:53 +0300
39b8ed19
Avoid general purpose ToLower in autolink detection

This is a huuuge low hanging fruit! maybeAutoLink has shrunk from ~25%
of run time to around 3%. I could stop now.
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 12:03:14 +0300
da066414
Add Go 1.{6,7}, stop building on ancient versions
Vytautas Šaltenis vytas@rtfb.lt
Sat, 10 Sep 2016 11:46:22 +0300
747587a5
Fix all headings wrongly referred to as headers

I've left test cases alone since can't lean on the compiler for
crosschecking there.

Fixes #330.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 12 Feb 2017 19:00:18 +0200
7500a7e2
Fix #180 again

The check was introduced with d28de22, when fixing #172 and #173.
Then I removed it with bcd6dd8 when fixing #180
And then it was reintroduced with 232d06c when fixing regression.

It seems that the check can be removed again. All these cases now have
tests (including the one from 69f51af, which seems to have landed to v1
only, copying it here) and they all pass.
Vytautas Šaltenis vytas@rtfb.lt
Sun, 12 Feb 2017 17:57:51 +0200
41159b38
Fix bad merge
Vytautas Šaltenis vytas@rtfb.lt
Tue, 14 Feb 2017 21:58:46 +0200
a8c45a73
Merge branch 'v2' into v2-functional-opts
Vytautas Šaltenis vytas@rtfb.lt
Tue, 14 Feb 2017 21:51:06 +0200
5e1065fa
Fix blooper: remove dead code
Vytautas Šaltenis vytas@rtfb.lt
Thu, 02 Feb 2017 17:24:53 +0200
e81d1d11
Change the public interface to use functional options

Convert the most important Blackfriday's function, Markdown(), to accept
functional options (as per this Dave Cheney's post:
https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis)
Vytautas Šaltenis vytas@rtfb.lt
Thu, 02 Feb 2017 09:35:10 +0200
f805c775
HTTPS allthethings!
Vytautas Šaltenis vytas@rtfb.lt
Fri, 27 Jan 2017 12:13:59 +0200
fb56a7e0
Update README for v2
Vytautas Šaltenis vytas@rtfb.lt
Thu, 26 Jan 2017 13:30:06 +0200