Class: Coradoc::Docx::Transform::NumberingResolver
- Inherits:
-
Object
- Object
- Coradoc::Docx::Transform::NumberingResolver
- Defined in:
- lib/coradoc/docx/transform/numbering_resolver.rb
Overview
Resolves OOXML numbering definitions to list style information.
OOXML stores list formatting in numbering definitions (abstractNum). Each numPr reference (numId + ilvl) points to a specific numbering format (bullet, decimal, lowerLetter, etc.).
The resolver walks Uniword’s NumberingConfiguration to build a map of numId → { ordered, marker_type, format }.
Constant Summary collapse
- ORDERED_FORMATS =
%w[decimal lowerLetter upperLetter lowerRoman upperRoman russianLower russianUpper hebrew1 hebrew2 thaiLetters japaneseDigitalTenji japaneseKorean chineseCounting].freeze
Instance Method Summary collapse
-
#initialize(numbering_configuration) ⇒ NumberingResolver
constructor
A new instance of NumberingResolver.
-
#list_style(num_id) ⇒ Symbol
Get the list style for a numId.
-
#marker_type(num_id) ⇒ String
Get marker type string for a numId.
-
#ordered?(num_id) ⇒ Boolean
Determine if a numId represents an ordered list.
Constructor Details
#initialize(numbering_configuration) ⇒ NumberingResolver
Returns a new instance of NumberingResolver.
20 21 22 23 |
# File 'lib/coradoc/docx/transform/numbering_resolver.rb', line 20 def initialize(numbering_configuration) @config = numbering_configuration @num_map = build_num_map(numbering_configuration) end |
Instance Method Details
#list_style(num_id) ⇒ Symbol
Get the list style for a numId
42 43 44 |
# File 'lib/coradoc/docx/transform/numbering_resolver.rb', line 42 def list_style(num_id) ordered?(num_id) ? :ordered : :unordered end |
#marker_type(num_id) ⇒ String
Get marker type string for a numId
50 51 52 53 54 55 56 57 |
# File 'lib/coradoc/docx/transform/numbering_resolver.rb', line 50 def marker_type(num_id) return 'asterisk' unless num_id info = @num_map[num_id.to_i] return 'asterisk' unless info info[:marker_type] end |
#ordered?(num_id) ⇒ Boolean
Determine if a numId represents an ordered list
29 30 31 32 33 34 35 36 |
# File 'lib/coradoc/docx/transform/numbering_resolver.rb', line 29 def ordered?(num_id) return false unless num_id info = @num_map[num_id.to_i] return false unless info info[:ordered] end |