Class: Xlsxrb::Elements::Column

Inherits:
Data
  • Object
show all
Defined in:
lib/xlsxrb/elements/column.rb,
sig/generated/xlsxrb/elements/column.rbs

Overview

Represents column formatting in a worksheet. index is 0-based.

Examples:

col = Elements::Column.new(index: 0, width: 25.0)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(index:, width: nil, hidden: false, custom_width: false, outline_level: nil, unmapped_data: {}, errors: nil) ⇒ Column

Returns a new instance of Column.

Signature:

  • (index: Integer, ?width: Float | Integer | nil, ?hidden: bool, ?custom_width: bool, ?outline_level: Integer | nil, ?unmapped_data: Hash[untyped, untyped], ?errors: Array[String]?) -> void

Parameters:

  • index (Integer)

    0-based column index.

  • width (Float, Integer, nil) (defaults to: nil)

    Column width in characters.

  • hidden (Boolean) (defaults to: false)

    Whether the column is hidden.

  • custom_width (Boolean) (defaults to: false)

    Whether custom width flag is set.

  • outline_level (Integer, nil) (defaults to: nil)

    Grouping/outline level.

  • unmapped_data (Hash) (defaults to: {})

    Additional metadata.

  • errors (Array<String>, nil) (defaults to: nil)

    Validation errors.



23
24
25
26
27
28
29
# File 'lib/xlsxrb/elements/column.rb', line 23

def initialize(index:, width: nil, hidden: false, custom_width: false, outline_level: nil,
               unmapped_data: {}, errors: nil)
  computed_errors = errors || self.class.validate(index)
  super(index: index, width: width, hidden: hidden, custom_width: custom_width,
        outline_level: outline_level, unmapped_data: unmapped_data,
        errors: computed_errors.freeze)
end

Instance Attribute Details

#custom_widthObject (readonly)

Returns the value of attribute custom_width

Returns:

  • (Object)

    the current value of custom_width



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def custom_width
  @custom_width
end

#errorsObject (readonly)

Returns the value of attribute errors

Returns:

  • (Object)

    the current value of errors



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def errors
  @errors
end

#hiddenObject (readonly)

Returns the value of attribute hidden

Returns:

  • (Object)

    the current value of hidden



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def hidden
  @hidden
end

#indexObject (readonly)

Returns the value of attribute index

Returns:

  • (Object)

    the current value of index



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def index
  @index
end

#outline_levelObject (readonly)

Returns the value of attribute outline_level

Returns:

  • (Object)

    the current value of outline_level



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def outline_level
  @outline_level
end

#unmapped_dataObject (readonly)

Returns the value of attribute unmapped_data

Returns:

  • (Object)

    the current value of unmapped_data



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def unmapped_data
  @unmapped_data
end

#widthObject (readonly)

Returns the value of attribute width

Returns:

  • (Object)

    the current value of width



14
15
16
# File 'lib/xlsxrb/elements/column.rb', line 14

def width
  @width
end

Class Method Details

.members[ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ]

Returns:

  • ([ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ])


30
# File 'sig/generated/xlsxrb/elements/column.rbs', line 30

def self.members: () -> [ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ]

.new(index, width, hidden, custom_width, outline_level, unmapped_data, errors) ⇒ instance .new(index:, width:, hidden:, custom_width:, outline_level:, unmapped_data:, errors:) ⇒ instance

Overloads:

  • .new(index, width, hidden, custom_width, outline_level, unmapped_data, errors) ⇒ instance

    Parameters:

    • index (Object)
    • width (Object)
    • hidden (Object)
    • custom_width (Object)
    • outline_level (Object)
    • unmapped_data (Object)
    • errors (Object)

    Returns:

    • (instance)
  • .new(index:, width:, hidden:, custom_width:, outline_level:, unmapped_data:, errors:) ⇒ instance

    Parameters:

    • index: (Object)
    • width: (Object)
    • hidden: (Object)
    • custom_width: (Object)
    • outline_level: (Object)
    • unmapped_data: (Object)
    • errors: (Object)

    Returns:

    • (instance)


27
28
# File 'sig/generated/xlsxrb/elements/column.rbs', line 27

def self.new: (untyped index, untyped width, untyped hidden, untyped custom_width, untyped outline_level, untyped unmapped_data, untyped errors) -> instance
| (index: untyped, width: untyped, hidden: untyped, custom_width: untyped, outline_level: untyped, unmapped_data: untyped, errors: untyped) -> instance

.validate(index) ⇒ Array<String>

Validates column index against OOXML limits.

Signature:

  • (untyped index) -> Array[String]

Parameters:

  • index (Integer)

Returns:

  • (Array<String>)

    List of errors.



44
45
46
47
48
49
# File 'lib/xlsxrb/elements/column.rb', line 44

def self.validate(index)
  errs = []
  errs << "index must be a non-negative Integer (got #{index.inspect})" if !index.is_a?(Integer) || index.negative?
  errs << "index must be < 16384 (got #{index}, max column is XFD=16383)" if index.is_a?(Integer) && index >= 16_384
  errs
end

Instance Method Details

#members[ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ]

Returns:

  • ([ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ])


32
# File 'sig/generated/xlsxrb/elements/column.rbs', line 32

def members: () -> [ :index, :width, :hidden, :custom_width, :outline_level, :unmapped_data, :errors ]

#valid?Boolean

Returns whether the column definition is valid according to OOXML specifications.

Signature:

  • () -> bool

Returns:

  • (Boolean)


35
36
37
# File 'lib/xlsxrb/elements/column.rb', line 35

def valid?
  errors.empty?
end