This is a major refactor of the links subparser, previously known as anchors subparser.
Closes#355, #534
BREAKING CHANGE: `excludeTrailingPunctuationFromURLs` option was removed. This is now the default behavior
In text, headings only require a single linebreak to be treated as such.
However, in lists, they would require a double linebreak.
Now, the behavior in lists and text is consistent, requiring only a single
linebreak.
Closes#495
This feature was seen as a bit "duh!" since midword asterisks are not really a thing and, for these situations, you can simply escape the asterisk character.
Closes#499
BREAKING CHANGE: literalMidWordAsterisks option was removed and so asterisks will always retain their markdown magic meaning in a source text.
If you're using this feature, and you wish to retain this option, you can find a shim here: <https://gist.github.com/tivie/7f8a88c89ffb00d2afe6c59a25528386>
In some circumstances, on a reference style image, the last capturing
group is ignored, which causes the fucntion argument to return the number
of matches instead of a string (or undefined).
Checking if the title parameter is a string ensures that the title
parameter is actually something that was caught by the regex and not some
metadata.
Closes#585
One or more spaces before the language declaration of a code block is supported by Github.
E.g.
``` html
<div>HTML!</div>
```
``` html
<div>HTML!</div>
```
```html
<div>HTML!</div>
```
Closes#569
BREAKING CHANGE: makeHtml subparsers names changed, by prepending 'makehtml.' to them.
Example: 'anchors', subparser is now named 'makehtml.anchors'.
Event names were also changed to reflect this.
Example: 'anchors.before' is now named 'makehtml.anchors.before'.
**To migrate:**
If you have a listener extension, replace the old event name with the new one. Example:
Replace this
```js
showdown.extension('myext', function() {
return [{
type: 'listener',
listeners: {
'anchors.before': function (event, text, converter, options, globals) {
//... some code
return text;
}
}];
});
```
with this
```js
showdown.extension('myext', function() {
return [{
type: 'listener',
listeners: {
'makehtml.anchors.before': function (event, text, converter, options, globals) {
//... some code
return text;
}
}];
});
```
A simple metadata parser can be useful in markdown documents.
This commit introduces the feature, with the following syntax:
--- or ««« at tstart of the document,
(optionally) followed by a alphanumeric format identifier
followed by key value pairs separated by a colon and a space
followed by --- or ÂÂÂ
Also, adds methods for retrieving the parsed metadata, namely:
getMetadata() and getMetadataFormat
Closes#260
Code spans are now hashed after parsing which means extensions
that listen to spanGamut events no longer need to worry about
escaping "custom" magic chars inside code spans.
Closes#464
Syntax is:
```
__double underscores__
or
___triple unserscores___
```
Keep in mind that, with this option enabled, underscore no longer
parses as `<em>` or `<strong>`
Closes#450