comparison configmix/config.py @ 523:085962f6c81f

Configuration._split_filters() now does the special filter check for None and Empty also
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 19 Dec 2021 19:01:43 +0100
parents 1001701be682
children 09b8e28b7a44
comparison
equal deleted inserted replaced
522:6b3da9e5acc6 523:085962f6c81f
649 def _split_filters(self, s): 649 def _split_filters(self, s):
650 name, sep, filters = s.partition(_FILTER_SEPARATOR) 650 name, sep, filters = s.partition(_FILTER_SEPARATOR)
651 if sep: 651 if sep:
652 filters = filters.strip() 652 filters = filters.strip()
653 if filters: 653 if filters:
654 filters = filters.split(_FILTER_SEPARATOR)
654 return (name.rstrip(), 655 return (name.rstrip(),
655 filters.split(_FILTER_SEPARATOR)) 656 filters,
656 else: 657 NONE_FILTER in filters,
657 return (name.rstrip(), []) 658 EMPTY_FILTER in filters)
658 else: 659 else:
659 return (name, []) 660 return (name.rstrip(), [], False, False)
661 else:
662 return (name, [], False, False)
660 663
661 def _lookupvar(self, *path): 664 def _lookupvar(self, *path):
662 """Lookup a variable within a hierarchy. 665 """Lookup a variable within a hierarchy.
663 666
664 :raise KeyError: An unexisting `path` raises a `KeyError` 667 :raise KeyError: An unexisting `path` raises a `KeyError`
771 res_append(s[rest:start]) 774 res_append(s[rest:start])
772 end = s.find(_ENDTOK, start) 775 end = s.find(_ENDTOK, start)
773 if end < 0: 776 if end < 0:
774 rest = start 777 rest = start
775 break 778 break
776 varname, filters = self._split_filters(s[start+2:end]) 779 varname, filters, none_filter, empty_filter = self._split_filters(
780 s[start+2:end])
777 try: 781 try:
778 if NONE_FILTER in filters: 782 if none_filter:
779 varvalue = self._apply_filters( 783 varvalue = self._apply_filters(
780 filters, self.getvar_s(varname, default=None)) 784 filters, self.getvar_s(varname, default=None))
781 elif EMPTY_FILTER in filters: 785 elif empty_filter:
782 varvalue = self._apply_filters( 786 varvalue = self._apply_filters(
783 filters, self.getvar_s(varname, 787 filters, self.getvar_s(varname,
784 default=_EMPTY_STR)) 788 default=_EMPTY_STR))
785 else: 789 else:
786 varvalue = self._apply_filters( 790 varvalue = self._apply_filters(