From 15ad56c024796cae6f61dd2a493262c638a3703f Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Tue, 21 Mar 2017 11:18:53 -0700 Subject: [PATCH] rewrite dash: support for using custom rewriting function (for FB) rewrite_fb_dash() added for rewriting dash xml, embedded in js, embedded in html todo: refactor to make more general support for custom rewriting functions regex_rewriter: add ':' to exclude from rewrite again --- pywb/rewrite/regex_rewriters.py | 13 ++++++++++++- pywb/rewrite/rewrite_dash.py | 20 ++++++++++++++++++++ pywb/rules.yaml | 4 ++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/pywb/rewrite/regex_rewriters.py b/pywb/rewrite/regex_rewriters.py index b0adc383..d2395ee3 100644 --- a/pywb/rewrite/regex_rewriters.py +++ b/pywb/rewrite/regex_rewriters.py @@ -3,6 +3,15 @@ import re from pywb.rewrite.url_rewriter import UrlRewriter +#================================================================= +def load_function(string): + import importlib + + string = string.split(':', 1) + mod = importlib.import_module(string[0]) + return getattr(mod, string[1]) + + #================================================================= class RegexRewriter(object): #@staticmethod @@ -93,6 +102,8 @@ class RegexRewriter(object): match = obj.get('match') if 'rewrite' in obj: replace = RegexRewriter.archival_rewrite(rewriter) + elif 'function' in obj: + replace = load_function(obj['function']) else: replace = RegexRewriter.format(obj.get('replace', '{0}')) group = obj.get('group', 0) @@ -132,7 +143,7 @@ class JSLocationRewriterMixin(object): def __init__(self, rewriter, rules=[], prefix='WB_wombat_'): rules = rules + [ # (r'(?