mirror of
https://github.com/kovidgoyal/calibre.git
synced 2026-03-05 00:13:41 -05:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""cssutils helper
|
|
"""
|
|
__all__ = ['Deprecated', 'normalize']
|
|
__docformat__ = 'restructuredtext'
|
|
__version__ = '$Id: errorhandler.py 1234 2008-05-22 20:26:12Z cthedot $'
|
|
|
|
import re
|
|
|
|
class Deprecated(object):
|
|
"""This is a decorator which can be used to mark functions
|
|
as deprecated. It will result in a warning being emitted
|
|
when the function is used.
|
|
|
|
It accepts a single paramter ``msg`` which is shown with the warning.
|
|
It should contain information which function or method to use instead.
|
|
"""
|
|
def __init__(self, msg):
|
|
self.msg = msg
|
|
|
|
def __call__(self, func):
|
|
def newFunc(*args, **kwargs):
|
|
import warnings
|
|
warnings.warn("Call to deprecated method %r. %s" %
|
|
(func.__name__, self.msg),
|
|
category=DeprecationWarning,
|
|
stacklevel=2)
|
|
return func(*args, **kwargs)
|
|
newFunc.__name__ = func.__name__
|
|
newFunc.__doc__ = func.__doc__
|
|
newFunc.__dict__.update(func.__dict__)
|
|
return newFunc
|
|
|
|
# simple escapes, all non unicodes
|
|
_simpleescapes = re.compile(ur'(\\[^0-9a-fA-F])').sub
|
|
|
|
def normalize(x):
|
|
"""
|
|
normalizes x, namely:
|
|
|
|
- remove any \ before non unicode sequences (0-9a-zA-Z) so for
|
|
x=="c\olor\" return "color" (unicode escape sequences should have
|
|
been resolved by the tokenizer already)
|
|
- lowercase
|
|
"""
|
|
if x:
|
|
def removeescape(matchobj):
|
|
return matchobj.group(0)[1:]
|
|
x = _simpleescapes(removeescape, x)
|
|
return x.lower()
|
|
else:
|
|
return x |