556 (r'^(\s*)([0-9]+\.)( .+\n)', |
556 (r'^(\s*)([0-9]+\.)( .+\n)', |
557 bygroups(Text, Keyword, using(this, state='inline'))), |
557 bygroups(Text, Keyword, using(this, state='inline'))), |
558 # quote |
558 # quote |
559 (r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)), |
559 (r'^(\s*>\s)(.+\n)', bygroups(Keyword, Generic.Emph)), |
560 # code block fenced by 3 backticks |
560 # code block fenced by 3 backticks |
561 (r'^(\s*```\n(.+\n)+\s*```$)', String.Backtick), |
561 (r'^(\s*```\n[\w\W]*?^\s*```$\n)', String.Backtick), |
562 # code block with language |
562 # code block with language |
563 (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$)', _handle_codeblock), |
563 (r'^(\s*```)(\w+)(\n)([\w\W]*?)(^\s*```$\n)', _handle_codeblock), |
564 # code block indented with 4 spaces or 1 tab |
|
565 (r'(\n\n)((\ {4}|\t)(.+\n)+)', bygroups(Text, String.Backtick)), |
|
566 |
564 |
567 include('inline'), |
565 include('inline'), |
568 ], |
566 ], |
569 'inline': [ |
567 'inline': [ |
570 # escape |
568 # escape |
571 (r'\\.', Text), |
569 (r'\\.', Text), |
572 # inline code |
570 # inline code |
573 (r'([^`])(`[^`\n]+`)', bygroups(Text, String.Backtick)), |
571 (r'([^`]?)(`[^`\n]+`)', bygroups(Text, String.Backtick)), |
574 # warning: the following rules eat outer tags. |
572 # warning: the following rules eat outer tags. |
575 # eg. **foo _bar_ baz** => foo and baz are not recognized as bold |
573 # eg. **foo _bar_ baz** => foo and baz are not recognized as bold |
576 # bold fenced by '**' |
574 # bold fenced by '**' |
577 (r'(\*\*[^* \n][^*\n]*\*\*)', bygroups(Generic.Strong)), |
575 (r'([^\*]?)(\*\*[^* \n][^*\n]*\*\*)', bygroups(Text, Generic.Strong)), |
578 # # bold fenced by '__' |
576 # bold fenced by '__' |
579 (r'(\_\_[^_ \n][^_\n]*\_\_)', bygroups(Generic.Strong)), |
577 (r'([^_]?)(__[^_ \n][^_\n]*__)', bygroups(Text, Generic.Strong)), |
580 # italics fenced by '*' |
578 # italics fenced by '*' |
581 (r'(\*[^* \n][^*\n]*\*)', bygroups(Generic.Emph)), |
579 (r'([^\*]?)(\*[^* \n][^*\n]*\*)', bygroups(Text, Generic.Emph)), |
582 # italics fenced by '_' |
580 # italics fenced by '_' |
583 (r'(\_[^_ \n][^_\n]*\_)', bygroups(Generic.Emph)), |
581 (r'([^_]?)(_[^_ \n][^_\n]*_)', bygroups(Text, Generic.Emph)), |
584 # strikethrough |
582 # strikethrough |
585 (r'([^~]*)(~~[^~]+~~)', bygroups(Text, Generic.Deleted)), |
583 (r'([^~]?)(~~[^~ \n][^~\n]*~~)', bygroups(Text, Generic.Deleted)), |
586 # mentions and topics (twitter and github stuff) |
584 # mentions and topics (twitter and github stuff) |
587 (r'[@#][\w/:]+', Name.Entity), |
585 (r'[@#][\w/:]+', Name.Entity), |
588 # (image?) links eg:  |
586 # (image?) links eg:  |
589 (r'(!?\[)([^]]+)(\])(\()([^)]+)(\))', |
587 (r'(!?\[)([^]]+)(\])(\()([^)]+)(\))', |
590 bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)), |
588 bygroups(Text, Name.Tag, Text, Text, Name.Attribute, Text)), |