eric6/ThirdParty/Pygments/pygments/filter.py

Tue, 15 Sep 2020 19:09:05 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 15 Sep 2020 19:09:05 +0200
changeset 7701
25f42e208e08
parent 7547
21b0534faebc
child 7983
54c5cfbb1e29
permissions
-rw-r--r--

Pygments: updated to 2.7.0.

7701
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
1 # -*- coding: utf-8 -*-
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
2 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
3 pygments.filter
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
4 ~~~~~~~~~~~~~~~
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
5
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
6 Module that implements the default filter.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
7
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
8 :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
9 :license: BSD, see LICENSE for details.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
10 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
11
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
12
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
13 def apply_filters(stream, filters, lexer=None):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
14 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
15 Use this method to apply an iterable of filters to
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
16 a stream. If lexer is given it's forwarded to the
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
17 filter, otherwise the filter receives `None`.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
18 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
19 def _apply(filter_, stream):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
20 yield from filter_.filter(lexer, stream)
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
21 for filter_ in filters:
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
22 stream = _apply(filter_, stream)
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
23 return stream
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
24
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
25
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
26 def simplefilter(f):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
27 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
28 Decorator that converts a function into a filter::
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
29
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
30 @simplefilter
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
31 def lowercase(self, lexer, stream, options):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
32 for ttype, value in stream:
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
33 yield ttype, value.lower()
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
34 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
35 return type(f.__name__, (FunctionFilter,), {
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
36 '__module__': getattr(f, '__module__'),
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
37 '__doc__': f.__doc__,
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
38 'function': f,
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
39 })
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
40
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
41
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
42 class Filter:
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
43 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
44 Default filter. Subclass this class or use the `simplefilter`
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
45 decorator to create own filters.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
46 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
47
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
48 def __init__(self, **options):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
49 self.options = options
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
50
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
51 def filter(self, lexer, stream):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
52 raise NotImplementedError()
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
53
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
54
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
55 class FunctionFilter(Filter):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
56 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
57 Abstract class used by `simplefilter` to create simple
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
58 function filters on the fly. The `simplefilter` decorator
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
59 automatically creates subclasses of this class for
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
60 functions passed to it.
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
61 """
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
62 function = None
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
63
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
64 def __init__(self, **options):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
65 if not hasattr(self, 'function'):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
66 raise TypeError('%r used without bound function' %
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
67 self.__class__.__name__)
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
68 Filter.__init__(self, **options)
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
69
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
70 def filter(self, lexer, stream):
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
71 # pylint: disable=not-callable
25f42e208e08 Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7547
diff changeset
72 yield from self.function(lexer, stream, self.options)

eric ide

mercurial