diff --git a/common/lib/xmodule/xmodule/gst_module.py b/common/lib/xmodule/xmodule/gst_module.py index f8f296e97e..b5d1c69368 100644 --- a/common/lib/xmodule/xmodule/gst_module.py +++ b/common/lib/xmodule/xmodule/gst_module.py @@ -73,10 +73,10 @@ class GraphicalSliderToolModule(XModule): plot_div = '
' # extract css style from plot - plot_def = re.search(r'\$plot[^\$]*\$', html_string) + plot_def = re.search(r'\', html_string) if plot_def: plot_def = plot_def.group() - style = re.search(r'(?=.*style\=[\"\'](.*)[\"\'])', plot_def, + style = re.search(r'(?=[^\$]*style\=[\"\'](.*)[\"\'])', plot_def, flags=re.UNICODE | re.DOTALL) if style: style = style.groups()[0] @@ -105,7 +105,7 @@ class GraphicalSliderToolModule(XModule): ' for var in variables: # find $slider var='var' ... $ - instances = re.findall(r'\$slider\s+(?=.*var\=[\"\']' + var + '[\"\'])' \ + instances = re.findall(r'\$slider\s+(?=[^\$]*var\=[\"\']' + var + '[\"\'])' \ + r'[^\$]*\$', html_string, flags=re.UNICODE | re.DOTALL) if instances: # if presented, only one slider per var slider_def = instances[0] # get $slider var='var' ... $ string @@ -114,7 +114,7 @@ class GraphicalSliderToolModule(XModule): slider_def).group() slider_def = slider_def.replace(var_substring, '') # get style - style = re.search(r'(?=.*style\=[\"\'](.*)[\"\'])', slider_def, + style = re.search(r'(?=[^\$]*style\=[\"\'](.*)[\"\'])', slider_def, flags=re.UNICODE | re.DOTALL) if style: style = style.groups()[0] @@ -126,7 +126,7 @@ class GraphicalSliderToolModule(XModule): var=var, style=style) # subsitute $slider var='var' ... $ in html_srting to proper # html div element - html_string = re.sub(r'\$slider\s+(?=.*var\=[\"\'](' + \ + html_string = re.sub(r'\$slider\s+(?=[^\$]*var\=[\"\'](' + \ var + ')[\"\'])' + r'[^\$]*\$', replacement, html_string, flags=re.UNICODE | re.DOTALL) @@ -139,23 +139,24 @@ class GraphicalSliderToolModule(XModule): for var in variables: input_index = 0 # make multiple inputs for same variable have # different id - instances = re.findall(r'\$input\s+(?=.*var\=[\"\']' + var + '[\"\'])' \ + instances = re.findall(r'\$input\s+(?=[^\$]*var\=[\"\']' + var + '[\"\'])' \ + r'[^\$]*\$', html_string, flags=re.UNICODE | re.DOTALL) # import ipdb; ipdb.set_trace() for input_def in instances: # for multiple inputs per var input_index += 1 # extract var and readonly before style! + # import ipdb; ipdb.set_trace() var_substring = re.search(r'(var\=[\"\']' + var + r'[\"\'])', input_def).group() input_def = input_def.replace(var_substring, '') - readonly = re.search(r'(?=.*(readonly\=[\"\'](\w+)[\"\']))', + readonly = re.search(r'(?=[^\$]*(readonly\=[\"\'](\w+)[\"\']))', input_def, flags=re.UNICODE | re.DOTALL) if readonly: input_def = input_def.replace(readonly.groups()[0], '') readonly = readonly.groups()[1] else: readonly = '' - style = re.search(r'(?=.*style\=[\"\'](.*)[\"\'])', input_def, + style = re.search(r'(?=[^\$]*style\=[\"\'](.*)[\"\'])', input_def, flags=re.UNICODE | re.DOTALL) if style: style = style.groups()[0] @@ -167,7 +168,7 @@ class GraphicalSliderToolModule(XModule): var=var, readonly=readonly, style=style, input_index=input_index) # import ipdb; ipdb.set_trace() - html_string = re.sub(r'\$input\s+(?=.*var\=[\"\'](' + \ + html_string = re.sub(r'\$input\s+(?=[^\$]*var\=[\"\'](' + \ var + ')[\"\'])' + r'[^\$]*\$', replacement, html_string, count=1, flags=re.UNICODE | re.DOTALL) return html_string