@@ 451-500 (lines=50) @@ | ||
448 | self.tokens.append({'type': 'text', 'text': text}) |
|
449 | ||
450 | ||
451 | class InlineGrammar(object): |
|
452 | """Grammars for inline level tokens.""" |
|
453 | ||
454 | escape = re.compile(r'^\\([\\`*{}\[\]()#+\-.!_>~|])') # \* \+ \! .... |
|
455 | inline_html = re.compile( |
|
456 | r'^(?:%s|%s|%s)' % ( |
|
457 | r'<!--[\s\S]*?-->', |
|
458 | r'<(\w+%s)((?:%s)*?)\s*>([\s\S]*?)<\/\1>' % ( |
|
459 | _valid_end, _valid_attr), |
|
460 | r'<\w+%s(?:%s)*?\s*\/?>' % (_valid_end, _valid_attr), |
|
461 | ) |
|
462 | ) |
|
463 | autolink = re.compile(r'^<([^ >]+(@|:)[^ >]+)>') |
|
464 | link = re.compile( |
|
465 | r'^!?\[(' |
|
466 | r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' |
|
467 | r')\]\(' |
|
468 | r'''\s*(<)?([\s\S]*?)(?(2)>)(?:\s+['"]([\s\S]*?)['"])?\s*''' |
|
469 | r'\)' |
|
470 | ) |
|
471 | reflink = re.compile( |
|
472 | r'^!?\[(' |
|
473 | r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' |
|
474 | r')\]\s*\[([^^\]]*)\]' |
|
475 | ) |
|
476 | nolink = re.compile(r'^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]') |
|
477 | url = re.compile(r'''^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])''') |
|
478 | double_emphasis = re.compile( |
|
479 | r'^_{2}([\s\S]+?)_{2}(?!_)' # __word__ |
|
480 | r'|' |
|
481 | r'^\*{2}([\s\S]+?)\*{2}(?!\*)' # **word** |
|
482 | ) |
|
483 | emphasis = re.compile( |
|
484 | r'^\b_((?:__|[^_])+?)_\b' # _word_ |
|
485 | r'|' |
|
486 | r'^\*((?:\*\*|[^\*])+?)\*(?!\*)' # *word* |
|
487 | ) |
|
488 | code = re.compile(r'^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)') # `code` |
|
489 | linebreak = re.compile(r'^ {2,}\n(?!\s*$)') |
|
490 | strikethrough = re.compile(r'^~~(?=\S)([\s\S]*?\S)~~') # ~~word~~ |
|
491 | footnote = re.compile(r'^\[\^([^\]]+)\]') |
|
492 | text = re.compile(r'^[\s\S]+?(?=[\\<!\[_*`~]|https?://| {2,}\n|$)') |
|
493 | ||
494 | def hard_wrap(self): |
|
495 | """Grammar for hard wrap linebreak. You don't need to add two |
|
496 | spaces at the end of a line. |
|
497 | """ |
|
498 | self.linebreak = re.compile(r'^ *\n(?!\s*$)') |
|
499 | self.text = re.compile( |
|
500 | r'^[\s\S]+?(?=[\\<!\[_*`~]|https?://| *\n|$)' |
|
501 | ) |
|
502 | ||
503 |
@@ 430-478 (lines=49) @@ | ||
427 | self.tokens.append({'type': 'text', 'text': text}) |
|
428 | ||
429 | ||
430 | class InlineGrammar(object): |
|
431 | """Grammars for inline level tokens.""" |
|
432 | ||
433 | escape = re.compile(r'^\\([\\`*{}\[\]()#+\-.!_>~|])') # \* \+ \! .... |
|
434 | inline_html = re.compile( |
|
435 | r'^(?:%s|%s|%s)' % ( |
|
436 | r'<!--[\s\S]*?-->', |
|
437 | r'<(\w+%s)((?:%s)*?)>([\s\S]*?)<\/\1>' % (_valid_end, _valid_attr), |
|
438 | r'<\w+%s(?:%s)*?>' % (_valid_end, _valid_attr), |
|
439 | ) |
|
440 | ) |
|
441 | autolink = re.compile(r'^<([^ >]+(@|:)[^ >]+)>') |
|
442 | link = re.compile( |
|
443 | r'^!?\[(' |
|
444 | r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' |
|
445 | r')\]\(' |
|
446 | r'''\s*(<)?([\s\S]*?)(?(2)>)(?:\s+['"]([\s\S]*?)['"])?\s*''' |
|
447 | r'\)' |
|
448 | ) |
|
449 | reflink = re.compile( |
|
450 | r'^!?\[(' |
|
451 | r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' |
|
452 | r')\]\s*\[([^^\]]*)\]' |
|
453 | ) |
|
454 | nolink = re.compile(r'^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]') |
|
455 | url = re.compile(r'''^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])''') |
|
456 | double_emphasis = re.compile( |
|
457 | r'^_{2}([\s\S]+?)_{2}(?!_)' # __word__ |
|
458 | r'|' |
|
459 | r'^\*{2}([\s\S]+?)\*{2}(?!\*)' # **word** |
|
460 | ) |
|
461 | emphasis = re.compile( |
|
462 | r'^\b_((?:__|[\s\S])+?)_\b' # _word_ |
|
463 | r'|' |
|
464 | r'^\*((?:\*\*|[\s\S])+?)\*(?!\*)' # *word* |
|
465 | ) |
|
466 | code = re.compile(r'^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)') # `code` |
|
467 | linebreak = re.compile(r'^ {2,}\n(?!\s*$)') |
|
468 | strikethrough = re.compile(r'^~~(?=\S)([\s\S]+?\S)~~') # ~~word~~ |
|
469 | footnote = re.compile(r'^\[\^([^\]]+)\]') |
|
470 | text = re.compile(r'^[\s\S]+?(?=[\\<!\[_*`~]|https?://| {2,}\n|$)') |
|
471 | ||
472 | def hard_wrap(self): |
|
473 | """Grammar for hard wrap linebreak. You don't need to add two |
|
474 | spaces at the end of a line. |
|
475 | """ |
|
476 | self.linebreak = re.compile(r'^ *\n(?!\s*$)') |
|
477 | self.text = re.compile( |
|
478 | r'^[\s\S]+?(?=[\\<!\[_*`~]|https?://| *\n|$)' |
|
479 | ) |
|
480 | ||
481 |