diff options
Diffstat (limited to 'gallery_dl/formatter.py')
| -rw-r--r-- | gallery_dl/formatter.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gallery_dl/formatter.py b/gallery_dl/formatter.py index 27d5e40..d1b3a8a 100644 --- a/gallery_dl/formatter.py +++ b/gallery_dl/formatter.py @@ -20,6 +20,7 @@ _CACHE = {} _CONVERSIONS = None _GLOBALS = { "_env": lambda: os.environ, + "_lit": lambda: _literal, "_now": datetime.datetime.now, } @@ -219,6 +220,10 @@ def parse_field_name(field_name): first, rest = _string.formatter_field_name_split(field_name) funcs = [] + if first[0] == "'": + funcs.append(operator.itemgetter(first[1:-1])) + first = "_lit" + for is_attr, key in rest: if is_attr: func = operator.attrgetter @@ -344,3 +349,15 @@ def _default_format(format_spec): def wrap(obj): return format(obj, format_spec) return wrap + + +class Literal(): + # __getattr__, __getattribute__, and __class_getitem__ + # are all slower than regular __getitem__ + + @staticmethod + def __getitem__(key): + return key + + +_literal = Literal() |
