diff options
author | Georg Brandl <georg@python.org> | 2019-11-30 07:43:20 +0100 |
---|---|---|
committer | Georg Brandl <g.brandl@fz-juelich.de> | 2019-12-09 12:32:53 +0100 |
commit | 4b2e99fb693d66eccb881fc57d9a40139a7572fa (patch) | |
tree | 7be6170836b28d8e17f8b9acb150199c16ebf4bc | |
parent | 64e9f90a6a91018ce9941c8b5a2362ff685c8fcf (diff) | |
download | pygments-git-4b2e99fb693d66eccb881fc57d9a40139a7572fa.tar.gz |
dmesg lexer refinements:
* move to textfmts.py where other logfiles are
* fix detection of dmesg -x (heuristic "unknown" state must be last)
* change styles for debug/warn lines
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | doc/languages.rst | 6 | ||||
-rw-r--r-- | pygments/lexers/_mapping.py | 2 | ||||
-rw-r--r-- | pygments/lexers/log.py | 59 | ||||
-rw-r--r-- | pygments/lexers/textfmts.py | 53 |
5 files changed, 54 insertions, 67 deletions
@@ -13,6 +13,7 @@ Version 2.6 - Added lexers: + * Linux kernel logs (PR#1310) * Ride (PR#1319, PR#1321) * USD (PR#1290) * Mosel (PR#1287, PR#1326) diff --git a/doc/languages.rst b/doc/languages.rst index 03e6f1cc..57bea8ea 100644 --- a/doc/languages.rst +++ b/doc/languages.rst @@ -201,11 +201,6 @@ Template languages * Tea * `Twig <http://twig.sensiolabs.org/>`_ -Log files ---------- - -* Linux kernel log (dmesg) - Other markup ------------ @@ -240,6 +235,7 @@ Other markup * JSON, JSON-LD * Lean theorem prover * Lighttpd config files +* Linux kernel log (dmesg) * LLVM assembly * LSL scripts * Makefiles diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 8a09ea2b..9f306122 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -233,7 +233,7 @@ LEXERS = { 'JuttleLexer': ('pygments.lexers.javascript', 'Juttle', ('juttle', 'juttle'), ('*.juttle',), ('application/juttle', 'application/x-juttle', 'text/x-juttle', 'text/juttle')), 'KalLexer': ('pygments.lexers.javascript', 'Kal', ('kal',), ('*.kal',), ('text/kal', 'application/kal')), 'KconfigLexer': ('pygments.lexers.configs', 'Kconfig', ('kconfig', 'menuconfig', 'linux-config', 'kernel-config'), ('Kconfig', '*Config.in*', 'external.in*', 'standard-modules.in'), ('text/x-kconfig',)), - 'KernelLogLexer': ('pygments.lexers.log', 'Kernel log', ('kmsg', 'dmesg'), ('*.kmsg', '*.dmesg'), ()), + 'KernelLogLexer': ('pygments.lexers.textfmts', 'Kernel log', ('kmsg', 'dmesg'), ('*.kmsg', '*.dmesg'), ()), 'KokaLexer': ('pygments.lexers.haskell', 'Koka', ('koka',), ('*.kk', '*.kki'), ('text/x-koka',)), 'KotlinLexer': ('pygments.lexers.jvm', 'Kotlin', ('kotlin',), ('*.kt',), ('text/x-kotlin',)), 'LSLLexer': ('pygments.lexers.scripting', 'LSL', ('lsl',), ('*.lsl',), ('text/x-lsl',)), diff --git a/pygments/lexers/log.py b/pygments/lexers/log.py deleted file mode 100644 index 4f651bf2..00000000 --- a/pygments/lexers/log.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- -""" - pygments.lexers.log - ~~~~~~~~~~~~~~~~~~~~~ - - Lexers for various log file formats. - - :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from pygments.lexer import RegexLexer, include -from pygments.token import * - -__all__ = ['KernelLogLexer'] - - -class KernelLogLexer(RegexLexer): - name = 'Kernel log' - aliases = ['kmsg', 'dmesg'] - filenames = ['*.kmsg', '*.dmesg'] - - tokens = { - 'root': [ - (r'^(?=\[)', Text, 'unknown'), - (r'^([^:]+):debug\s*: (?=\[)', Text, 'debug'), - (r'^([^:]+):info\s*: (?=\[)', Text, 'info'), - (r'^([^:]+):warn\s*: (?=\[)', Text, 'warn'), - (r'^([^:]+):notice\s*: (?=\[)', Text, 'warn'), - (r'^([^:]+):err\s*: (?=\[)', Text, 'error'), - (r'^([^:]+):crit\s*: (?=\[)', Text, 'error'), - ], - 'unknown': [ - (r'^(?=.+(warning|notice|audit|deprecated))', Text, 'warn'), - (r'^(?=.+(error|critical|fail|Bug))', Text, 'error'), - (r'', Text, 'info'), - ], - 'base': [ - (r'\[[0-9\. ]+\] ', Number), - (r'(?<=\] ).+?:', Keyword), - (r'\n', Text, '#pop'), - ], - 'debug': [ - include('base'), - (r'.+\n', Text, '#pop') - ], - 'info': [ - include('base'), - (r'.+\n', Text, '#pop') - ], - 'warn': [ - include('base'), - (r'.+', Comment, '#pop') - ], - 'error': [ - include('base'), - (r'.+\n', Generic.Error, '#pop') - ] - } diff --git a/pygments/lexers/textfmts.py b/pygments/lexers/textfmts.py index a310f8b5..7135aa94 100644 --- a/pygments/lexers/textfmts.py +++ b/pygments/lexers/textfmts.py @@ -12,13 +12,13 @@ import re from pygments.lexers import guess_lexer, get_lexer_by_name -from pygments.lexer import RegexLexer, bygroups, default, do_insertions +from pygments.lexer import RegexLexer, bygroups, default, include from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ Number, Generic, Literal, Punctuation from pygments.util import ClassNotFound __all__ = ['IrcLogsLexer', 'TodotxtLexer', 'HttpLexer', 'GettextLexer', - 'NotmuchLexer'] + 'NotmuchLexer', 'KernelLogLexer'] class IrcLogsLexer(RegexLexer): @@ -380,3 +380,52 @@ class NotmuchLexer(RegexLexer): def __init__(self, **options): self.body_lexer = options.get('body_lexer', None) RegexLexer.__init__(self, **options) + + +class KernelLogLexer(RegexLexer): + """ + For Linux Kernel log ("dmesg") output. + + .. versionadded:: 2.6 + """ + name = 'Kernel log' + aliases = ['kmsg', 'dmesg'] + filenames = ['*.kmsg', '*.dmesg'] + + tokens = { + 'root': [ + (r'^[^:]+:debug : (?=\[)', Text, 'debug'), + (r'^[^:]+:info : (?=\[)', Text, 'info'), + (r'^[^:]+:warn : (?=\[)', Text, 'warn'), + (r'^[^:]+:notice: (?=\[)', Text, 'warn'), + (r'^[^:]+:err : (?=\[)', Text, 'error'), + (r'^[^:]+:crit : (?=\[)', Text, 'error'), + (r'^(?=\[)', Text, 'unknown'), + ], + 'unknown': [ + (r'^(?=.+(warning|notice|audit|deprecated))', Text, 'warn'), + (r'^(?=.+(error|critical|fail|Bug))', Text, 'error'), + default('info'), + ], + 'base': [ + (r'\[[0-9\. ]+\] ', Number), + (r'(?<=\] ).+?:', Keyword), + (r'\n', Text, '#pop'), + ], + 'debug': [ + include('base'), + (r'.+\n', Comment, '#pop') + ], + 'info': [ + include('base'), + (r'.+\n', Text, '#pop') + ], + 'warn': [ + include('base'), + (r'.+', Generic.Strong, '#pop') + ], + 'error': [ + include('base'), + (r'.+\n', Generic.Error, '#pop') + ] + } |