583
583
(1-based) and pattern_list is a list of regular expression strings
584
584
parsed from the whitelist.
589
for lineno, line in enumerate(text.splitlines(), 1):
590
# Strip shell-style comments if there are any
592
index = line.index("#")
599
# Skip empty lines (especially after stripping comments)
602
# Surround the pattern with ^ and $
603
# so that it wont just match a part of the job name.
604
regexp_pattern = r"^{pattern}$".format(pattern=line)
605
# Accumulate patterns into the list
606
pattern_list.append(regexp_pattern)
607
return pattern_list, lineno
586
from plainbox.impl.xparsers import Re
587
from plainbox.impl.xparsers import Visitor
588
from plainbox.impl.xparsers import WhiteList
590
class WhiteListVisitor(Visitor):
593
self.pattern_list = []
596
def visit_Re_node(self, node: Re):
597
self.pattern_list.append(r"^{}$".format(node.text.strip()))
598
self.lineno = max(node.lineno, self.lineno)
599
return super().generic_visit(node)
601
visit_ReFixed_node = visit_Re_node
602
visit_RePattern_node = visit_Re_node
603
visit_ReErr_node = visit_Re_node
605
visitor = WhiteListVisitor()
606
visitor.visit(WhiteList.parse(text))
607
return visitor.pattern_list, visitor.lineno
610
610
def _load_patterns(cls, pathname):