From c1fbeffde559062f8e9976ccdd910bd5c6905983 Mon Sep 17 00:00:00 2001 From: Kristiyan Nikolov Date: Wed, 2 Dec 2015 14:47:13 +0200 Subject: [PATCH] Adds support for more lexers If you use cheat to save some programming snippets this might be useful. For example if you have a long list of SQL Query cheats, you can do the following: Enter ```sql in the beginning of the file containing the cheats content. Example file: sql ```sql SELECT 17 & 16 = 16; SELECT 2+4+8+16 & 1 = 0; --- cheat/utils.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cheat/utils.py b/cheat/utils.py index 28ba2eb..227954f 100644 --- a/cheat/utils.py +++ b/cheat/utils.py @@ -12,14 +12,23 @@ def colorize(sheet_content): try: from pygments import highlight - from pygments.lexers import BashLexer + from pygments.lexers import get_lexer_by_name from pygments.formatters import TerminalFormatter # if pygments can't load, just return the uncolorized text except ImportError: return sheet_content - return highlight(sheet_content, BashLexer(), TerminalFormatter()) + first_line = sheet_content.splitlines()[0] + lexer = get_lexer_by_name('bash') + if first_line.startswith('```'): + sheet_content = '\n'.join(sheet_content.split('\n')[1:]) + try: + lexer = get_lexer_by_name(first_line[3:]) + except Exception: + pass + + return highlight(sheet_content, lexer, TerminalFormatter()) def die(message):