code: def get_report_parts(self, apps, formats):
          for fmt in formats:
              width = 100 if fmt is not None else tui.get_terminal_size()[0]
              for sr in self.subreports:
                  sr.make_format(fmt, width)
          logger.debug('Build a map for arguments and run\'s statistics ...')
          value_mapping = {
              'title': self.title,
              'patterns': ', '.join([repr(pattern) for pattern in self.args.patterns]) or None,
              'pattern_files': ', '.join(self.args.pattern_files) or None,
              'hosts': ', '.join(self.args.hosts) or None,
              'apps': u', '.join([
                  u'%s(%d)' % (app.name, app.matches) for app in apps.values() if app.matches > 0
              ]),
              'version': __version__
          }
          filters = []
          for flt in self.args.filters:
              filters.append(' AND '.join(['%s=%r' % (k, v.pattern) for k, v in flt.items()]))
          if filters:
              value_mapping['filters'] = ' OR '.join(['(%s)' % item for item in filters])
          else:
              value_mapping['filters'] = filters[0] if filters else None
          value_mapping.update(self.stats)
          report = []
          for fmt in formats:
              if fmt == 'text':
                  logger.info('appends a text page report')
                  report.append(self.make_text_page(value_mapping))
              elif fmt == 'html':
                  logger.info('appends a html page report')
                  report.append(self.make_html_page(value_mapping))
              elif fmt == 'csv':
                  logger.info('extends with a list of csv subreports')
                  report.extend(self.make_csv_tables())
          return report