Class: Uniword::Styles::ListStyleDefinition

Inherits:
StyleDefinition show all
Defined in:
lib/uniword/wordprocessingml/styles/list_style_definition.rb

Overview

List style definition

Responsibility: Hold list-specific style properties Single Responsibility: List style configuration only

Defines formatting properties for lists including numbering format, bullet characters, and level-specific formatting.

Instance Attribute Summary collapse

Attributes inherited from StyleDefinition

#base_style, #name

Instance Method Summary collapse

Methods inherited from StyleDefinition

#properties

Constructor Details

#initialize(config) ⇒ ListStyleDefinition

Returns a new instance of ListStyleDefinition.



15
16
17
18
19
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 15

def initialize(config)
  super
  @numbering_definition = config[:numbering_definition]
  @levels = config[:levels] || []
end

Instance Attribute Details

#levelsObject (readonly)

Returns the value of attribute levels.



13
14
15
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 13

def levels
  @levels
end

#numbering_definitionObject (readonly)

Returns the value of attribute numbering_definition.



13
14
15
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 13

def numbering_definition
  @numbering_definition
end

Instance Method Details

#full_propertiesHash

Get all properties

Returns:

  • (Hash)

    All style properties



48
49
50
51
52
53
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 48

def full_properties
  {
    numbering_definition: @numbering_definition,
    levels: @levels,
  }
end

#level(level_num) ⇒ Hash

Get level definition by level number

Parameters:

  • level_num (Integer)

    The level number (0-based)

Returns:

  • (Hash)

    Level definition



25
26
27
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 25

def level(level_num)
  @levels[level_num] || @levels.first || {}
end

#resolve_inheritance(library = nil) ⇒ Hash

Resolve inherited properties for lists

Parameters:

  • library (StyleLibrary) (defaults to: nil)

    The style library to resolve base styles from

Returns:

  • (Hash)

    Merged properties including base style properties



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/uniword/wordprocessingml/styles/list_style_definition.rb', line 33

def resolve_inheritance(library = nil)
  return full_properties unless @base_style && library

  base_def = library.list_style(@base_style)
  base_props = base_def.resolve_inheritance(library)

  {
    numbering_definition: @numbering_definition || base_props[:numbering_definition],
    levels: merge_levels(base_props[:levels], @levels),
  }
end