summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2019-11-30 07:43:20 +0100
committerGeorg Brandl <g.brandl@fz-juelich.de>2019-12-09 12:32:53 +0100
commit4b2e99fb693d66eccb881fc57d9a40139a7572fa (patch)
tree7be6170836b28d8e17f8b9acb150199c16ebf4bc
parent64e9f90a6a91018ce9941c8b5a2362ff685c8fcf (diff)
downloadpygments-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--CHANGES1
-rw-r--r--doc/languages.rst6
-rw-r--r--pygments/lexers/_mapping.py2
-rw-r--r--pygments/lexers/log.py59
-rw-r--r--pygments/lexers/textfmts.py53
5 files changed, 54 insertions, 67 deletions
diff --git a/CHANGES b/CHANGES
index 9337b5f0..6ac44302 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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')
+ ]
+ }