def strip_styles(template: Template) -> str: """ Strip and return any embedded <style></style> content from a template. """ pattern = r'<style.*?>(.+?)</style>' stripped_styles = '' search = re.compile(pattern, re.DOTALL) # find all style matches and extract embedded styles for style_match in re.finditer(pattern, template.content, re.DOTALL): # note that we strip the entire style- not the inner content style = style_match.group(0).strip() # separating each style block for good measure stripped_styles = stripped_styles + '\n' + style if len(stripped_styles) > 0 else style # finally remove all style matches # note that this removes the <style></style> tags too template.content = re.sub(search, '', template.content).strip() # make sure we keep it clean- no unnecessary newlines or excess whitespace stripped_styles = stripped_styles.strip() template_field_names = list((field.name for field in fields(stripped_styles))) if len(template_field_names) > 0: context = template.path # if there's any fields in the styles, display a warning about it WarningDisplay.fields_in_styles( WarningContext(context), template_field_names) return stripped_styles
def strip_styles(template: Template) -> str: """ Strip and return any embedded <style></style> content from a template. """ pattern = r'<style.*?>(.+?)</style>' stripped_styles = '' search = re.compile(pattern, re.DOTALL) # find all style matches and extract embedded styles for style_match in re.finditer(pattern, template.content, re.DOTALL): # note that we strip the entire style- not the inner content style = style_match.group(0).strip() # separating each style block for good measure stripped_styles = stripped_styles + '\n' + style if len( stripped_styles) > 0 else style # finally remove all style matches # note that this removes the <style></style> tags too template.content = re.sub(search, '', template.content).strip() # make sure we keep it clean- no unnecessary newlines or excess whitespace stripped_styles = stripped_styles.strip() template_field_names = list( (field.name for field in fields(stripped_styles))) if len(template_field_names) > 0: context = template.path # if there's any fields in the styles, display a warning about it WarningDisplay.fields_in_styles(WarningContext(context), template_field_names) return stripped_styles