Initial QSfera import
This commit is contained in:
+235
@@ -0,0 +1,235 @@
|
||||
package tablewriter
|
||||
|
||||
import (
|
||||
"github.com/mattn/go-runewidth"
|
||||
"github.com/olekukonko/tablewriter/pkg/twwidth"
|
||||
"github.com/olekukonko/tablewriter/tw"
|
||||
)
|
||||
|
||||
// WithBorders configures the table's border settings by updating the renderer's border configuration.
|
||||
// This function is deprecated and will be removed in a future version.
|
||||
//
|
||||
// Deprecated: Use [WithRendition] to configure border settings for renderers that support
|
||||
// [tw.Renditioning], or update the renderer's [tw.RenderConfig] directly via its Config() method.
|
||||
// This function has no effect if no renderer is set on the table.
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// table.Options(WithBorders(tw.Border{Top: true, Bottom: true}))
|
||||
// // New (recommended)
|
||||
// table.Options(WithRendition(tw.Rendition{Borders: tw.Border{Top: true, Bottom: true}}))
|
||||
//
|
||||
// Parameters:
|
||||
// - borders: The [tw.Border] configuration to apply to the renderer's borders.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// An [Option] that updates the renderer's border settings if a renderer is set.
|
||||
// Logs a debug message if debugging is enabled and a renderer is present.
|
||||
func WithBorders(borders tw.Border) Option {
|
||||
return func(target *Table) {
|
||||
if target.renderer != nil {
|
||||
cfg := target.renderer.Config()
|
||||
cfg.Borders = borders
|
||||
if target.logger != nil {
|
||||
target.logger.Debugf("Option: WithBorders applied to Table: %+v", borders)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Behavior is an alias for [tw.Behavior] to configure table behavior settings.
|
||||
// This type is deprecated and will be removed in a future version.
|
||||
//
|
||||
// Deprecated: Use [tw.Behavior] directly to configure settings such as auto-hiding empty
|
||||
// columns, trimming spaces, or controlling header/footer visibility.
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// var b tablewriter.Behavior = tablewriter.Behavior{AutoHide: tw.On}
|
||||
// // New (recommended)
|
||||
// var b tw.Behavior = tw.Behavior{AutoHide: tw.On}
|
||||
type Behavior tw.Behavior
|
||||
|
||||
// Settings is an alias for [tw.Settings] to configure renderer settings.
|
||||
// This type is deprecated and will be removed in a future version.
|
||||
//
|
||||
// Deprecated: Use [tw.Settings] directly to configure renderer settings, such as
|
||||
// separators and line styles.
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// var s tablewriter.Settings = tablewriter.Settings{Separator: "|"}
|
||||
// // New (recommended)
|
||||
// var s tw.Settings = tw.Settings{Separator: "|"}
|
||||
type Settings tw.Settings
|
||||
|
||||
// WithRendererSettings updates the renderer's settings, such as separators and line styles.
|
||||
// This function is deprecated and will be removed in a future version.
|
||||
//
|
||||
// Deprecated: Use [WithRendition] to update renderer settings for renderers that implement
|
||||
// [tw.Renditioning], or configure the renderer's [tw.Settings] directly via its
|
||||
// [tw.Renderer.Config] method. This function has no effect if no renderer is set.
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// table.Options(WithRendererSettings(tw.Settings{Separator: "|"}))
|
||||
// // New (recommended)
|
||||
// table.Options(WithRendition(tw.Rendition{Settings: tw.Settings{Separator: "|"}}))
|
||||
//
|
||||
// Parameters:
|
||||
// - settings: The [tw.Settings] configuration to apply to the renderer.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// An [Option] that updates the renderer's settings if a renderer is set.
|
||||
// Logs a debug message if debugging is enabled and a renderer is present.
|
||||
func WithRendererSettings(settings tw.Settings) Option {
|
||||
return func(target *Table) {
|
||||
if target.renderer != nil {
|
||||
cfg := target.renderer.Config()
|
||||
cfg.Settings = settings
|
||||
if target.logger != nil {
|
||||
target.logger.Debugf("Option: WithRendererSettings applied to Table: %+v", settings)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WithAlignment sets the text alignment for footer cells within the formatting configuration.
|
||||
// This method is deprecated and will be removed in the next version.
|
||||
//
|
||||
// Deprecated: Use [FooterConfigBuilder.Alignment] with [AlignmentConfigBuilder.WithGlobal]
|
||||
// or [AlignmentConfigBuilder.WithPerColumn] to configure footer alignments.
|
||||
// Alternatively, apply a complete [tw.CellAlignment] configuration using
|
||||
// [WithFooterAlignmentConfig].
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// builder.Footer().Formatting().WithAlignment(tw.AlignRight)
|
||||
// // New (recommended)
|
||||
// builder.Footer().Alignment().WithGlobal(tw.AlignRight)
|
||||
// // Or
|
||||
// table.Options(WithFooterAlignmentConfig(tw.CellAlignment{Global: tw.AlignRight}))
|
||||
//
|
||||
// Parameters:
|
||||
// - align: The [tw.Align] value to set for footer cells. Valid values are
|
||||
// [tw.AlignLeft], [tw.AlignRight], [tw.AlignCenter], and [tw.AlignNone].
|
||||
// Invalid alignments are ignored.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// The [FooterFormattingBuilder] instance for method chaining.
|
||||
func (ff *FooterFormattingBuilder) WithAlignment(align tw.Align) *FooterFormattingBuilder {
|
||||
if align != tw.AlignLeft && align != tw.AlignRight && align != tw.AlignCenter && align != tw.AlignNone {
|
||||
return ff
|
||||
}
|
||||
ff.config.Alignment = align
|
||||
return ff
|
||||
}
|
||||
|
||||
// WithAlignment sets the text alignment for header cells within the formatting configuration.
|
||||
// This method is deprecated and will be removed in the next version.
|
||||
//
|
||||
// Deprecated: Use [HeaderConfigBuilder.Alignment] with [AlignmentConfigBuilder.WithGlobal]
|
||||
// or [AlignmentConfigBuilder.WithPerColumn] to configure header alignments.
|
||||
// Alternatively, apply a complete [tw.CellAlignment] configuration using
|
||||
// [WithHeaderAlignmentConfig].
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// builder.Header().Formatting().WithAlignment(tw.AlignCenter)
|
||||
// // New (recommended)
|
||||
// builder.Header().Alignment().WithGlobal(tw.AlignCenter)
|
||||
// // Or
|
||||
// table.Options(WithHeaderAlignmentConfig(tw.CellAlignment{Global: tw.AlignCenter}))
|
||||
//
|
||||
// Parameters:
|
||||
// - align: The [tw.Align] value to set for header cells. Valid values are
|
||||
// [tw.AlignLeft], [tw.AlignRight], [tw.AlignCenter], and [tw.AlignNone].
|
||||
// Invalid alignments are ignored.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// The [HeaderFormattingBuilder] instance for method chaining.
|
||||
func (hf *HeaderFormattingBuilder) WithAlignment(align tw.Align) *HeaderFormattingBuilder {
|
||||
if align != tw.AlignLeft && align != tw.AlignRight && align != tw.AlignCenter && align != tw.AlignNone {
|
||||
return hf
|
||||
}
|
||||
hf.config.Alignment = align
|
||||
return hf
|
||||
}
|
||||
|
||||
// WithAlignment sets the text alignment for row cells within the formatting configuration.
|
||||
// This method is deprecated and will be removed in the next version.
|
||||
//
|
||||
// Deprecated: Use [RowConfigBuilder.Alignment] with [AlignmentConfigBuilder.WithGlobal]
|
||||
// or [AlignmentConfigBuilder.WithPerColumn] to configure row alignments.
|
||||
// Alternatively, apply a complete [tw.CellAlignment] configuration using
|
||||
// [WithRowAlignmentConfig].
|
||||
//
|
||||
// Example migration:
|
||||
//
|
||||
// // Old (deprecated)
|
||||
// builder.Row().Formatting().WithAlignment(tw.AlignLeft)
|
||||
// // New (recommended)
|
||||
// builder.Row().Alignment().WithGlobal(tw.AlignLeft)
|
||||
// // Or
|
||||
// table.Options(WithRowAlignmentConfig(tw.CellAlignment{Global: tw.AlignLeft}))
|
||||
//
|
||||
// Parameters:
|
||||
// - align: The [tw.Align] value to set for row cells. Valid values are
|
||||
// [tw.AlignLeft], [tw.AlignRight], [tw.AlignCenter], and [tw.AlignNone].
|
||||
// Invalid alignments are ignored.
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// The [RowFormattingBuilder] instance for method chaining.
|
||||
func (rf *RowFormattingBuilder) WithAlignment(align tw.Align) *RowFormattingBuilder {
|
||||
if align != tw.AlignLeft && align != tw.AlignRight && align != tw.AlignCenter && align != tw.AlignNone {
|
||||
return rf
|
||||
}
|
||||
rf.config.Alignment = align
|
||||
return rf
|
||||
}
|
||||
|
||||
// WithTableMax sets the maximum width of the entire table in characters.
|
||||
// Negative values are ignored, and the change is logged if debugging is enabled.
|
||||
// The width constrains the table's rendering, potentially causing text wrapping or truncation
|
||||
// based on the configuration's wrapping settings (e.g., tw.WrapTruncate).
|
||||
// If debug logging is enabled via WithDebug(true), the applied width is logged.
|
||||
//
|
||||
// Deprecated: Use WithMaxWidth instead, which provides the same functionality with a clearer name
|
||||
// and consistent naming across the package. For example:
|
||||
//
|
||||
// tablewriter.NewTable(os.Stdout, tablewriter.WithMaxWidth(80))
|
||||
func WithTableMax(width int) Option {
|
||||
return func(target *Table) {
|
||||
if width < 0 {
|
||||
return
|
||||
}
|
||||
target.config.MaxWidth = width
|
||||
if target.logger != nil {
|
||||
target.logger.Debugf("Option: WithTableMax applied to Table: %v", width)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecated: use WithEastAsian instead.
|
||||
// WithCondition provides a way to set a custom global runewidth.Condition
|
||||
// that will be used for all subsequent display width calculations by the twwidth (twdw) package.
|
||||
//
|
||||
// The runewidth.Condition object allows for more fine-grained control over how rune widths
|
||||
// are determined, beyond just toggling EastAsianWidth. This could include settings for
|
||||
// ambiguous width characters or other future properties of runewidth.Condition.
|
||||
func WithCondition(cond *runewidth.Condition) Option {
|
||||
return func(target *Table) {
|
||||
twwidth.SetCondition(cond)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user