Class: Uniword::ColumnConfiguration

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/uniword/column_configuration.rb

Overview

Represents column configuration for a section

Columns allow text to flow in newspaper-style multi-column layouts.

Examples:

Two equal columns

cols = ColumnConfiguration.new(count: 2, equal_width: true, space: 720)

Three unequal columns

cols = ColumnConfiguration.new(count: 3, equal_width: false)
cols.columns = [
  Column.new(width: 2880, space: 360),
  Column.new(width: 4320, space: 360),
  Column.new(width: 2880, space: 0)
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**attributes) ⇒ ColumnConfiguration

Returns a new instance of ColumnConfiguration.



42
43
44
45
46
# File 'lib/uniword/column_configuration.rb', line 42

def initialize(**attributes)
  super
  validate_count
  validate_columns
end

Instance Attribute Details

#columnsArray<Column>

Individual column definitions (for unequal)

Returns:

  • (Array<Column>)

    the current value of columns



35
36
37
# File 'lib/uniword/column_configuration.rb', line 35

def columns
  @columns
end

#countInteger

Number of columns

Returns:

  • (Integer)

    the current value of count



35
36
37
# File 'lib/uniword/column_configuration.rb', line 35

def count
  @count
end

#equal_widthBoolean

Whether all columns have equal width

Returns:

  • (Boolean)

    the current value of equal_width



35
36
37
# File 'lib/uniword/column_configuration.rb', line 35

def equal_width
  @equal_width
end

#separatorBoolean

Whether to show vertical separator line

Returns:

  • (Boolean)

    the current value of separator



35
36
37
# File 'lib/uniword/column_configuration.rb', line 35

def separator
  @separator
end

#spaceInteger

Default space between columns (for equal width)

Returns:

  • (Integer)

    the current value of space



35
36
37
# File 'lib/uniword/column_configuration.rb', line 35

def space
  @space
end

Class Method Details

.equal(count, space: 720, separator: false) ⇒ ColumnConfiguration

Create equal-width columns configuration

Parameters:

  • count (Integer)

    Number of columns

  • space (Integer) (defaults to: 720)

    Space between columns in twips

  • separator (Boolean) (defaults to: false)

    Show separator line

Returns:



54
55
56
57
58
59
60
61
# File 'lib/uniword/column_configuration.rb', line 54

def self.equal(count, space: 720, separator: false)
  new(
    count: count,
    equal_width: true,
    space: space,
    separator: separator,
  )
end

.three_columns(space: 720, separator: false) ⇒ ColumnConfiguration

Create three-column layout

Parameters:

  • space (Integer) (defaults to: 720)

    Space between columns

  • separator (Boolean) (defaults to: false)

    Show separator line

Returns:



77
78
79
# File 'lib/uniword/column_configuration.rb', line 77

def self.three_columns(space: 720, separator: false)
  equal(3, space: space, separator: separator)
end

.two_columns(space: 720, separator: false) ⇒ ColumnConfiguration

Create two-column layout

Parameters:

  • space (Integer) (defaults to: 720)

    Space between columns

  • separator (Boolean) (defaults to: false)

    Show separator line

Returns:



68
69
70
# File 'lib/uniword/column_configuration.rb', line 68

def self.two_columns(space: 720, separator: false)
  equal(2, space: space, separator: separator)
end

Instance Method Details

#custom_widths?Boolean

Check if using custom column widths

Returns:

  • (Boolean)

    true if custom widths



91
92
93
# File 'lib/uniword/column_configuration.rb', line 91

def custom_widths?
  !equal_width && !columns.empty?
end

#single_column?Boolean

Check if using single column (no multi-column layout)

Returns:

  • (Boolean)

    true if single column



84
85
86
# File 'lib/uniword/column_configuration.rb', line 84

def single_column?
  count == 1
end