code: def _scan(cls, result_key, scanner):
          
  
          if result_key in cls.scanner_keys:
              raise ValueError("'%s' is already a registered scanner key" % result_key)
  
          cls.scanners.append(scanner)
          cls.scanner_keys.add(result_key)
docs: Registers a `scanner` which is a function that will be called once per
          logical line in a document. A scanners job is to evaluate the content
          of the line and set a so-called `result_key` on the class to be
          retrieved later by a rule.