Black Lives Matter. Support the Equal Justice Initiative.

Package tabwriter

import "text/tabwriter"
Overview
Index
Examples

Overview ▾

包tabwriter实现了写过滤器(tabwriter.Writer),该过滤器将输入中的选项卡式列转换为正确对齐的文本.

The package is using the Elastic Tabstops algorithm described at http://nickgravgaard.com/elastictabstops/index.html.

文本/制表程序包被冻结,并且不接受新功能.

示例(弹性)

....a|..b|c
...aa|.bb|cc
..aaa|
.aaaa|.dddd|eeee

示例(TrailingTab)

------a|------b|---aligned|
-----aa|-----bb|---aligned|
----aaa|----bbb|unaligned
---aaaa|---bbbb|---aligned|

Constants

可以使用这些标志控制格式.

const (
    // Ignore html tags and treat entities (starting with '&'
    // and ending in ';') as single characters (width = 1).
    FilterHTML uint = 1 << iota

    // Strip Escape characters bracketing escaped text segments
    // instead of passing them through unchanged with the text.
    StripEscape

    // Force right-alignment of cell content.
    // Default is left-alignment.
    AlignRight

    // Handle empty columns as if they were not present in
    // the input in the first place.
    DiscardEmptyColumns

    // Always use tabs for indentation columns (i.e., padding of
    // leading empty cells on the left) independent of padchar.
    TabIndent

    // Print a vertical bar ('|') between columns (after formatting).
    // Discarded columns appear as zero-width columns ("||").
    Debug
)

要转义文本段,请用转义字符将其括起来. 例如,此字符串中的"忽略此选项卡:\ xff \ t \ xff"选项卡不会终止单元格,而是构成一个宽度为1的单个字符以用于格式化.

选择值0xff是因为它不能出现在有效的UTF-8序列中.

const Escape = '\xff'

type Writer

Writer是一种过滤器,它在输入中以制表符分隔的列周围插入填充以使它们在输出中对齐.

Writer将传入的字节视为UTF-8编码的文本,由水平('\ t')或垂直('\ v')制表符以及换行符('\ n')或换页符('\ f')终止的单元格组成字符 换行符和换页符都充当换行符.

连续行中的制表符终止的单元格构成一列. 编写器根据需要插入填充以使列中的所有单元格具有相同的宽度,从而有效地对齐列. 它假定所有字符具有相同的宽度,但必须为其指定制表符宽度的制表符除外. 列单元格必须用制表符结尾,而不用制表符分隔:行末尾的非制表符结尾的尾随文本构成一个单元格,但该单元格不是对齐列的一部分. 例如,在此示例中(其中|代表水平制表符):

aaaa|bbb|d
aa  |b  |dd
a   |
aa  |cccc|eee

b和c位于不同的列中(b列并非一直是连续的). d和e根本不在列中(没有终止选项卡,列也不是连续的).

编写器假定所有Unicode代码点都具有相同的宽度. 在某些字体中或字符串包含组合字符时,可能不正确.

如果设置了DiscardEmptyColumns,则丢弃完全由垂直(或"软")选项卡终止的空列. 由水平(或"硬")选项卡终止的列不受此标志的影响.

如果将Writer配置为过滤HTML,则会通过HTML标签和实体. 出于格式化目的,假定标签和实体的宽度分别为零(标签)和一(实体).

通过用转义字符将其括起来,可以对一段文本进行转义. 制表员将转义的文本段通过原样传递. 特别是,它不会解释该段内的任何制表符或换行符. 如果设置StripEscape标志,则从输出中删除转义字符;否则,将转义. 否则,它们也会通过. 为了格式化,总是计算转义文本的宽度(不包括转义字符).

换页符的作用类似于换行符,但它也会终止当前行中的所有列(有效地调用Flush). 下一行中以制表符结尾的单元格将开始新列. 除非在HTML标记内或转义的文本段内找到,否则换页符在输出中显示为换行符.

编写器必须在内部缓冲输入,因为一行的适当间距可能取决于将来行中的单元格. 调用完写后,客户端必须调用Flush.

type Writer struct {
    // contains filtered or unexported fields
}

func NewWriter

func NewWriter(output io.Writer, minwidth, tabwidth, padding int, padchar byte, flags uint) *Writer

NewWriter分配并初始化一个新的tabwriter.Writer. 参数与Init函数的参数相同.

func (*Writer) Flush

func (b *Writer) Flush() error

在最后一次调用Write之后,应调用Flush,以确保Writer中缓冲的所有数据均被写入输出. 最后任何不完整的转义序列出于格式化目的均被视为完整.

func (*Writer) Init

func (b *Writer) Init(output io.Writer, minwidth, tabwidth, padding int, padchar byte, flags uint) *Writer

必须通过调用Init来初始化Writer. 第一个参数(输出)指定过滤器输出. 其余参数控制格式:

minwidth	minimal cell width including any padding
tabwidth	width of tab characters (equivalent number of spaces)
padding		padding added to a cell before computing its width
padchar		ASCII char used for padding
		if padchar == '\t', the Writer will assume that the
		width of a '\t' in the formatted output is tabwidth,
		and cells are left-aligned independent of align_left
		(for correct-looking results, tabwidth must correspond
		to the tab width in the viewer displaying the result)
flags		formatting control

Example

a	b	c	d		.
123	12345	1234567	123456789	.

    a     b       c         d.
  123 12345 1234567 123456789.

func (*Writer) Write

func (b *Writer) Write(buf []byte) (n int, err error)

写入将buf写入写入者b. 返回的唯一错误是在写入基础输出流时遇到的错误.

by  ICOPY.SITE