Merge branch 'compliant'
This commit is contained in:
commit
141accbfaf
@ -54,7 +54,6 @@ There may also be some bugs.
|
|||||||
- Find a better way of testing. Create a test suite from scratch because most
|
- Find a better way of testing. Create a test suite from scratch because most
|
||||||
markdown compilers don't appear to be working properly in every aspect (but
|
markdown compilers don't appear to be working properly in every aspect (but
|
||||||
it's hard to tell because the markdown "spec" is so vague).
|
it's hard to tell because the markdown "spec" is so vague).
|
||||||
- Possibly alter rules to recognize arbitrary blocks of HTML better.
|
|
||||||
- Recognize and parse paragraph list items better.
|
- Recognize and parse paragraph list items better.
|
||||||
- Add an explicit pretty printing and minification feature.
|
- Add an explicit pretty printing and minification feature.
|
||||||
|
|
||||||
|
@ -196,25 +196,25 @@ block.token = function(str, tokens, line) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
var inline = {
|
var inline = {
|
||||||
|
escape: /^\\([\\`*{}\[\]()#+\-.!])/,
|
||||||
autolink: /^<([^ >]+(:|@)[^ >]+)>/,
|
autolink: /^<([^ >]+(:|@)[^ >]+)>/,
|
||||||
tag: /^<[^\n>]+>/,
|
tag: /^<[^\n>]+>/,
|
||||||
img: /^!\[([^\]]+)\]\(([^\s\)]+)\s*([^\)]*)\)/,
|
link: /^!?\[([^\]]+)\]\(([^\)]+)\)/,
|
||||||
link: /^\[([^\]]+)\]\(([^\)]+)\)/,
|
reflink: /^!?\[([^\]]+)\]\[([^\]]+)\]/,
|
||||||
reflink: /^\[([^\]]+)\]\[([^\]]+)\]/,
|
|
||||||
strong: /^__([\s\S]+?)__|^\*\*([\s\S]+?)\*\*/,
|
strong: /^__([\s\S]+?)__|^\*\*([\s\S]+?)\*\*/,
|
||||||
em: /^_([^_]+)_|^\*([^*]+)\*/,
|
em: /^_([^_]+)_|^\*([^*]+)\*/,
|
||||||
escape: /^`([^`]+)`|^``([\s\S]+?)``/
|
code: /^`([^`]+)`|^``([\s\S]+?)``/
|
||||||
};
|
};
|
||||||
|
|
||||||
inline.keys = [
|
inline.keys = [
|
||||||
|
'escape',
|
||||||
'autolink',
|
'autolink',
|
||||||
'tag',
|
'tag',
|
||||||
'img',
|
|
||||||
'link',
|
'link',
|
||||||
'reflink',
|
'reflink',
|
||||||
'strong',
|
'strong',
|
||||||
'em',
|
'em',
|
||||||
'escape'
|
'code'
|
||||||
];
|
];
|
||||||
|
|
||||||
// hacky, but performant
|
// hacky, but performant
|
||||||
@ -245,9 +245,10 @@ inline.text = (function(rules) {
|
|||||||
inline.lexer = function(str) {
|
inline.lexer = function(str) {
|
||||||
var out = ''
|
var out = ''
|
||||||
, links = tokens.links
|
, links = tokens.links
|
||||||
, link
|
, link = {}
|
||||||
, text
|
, text
|
||||||
, href;
|
, href
|
||||||
|
, val;
|
||||||
|
|
||||||
var rules = inline
|
var rules = inline
|
||||||
, keys = inline.keys
|
, keys = inline.keys
|
||||||
@ -268,35 +269,52 @@ inline.lexer = function(str) {
|
|||||||
|
|
||||||
while (scan()) {
|
while (scan()) {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
|
case 'escape':
|
||||||
|
out += cap[1];
|
||||||
|
break;
|
||||||
case 'tag':
|
case 'tag':
|
||||||
out += cap[0];
|
out += cap[0];
|
||||||
break;
|
break;
|
||||||
case 'img':
|
|
||||||
out += '<img src="'
|
|
||||||
+ escape(cap[2])
|
|
||||||
+ '" alt="' + escape(cap[1])
|
|
||||||
+ '"'
|
|
||||||
+ (cap[3]
|
|
||||||
? ' title="'
|
|
||||||
+ escape(cap[3])
|
|
||||||
+ '"'
|
|
||||||
: '')
|
|
||||||
+ '>';
|
|
||||||
break;
|
|
||||||
case 'link':
|
case 'link':
|
||||||
case 'reflink':
|
case 'reflink':
|
||||||
link = links[cap[2]] || '';
|
if (cap[0][0] !== '!') {
|
||||||
out += '<a href="'
|
if (key === 'reflink') {
|
||||||
+ escape(link.href || cap[2])
|
link = links[cap[2]];
|
||||||
+ '"'
|
} else {
|
||||||
+ (link.title
|
link.href = cap[2];
|
||||||
? ' title="'
|
link.title = cap[3];
|
||||||
+ escape(link.title)
|
}
|
||||||
+ '"'
|
out += '<a href="'
|
||||||
: '')
|
+ escape(link.href)
|
||||||
+ '>'
|
+ '"'
|
||||||
+ inline.lexer(cap[1])
|
+ (link.title
|
||||||
+ '</a>';
|
? ' title="'
|
||||||
|
+ escape(link.title)
|
||||||
|
+ '"'
|
||||||
|
: '')
|
||||||
|
+ '>'
|
||||||
|
+ inline.lexer(cap[1])
|
||||||
|
+ '</a>';
|
||||||
|
} else {
|
||||||
|
if (key === 'reflink') {
|
||||||
|
link = links[cap[2]];
|
||||||
|
} else {
|
||||||
|
val = cap[2].match(/^([^\s]+)\s*(.+)?/);
|
||||||
|
link.href = val[1];
|
||||||
|
link.title = val[2];
|
||||||
|
}
|
||||||
|
out += '<img src="'
|
||||||
|
+ escape(link.href)
|
||||||
|
+ '" alt="'
|
||||||
|
+ escape(cap[1])
|
||||||
|
+ '"'
|
||||||
|
+ (link.title
|
||||||
|
? ' title="'
|
||||||
|
+ escape(link.title)
|
||||||
|
+ '"'
|
||||||
|
: '')
|
||||||
|
+ '>';
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'autolink':
|
case 'autolink':
|
||||||
if (cap[2] === '@') {
|
if (cap[2] === '@') {
|
||||||
@ -320,7 +338,7 @@ inline.lexer = function(str) {
|
|||||||
+ inline.lexer(cap[2] || cap[1])
|
+ inline.lexer(cap[2] || cap[1])
|
||||||
+ '</em>';
|
+ '</em>';
|
||||||
break;
|
break;
|
||||||
case 'escape':
|
case 'code':
|
||||||
out += '<code>'
|
out += '<code>'
|
||||||
+ escape(cap[2] || cap[1])
|
+ escape(cap[2] || cap[1])
|
||||||
+ '</code>';
|
+ '</code>';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user