80 lines
3.0 KiB
Go
80 lines
3.0 KiB
Go
package tw
|
|
|
|
// CellFormatting holds formatting options for table cells.
|
|
type CellFormatting struct {
|
|
AutoWrap int // Wrapping behavior (e.g., WrapTruncate, WrapNormal)
|
|
AutoFormat State // Enables automatic formatting (e.g., title case for headers)
|
|
|
|
// Deprecated: Kept for backward compatibility. Use CellConfig.CellMerging.Mode instead.
|
|
// This will be removed in a future version.
|
|
MergeMode int
|
|
|
|
// Deprecated: Kept for backward compatibility. Use CellConfig.Alignment instead.
|
|
// This will be removed in a future version.
|
|
Alignment Align
|
|
}
|
|
|
|
// CellMerging holds the configuration for how cells should be merged.
|
|
// This new struct replaces the deprecated MergeMode.
|
|
type CellMerging struct {
|
|
// Mode is a bitmask specifying the type of merge (e.g., MergeHorizontal, MergeVertical).
|
|
Mode int
|
|
|
|
// ByColumnIndex specifies which column indices should be considered for merging.
|
|
// If the mapper is nil or empty, merging applies to all columns (if Mode is set).
|
|
// Otherwise, only columns with an index present as a key will be merged.
|
|
ByColumnIndex Mapper[int, bool]
|
|
|
|
// ByRowIndex is reserved for future features to specify merging on specific rows.
|
|
ByRowIndex Mapper[int, bool]
|
|
}
|
|
|
|
// CellPadding defines padding settings for table cells.
|
|
type CellPadding struct {
|
|
Global Padding // Default padding applied to all cells
|
|
PerColumn []Padding // Column-specific padding overrides
|
|
}
|
|
|
|
// CellFilter defines filtering functions for cell content.
|
|
type CellFilter struct {
|
|
Global func([]string) []string // Processes the entire row
|
|
PerColumn []func(string) string // Processes individual cells by column
|
|
}
|
|
|
|
// CellCallbacks holds callback functions for cell processing.
|
|
// Note: These are currently placeholders and not fully implemented.
|
|
type CellCallbacks struct {
|
|
Global func() // Global callback applied to all cells
|
|
PerColumn []func() // Column-specific callbacks
|
|
}
|
|
|
|
// CellAlignment defines alignment settings for table cells.
|
|
type CellAlignment struct {
|
|
Global Align // Default alignment applied to all cells
|
|
PerColumn []Align // Column-specific alignment overrides
|
|
}
|
|
|
|
// CellConfig combines formatting, padding, and callback settings for a table section.
|
|
type CellConfig struct {
|
|
Formatting CellFormatting // Cell formatting options
|
|
Padding CellPadding // Padding configuration
|
|
Callbacks CellCallbacks // Callback functions (unused)
|
|
Filter CellFilter // Function to filter cell content (renamed from Filter Filter)
|
|
Alignment CellAlignment // Alignment configuration for cells
|
|
ColMaxWidths CellWidth // Per-column maximum width overrides
|
|
Merging CellMerging // Merging holds all configuration related to cell merging.
|
|
|
|
// Deprecated: use Alignment.PerColumn instead. Will be removed in a future version.
|
|
// will be removed soon
|
|
ColumnAligns []Align // Per-column alignment overrides
|
|
}
|
|
|
|
type CellWidth struct {
|
|
Global int
|
|
PerColumn Mapper[int, int]
|
|
}
|
|
|
|
func (c CellWidth) Constrained() bool {
|
|
return c.Global > 0 || c.PerColumn.Len() > 0
|
|
}
|