original_docstring: Parses a Windows Registry file.
  
      Args:
        parser_mediator: A parser mediator object (instance of ParserMediator).
        winreg_file: A Windows Registry file (instance of dfwinreg.WinRegFile).
        registry_file_type: String containing the Windows Registry file type,
                            e.g. NTUSER, SOFTWARE.
      
docstring: Parses a Windows Registry file.
docstring_tokens: Parses a Windows Registry file .
code: def _ParseRegistryFile(
        self, parser_mediator, winreg_file, registry_file_type):
      """Parses a Windows Registry file.
  
      Args:
        parser_mediator: A parser mediator object (instance of ParserMediator).
        winreg_file: A Windows Registry file (instance of dfwinreg.WinRegFile).
        registry_file_type: String containing the Windows Registry file type,
                            e.g. NTUSER, SOFTWARE.
      """
      # TODO: move to separate function.
      plugins = {}
      number_of_plugins = 0
      for weight in self._plugins.GetWeights():
        plugins_list = self._plugins.GetPluginsByWeight(
            weight, registry_file_type)
        plugins[weight] = []
        for plugin_class in plugins_list:
          plugin_object = plugin_class()
          plugins[weight].append(plugin_object)
          number_of_plugins += 1
  
      logging.debug(
          u'Number of plugins for this Windows Registry file: {0:d}.'.format(
              number_of_plugins))
  
      # Recurse through keys in the file and apply the plugins in the order:
      # 1. file type specific key-based plugins.
      # 2. generic key-based plugins.
      # 3. file type specific value-based plugins.
      # 4. generic value-based plugins.
  
      for key in winreg_file.RecurseKeys():
        for weight in iter(plugins.keys()):
          # TODO: determine if the plugin matches the key and continue
          # to the next key.
          for plugin in plugins[weight]:
            if parser_mediator.abort:
              break
  
            plugin.UpdateChainAndProcess(
                parser_mediator, key=key, registry_file_type=registry_file_type,
                codepage=parser_mediator.codepage)
code_tokens: def _ParseRegistryFile ( self , parser_mediator , winreg_file , registry_file_type ) : plugins = { } number_of_plugins = 0 for weight in self . _plugins . GetWeights ( ) : plugins_list = self . _plugins . GetPluginsByWeight ( weight , registry_file_type ) plugins [ weight ] = [ ] for plugin_class in plugins_list : plugin_object = plugin_class ( ) plugins [ weight ] . append ( plugin_object ) number_of_plugins += 1 logging . debug ( u'Number of plugins for this Windows Registry file: {0:d}.' . format ( number_of_plugins ) ) for key in winreg_file . RecurseKeys ( ) : for weight in iter ( plugins . keys ( ) ) : for plugin in plugins [ weight ] : if parser_mediator . abort : break plugin . UpdateChainAndProcess ( parser_mediator , key = key , registry_file_type = registry_file_type , codepage = parser_mediator . codepage )
short_docstring: Parses a Windows Registry file.
short_docstring_tokens: Parses a Windows Registry file .
comment: """Parses a Windows Registry file.
  
      Args:
        parser_mediator: A parser mediator object (instance of ParserMediator).
        winreg_file: A Windows Registry file (instance of dfwinreg.WinRegFile).
        registry_file_type: String containing the Windows Registry file type,
                            e.g. NTUSER, SOFTWARE.
      """$SEP$# TODO: move to separate function.$SEP$# Recurse through keys in the file and apply the plugins in the order:$SEP$# 1. file type specific key-based plugins.$SEP$# 2. generic key-based plugins.$SEP$# 3. file type specific value-based plugins.$SEP$# 4. generic value-based plugins.$SEP$# TODO: determine if the plugin matches the key and continue$SEP$# to the next key.