Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	| import re | |
| # check: https://github.com/vasturiano/d3-zoomable/blob/master/example/svg/index.html | |
| def remove_links_svg(svg): | |
| svg = svg.replace("</a>","") | |
| svg = svg.replace("\n\n","\n") | |
| regex = r"<a xlink[^>]*>" | |
| svg = re.sub(regex, "", svg, count=0, flags=re.MULTILINE) | |
| return svg | |
| def resize_svg(svg, max_width=800): | |
| regex = r"<svg width=\"(?P<width>[\d]+)pt\" height=\"(?P<height>[\d]+)pt\"" | |
| match = next(re.finditer(regex, svg, re.MULTILINE)) | |
| width = int(match.group("width")) | |
| height = int(match.group("height")) | |
| if width <= max_width: | |
| return svg | |
| scale = max_width / width | |
| s_width = round(scale * width) | |
| s_height = round(scale * height) | |
| s_svg = svg.replace(match.group(), f'<svg width="{s_width}pt" height="{s_height}pt"') | |
| return s_svg | |
| def postprocess_svg(svg): | |
| if not svg: | |
| return "" | |
| svg = "<svg" + svg.split("<svg", maxsplit=1)[1] | |
| svg = remove_links_svg(svg) | |
| svg = resize_svg(svg, max_width=800) | |
| return svg | |
