···11import inspect
22import os
33import re
44+45from FourmiCrawler.sources.source import Source
5667···89 sources = []
9101011 def __init__(self, rel_dir="FourmiCrawler/sources"):
1212+ """
1313+ The initiation of a SourceLoader, selects and indexes a directory for usable sources.
1414+ :param rel_dir: A relative path to a directory.
1515+ """
1116 path = os.path.dirname(os.path.abspath(__file__))
1217 path += "/" + rel_dir
1318 known_parser = set()
···2126 known_parser.add(cls)
22272328 def include(self, source_names):
2929+ """
3030+ This function excludes all sources that don't match the given regular expressions.
3131+ :param source_names: A list of regular expression (strings)
3232+ """
2433 new = set()
2534 for name in source_names:
2635 new.update([src for src in self.sources if re.match(name, src.__class__.__name__)])
2736 self.sources = list(new)
28372938 def exclude(self, source_names):
3939+ """
4040+ This function excludes all sources that match the given regular expressions.
4141+ :param source_names: A list of regular expression (strings)
4242+ """
3043 exclude = []
3144 for name in source_names:
3245 exclude.extend([src for src in self.sources if re.match(name, src.__class__.__name__)])
3346 self.sources = [src for src in self.sources if src not in exclude]
34473548 def __str__(self):
4949+ """
5050+ This function returns a string with all sources currently available in the SourceLoader.
5151+ :return: a string with all available sources.
5252+ """
3653 string = ""
3754 for src in self.sources:
3855 string += "Source: " + src.__class__.__name__