better paragraphs
This commit is contained in:
parent
76d7ee9bc4
commit
dbb20c0e40
@ -10,7 +10,7 @@
|
||||
*/
|
||||
|
||||
var block = {
|
||||
newline: /^\n/,
|
||||
newline: /^\n+/,
|
||||
block: /^ {4,}[^\n]*(?:\n {4,}[^\n]*)*/,
|
||||
heading: /^ *(#{1,6}) *([^\n#]*) *#*/,
|
||||
lheading: /^([^\n]+)\n *(=|-){3,}/,
|
||||
@ -63,10 +63,10 @@ block.lexer = function(str) {
|
||||
|
||||
tokens.links = links;
|
||||
|
||||
return block.token(str, tokens, 0);
|
||||
return block.token(str, tokens);
|
||||
};
|
||||
|
||||
block.token = function(str, tokens, line) {
|
||||
block.token = function(str, tokens) {
|
||||
var rules = block
|
||||
, keys = block.keys
|
||||
, len = keys.length
|
||||
@ -87,43 +87,42 @@ block.token = function(str, tokens, line) {
|
||||
while (scan()) {
|
||||
switch (key) {
|
||||
case 'newline':
|
||||
line++;
|
||||
if (cap[0].length > 1) {
|
||||
tokens.push({
|
||||
type: 'space'
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'hr':
|
||||
tokens.push({
|
||||
type: 'hr',
|
||||
line: line
|
||||
type: 'hr'
|
||||
});
|
||||
break;
|
||||
case 'lheading':
|
||||
tokens.push({
|
||||
type: 'heading',
|
||||
depth: cap[2] === '=' ? 1 : 2,
|
||||
text: cap[1],
|
||||
line: line
|
||||
text: cap[1]
|
||||
});
|
||||
break;
|
||||
case 'heading':
|
||||
tokens.push({
|
||||
type: 'heading',
|
||||
depth: cap[1].length,
|
||||
text: cap[2],
|
||||
line: line
|
||||
text: cap[2]
|
||||
});
|
||||
break;
|
||||
case 'block':
|
||||
cap = cap[0].replace(/^ {4}/gm, '');
|
||||
tokens.push({
|
||||
type: 'block',
|
||||
text: cap,
|
||||
line: line
|
||||
text: cap
|
||||
});
|
||||
break;
|
||||
case 'list':
|
||||
tokens.push({
|
||||
type: 'list_start',
|
||||
ordered: isFinite(cap[2]),
|
||||
line: line
|
||||
ordered: isFinite(cap[2])
|
||||
});
|
||||
// get each top-level
|
||||
// item in the list
|
||||
@ -142,38 +141,32 @@ block.token = function(str, tokens, line) {
|
||||
item = item.replace(space, '');
|
||||
}
|
||||
tokens.push({
|
||||
type: 'list_item_start',
|
||||
line: line
|
||||
type: 'list_item_start'
|
||||
});
|
||||
block.token(item, tokens, line);
|
||||
block.token(item, tokens);
|
||||
tokens.push({
|
||||
type: 'list_item_end',
|
||||
line: line
|
||||
type: 'list_item_end'
|
||||
});
|
||||
});
|
||||
tokens.push({
|
||||
type: 'list_end',
|
||||
line: line
|
||||
type: 'list_end'
|
||||
});
|
||||
break;
|
||||
case 'html':
|
||||
case 'text':
|
||||
tokens.push({
|
||||
type: key,
|
||||
text: cap[0],
|
||||
line: line
|
||||
text: cap[0]
|
||||
});
|
||||
break;
|
||||
case 'blockquote':
|
||||
tokens.push({
|
||||
type: 'blockquote_start',
|
||||
line: line
|
||||
type: 'blockquote_start'
|
||||
});
|
||||
cap = cap[0].replace(/^ *>/gm, '');
|
||||
block.token(cap, tokens, line);
|
||||
block.token(cap, tokens);
|
||||
tokens.push({
|
||||
type: 'blockquote_end',
|
||||
line: line
|
||||
type: 'blockquote_end'
|
||||
});
|
||||
break;
|
||||
}
|
||||
@ -357,6 +350,8 @@ var next = function() {
|
||||
|
||||
var tok = function() {
|
||||
switch (token.type) {
|
||||
case 'space':
|
||||
return '';
|
||||
case 'hr':
|
||||
return '<hr>';
|
||||
case 'heading':
|
||||
@ -400,11 +395,9 @@ var tok = function() {
|
||||
return inline.lexer(token.text);
|
||||
case 'text':
|
||||
var body = [ token.text ]
|
||||
, last = token.line
|
||||
, top;
|
||||
while ((top = tokens[tokens.length-1])
|
||||
&& top.type === 'text'
|
||||
&& top.line === ++last) {
|
||||
&& top.type === 'text') {
|
||||
body.push(next().text);
|
||||
}
|
||||
return '<p>'
|
||||
|
Loading…
x
Reference in New Issue
Block a user