Example #1
0
def block_compact(element):
	import intermediate
	from modules import compact 
	
	test = lambda x,y: isinstance(x, intermediate.Text) and isinstance(y, intermediate.Text)
	element.children = compact(element.children, test)
	
	def test(x,y):
		if not isinstance(x, intermediate.Special): return False
		if not isinstance(y, intermediate.Special): return False
		if x.modifiers.symmetric_difference(y.modifiers): return False
		return True
	
	element.children = compact(element.children, test)
	return element
Example #2
0
	def __add__(self, x):		
		if not isinstance(x, Special): raise TypeError('Expected argument of type Special')
		from modules import compact
		self.children  = self.children + x.children
		self.children  = compact(self.children, lambda x,y: isinstance(x, Text) and isinstance(y, Text))
		self.modifiers = list(set(x.modifiers).union(self.modifiers))
		return self
Example #3
0
def get_zombie_run(element, files):
	""" Get run text containers """
	import intermediate
	from modules import compact
	
	#A run is a list of text elements, treat as such
	run = list()
	for child in element.childNodes:
		run.append(get_zombie(child, files))
	
	run = compact(run, lambda x,y: isinstance(x, intermediate.Text) and isinstance(y, intermediate.Text))
	return run
Example #4
0
def get_zombie_specialrun(element, files):
	""" Special runs are set apart in some way from	neighboring runs. """
	import intermediate
	from modules import compact
	
	styles    = get_styles(element)
	modifiers = get_modifiers(element)
	
	special           = intermediate.Special()
	special.modifiers = modifiers.union(styles)
	
	for child in element.childNodes:
		child = get_zombie(child, files)
		special.append(child)
	
	special.children = compact(special.children, lambda x,y: isinstance(x, intermediate.Text) and isinstance(y, intermediate.Text))
	return special