From 3e9e49d06c523f38767a4354289fe201e0ac837a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 11 Nov 2021 08:18:25 +0530 Subject: [PATCH] Implement tester for HTML transforms --- src/calibre/ebooks/html_transform_rules.py | 7 +++++++ src/calibre/gui2/html_transform_rules.py | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/html_transform_rules.py b/src/calibre/ebooks/html_transform_rules.py index dad3442ff8..25da978adc 100644 --- a/src/calibre/ebooks/html_transform_rules.py +++ b/src/calibre/ebooks/html_transform_rules.py @@ -387,6 +387,13 @@ def transform_doc(root, rules): return changed +def transform_html(html, serialized_rules): + root = parse(html, namespace_elements=True) + rules = tuple(Rule(r) for r in serialized_rules) + changed = transform_doc(root, rules) + return changed, etree.tostring(root, encoding='unicode') + + def transform_container(container, serialized_rules, names=()): if not names: types = OEB_DOCS diff --git a/src/calibre/gui2/html_transform_rules.py b/src/calibre/gui2/html_transform_rules.py index 52548994fa..74b63834e2 100644 --- a/src/calibre/gui2/html_transform_rules.py +++ b/src/calibre/gui2/html_transform_rules.py @@ -11,7 +11,7 @@ from qt.core import ( from calibre import prepare_string_for_xml from calibre.ebooks.html_transform_rules import ( - ACTION_MAP, MATCH_TYPE_MAP, export_rules, import_rules, + ACTION_MAP, MATCH_TYPE_MAP, export_rules, import_rules, transform_html, validate_rule ) from calibre.gui2 import choose_files, choose_save_file, elided_text, error_dialog @@ -350,7 +350,8 @@ class Tester(Dialog): # {{{ return self.html.toPlainText() def do_test(self): - pass # TODO: Implement this + changed, html = transform_html('\n' + self.value + '\n', self.rules) + self.result.load_text('\n\n%s' % (_('Resulting HTML'), html), 'html') def sizeHint(self): return QSize(800, 600)