github.com/kata-containers/tests@v0.0.0-20240307153542-772105b56064/cmd/check-markdown/display_tsv.go (about)

     1  // Copyright (c) 2019 Intel Corporation
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  //
     5  
     6  package main
     7  
     8  import (
     9  	"encoding/csv"
    10  	"os"
    11  )
    12  
    13  type displayTSV struct {
    14  	writer        *csv.Writer
    15  	disableHeader bool
    16  }
    17  
    18  func NewDisplayTSV(file *os.File, separator rune, disableHeader bool) DisplayHandler {
    19  	tsv := &displayTSV{
    20  		disableHeader: disableHeader,
    21  	}
    22  
    23  	tsv.writer = csv.NewWriter(file)
    24  
    25  	tsv.writer.Comma = separator
    26  
    27  	return tsv
    28  }
    29  
    30  func (d *displayTSV) DisplayLinks(doc *Doc) error {
    31  	if !d.disableHeader {
    32  		record := linkHeaderRecord()
    33  		if err := d.writer.Write(record); err != nil {
    34  			return err
    35  		}
    36  	}
    37  
    38  	for _, linkList := range doc.Links {
    39  		for _, link := range linkList {
    40  			record := linkToRecord(link)
    41  
    42  			if err := d.writer.Write(record); err != nil {
    43  				return err
    44  			}
    45  		}
    46  	}
    47  
    48  	d.writer.Flush()
    49  
    50  	return d.writer.Error()
    51  }
    52  
    53  func (d *displayTSV) DisplayHeadings(doc *Doc) error {
    54  	if !d.disableHeader {
    55  		record := headingHeaderRecord()
    56  		if err := d.writer.Write(record); err != nil {
    57  			return err
    58  		}
    59  	}
    60  
    61  	for _, l := range doc.Headings {
    62  		record := headingToRecord(l)
    63  
    64  		if err := d.writer.Write(record); err != nil {
    65  			return err
    66  		}
    67  	}
    68  
    69  	d.writer.Flush()
    70  
    71  	return d.writer.Error()
    72  }