Class: Uniword::Wordprocessingml::StyleCleanup
- Inherits:
-
Object
- Object
- Uniword::Wordprocessingml::StyleCleanup
- Defined in:
- lib/uniword/wordprocessingml/style_cleanup.rb
Overview
Removes styles from a document's style definitions — Word's Styles-pane management as an API.
#remove_unused deletes styles that no content references,
directly (pStyle/rStyle/tblStyle in body, headers, footers, notes,
comments) or transitively (basedOn/link/next chains from a used
style, numbering level pStyle). Default styles (w:default="1")
are never removed.
Instance Method Summary collapse
-
#initialize(document) ⇒ StyleCleanup
constructor
A new instance of StyleCleanup.
-
#remove?(style_id) ⇒ Boolean
Remove one style by id (unless protected).
-
#remove_unused ⇒ Array<String>
Remove every unreferenced style.
-
#unused_ids ⇒ Array<String>
Ids of styles no content references.
Constructor Details
#initialize(document) ⇒ StyleCleanup
Returns a new instance of StyleCleanup.
19 20 21 |
# File 'lib/uniword/wordprocessingml/style_cleanup.rb', line 19 def initialize(document) @document = document end |
Instance Method Details
#remove?(style_id) ⇒ Boolean
Remove one style by id (unless protected).
27 28 29 30 31 32 33 |
# File 'lib/uniword/wordprocessingml/style_cleanup.rb', line 27 def remove?(style_id) return false if protected_id?(style_id) before = styles.size styles.delete_if { |style| style.styleId == style_id } styles.size < before end |
#remove_unused ⇒ Array<String>
Remove every unreferenced style.
46 47 48 49 50 |
# File 'lib/uniword/wordprocessingml/style_cleanup.rb', line 46 def remove_unused ids = unused_ids ids.each { |id| remove?(id) } ids end |
#unused_ids ⇒ Array<String>
Ids of styles no content references.
38 39 40 41 |
# File 'lib/uniword/wordprocessingml/style_cleanup.rb', line 38 def unused_ids used = used_ids styles.filter_map(&:styleId).uniq - used - protected_ids end |