[Plugin] RemoveInLineStyles Plugin
Hi All,
This "edit" plugin will search for and remove all inline styles (style attributes in xhtml tags) and replace them with the equivalent class stored in an external stylesheet.
Please note there is now a related css companion plugin called FixHeadStyles creted bu Doitsu that will extract style tag contents and make them into external css stylesheets. Please see the Sigil Plugin Index for a link to it.
Updated: May 31, 2021
Current Version: "0.3.1"
Requires: Python 3.4 or Later and Sigil 1.0 or later
See the attached: RemoveInLineStyles_v031.zip
For Sigil Versions before Sigil-1.0
please see the attached older version RemoveInLineStyles_v021.zip
How it works:
It will parse all existing stylesheets using cssutils (part of the official internal Python 3 requirements included with Sigil) to create a list of all stylesheet file names and class names currently being used to prevent name collisions.
Then it will parse each and every xhtml file, examining each tag and if a style attribute is present, it will remove it, look in the current list of newly created rules to see if an exact match exists and if not add a new class name with that new rule. The correct class attribute is then added to replace the removed style attribute. Note that for safety, inline styles used inside svg or mathml elements/regions are not touched.
If inline styles are found, an external link to the newly created external stylesheet will be inserted into the head element just before the closing head tag.
No changes will be made if no inline styles are actually found in the xhtml file and no new css stylesheet will be created unless at least one inline style is found someplace in the ebook.
This code should be safe to use if no external stylesheets already exist or if there is no mixing of existing css rules and inline styles for the exact same element.
Warnings
1. Please note, any styles inside the style tag in the head tag will be ignored.
2. Should not be used on code that mixes css rules with inline styles at the same time as the authors intent with the inline style may be to overrule anything previous because inline styles have higher specificity.
Problems / Bug Reports / Suggestions for Improvements
If you do run into problems with this plugin, please report them here including a small sample of the problem xhtml/css code, along with information on your platform, Sigil version, etc. And I will try to quickly fix any bugs or issues you run into.
Hope this helps!
KevinH
Last edited by KevinH; 01-11-2022 at 04:55 PM.
|