from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
from django import template

register = template.Library()

@register.filter
@stringfilter
def zerowidthspace_separator(value, num):
	"""
	Add zero-width space every num chars in string
	"""
	num = int(num)
	locations = range(0, len(value), num)[1:] # loc to insert 

	new_value = value[:num]

	for loc in locations:
		if loc + num < len(value):
			new_value += '&#8203;' + value[loc:(loc+num)]
		else:
			new_value += '&#8203;' + value[loc:] # last substring may have less than num chars

	return mark_safe(new_value)