Class: Uniword::Styles::StyleDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/uniword/wordprocessingml/styles/style_definition.rb

Overview

Base class for all style definitions

Responsibility: Hold common style definition properties Single Responsibility: Base definition structure only

This is the base class for all style types (paragraph, character, list, table). It provides common functionality for style inheritance and property management.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ StyleDefinition

Returns a new instance of StyleDefinition.



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

def initialize(config)
  @name = config[:name]
  @base_style = config[:base_style]
  @config = config
end

Instance Attribute Details

#base_styleObject (readonly)

Returns the value of attribute base_style.



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

def base_style
  @base_style
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

Instance Method Details

#propertiesHash

Get properties for this style

Returns:

  • (Hash)

    Style properties



37
38
39
# File 'lib/uniword/wordprocessingml/styles/style_definition.rb', line 37

def properties
  @config[:properties] || {}
end

#resolve_inheritance(library = nil) ⇒ Hash

Resolve inherited properties from base style

Parameters:

  • library (StyleLibrary) (defaults to: nil)

    The style library to resolve base styles from

Returns:

  • (Hash)

    Merged properties including base style properties



25
26
27
28
29
30
31
32
# File 'lib/uniword/wordprocessingml/styles/style_definition.rb', line 25

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

  base_def = library.send(style_type, @base_style)
  base_props = base_def.resolve_inheritance(library)

  merge_properties(base_props, properties)
end