[docs]classCSVWriter(writer_.Writer):""" Writes normalized documents and highlights to csv table. Resembles: .. code-block:: text highlight_text,highlight_page_number,document_name Alice was sitting curled up in a corner of the great arm-chair,11,Through the Looking Glass :param documents: The list of documents to generate a csv for. :param highlights: The list of highlights to generate a csv for. :param columns: The columns to print for the csv. A list of columns can be found by running ``remarking list columns`` :param delimiter: The delimiter to use for the csv. """def__init__(self,documents:List[models.Document],highlights:List[models.Highlight],columns:T.Optional[List[str]]=None,delimiter:str=None)->None:self.delimiter=delimiteror","self.columns=columnsself.highlights,self.headers=common.get_column_filtered_highlights_and_header(documents,highlights,columns)defwrite(self,logger:log.CommandLineLogger)->None:output=io.StringIO(newline='')writer=csv.DictWriter(output,delimiter=self.delimiter,fieldnames=self.headers)writer.writeheader()writer.writerows(self.highlights)logger.output_result(output.getvalue())
[docs]classCSVWriterCommand(writer_command.WriterCommand):""" The writer command implementaton for the ``csv`` output writer. """defname(self)->str:return"csv"defoptions(self)->List[writer_command.ClickOption]:returncommon.column_based_output_options+[click.option("--delimiter",default=",",help="Delimiter to use to split columns")]deflong_description(self)->str:return"""Output highlights normalized with documents as csv.Check out `remarking list columns` for a list of columns to choose fromfor the `--columns` option. """defshort_description(self)->str:return"Output highlights normalized with documents as CSV"defwriter(self,documents:List[models.Document],highlights:List[models.Highlight],**kwargs:T.Any)->writer_.Writer:delimiter=kwargs['delimiter']columns=kwargs['columns']returnCSVWriter(documents,highlights,columns,delimiter)