Ejemplo n.º 1
0
	def visit_FilterBlock(self, node, frame):
		
		local = Frame(EvalContext(self.environment, self.name))
		local.buffer = '_fbuf'
		local.toplevel = frame.toplevel
		
		self.writeline('var %s = [];' % local.buffer)
		for n in node.body:
			self.visit(n, local)
		
		bits = frame.buffer, node.filter.name, local.buffer
		self.writeline('%s.push(Jasinja.filters.%s(%s.join("")));' % bits)
Ejemplo n.º 2
0
	def visit_Template(self, node, frame=None):
		
		frame = Frame(EvalContext(self.environment, self.name))
		frame.buffer = '_buf'
		frame.toplevel = True
		
		self.indent()
		self.writeline('')
		self.writeline('"%s": {' % self.name)
		self.indent()
		self.writeline('')
		
		self.writeline('')
		self.write('"macros": ')
		macros = list(node.find_all(nodes.Macro))
		if not macros:
			self.write('{},')
		else:
			self.write('{')
			self.indent()
			self.writeline('')
			for i, n in enumerate(macros):
				self.jsmacro(n, frame)
				if i != len(macros) - 1: self.write(',')
			self.writeline('')
			self.outdent()
			self.writeline('},')
		
		self.writeline('')
		self.write('"blocks": ')
		blocks = list(node.find_all(nodes.Block))
		if not blocks:
			self.write('{},')
		else:
			self.write('{')
			self.indent()
			self.writeline('')
			for i, n in enumerate(blocks):
				self.block(n, frame)
				if i != len(blocks) - 1: self.write(',')
			self.writeline('')
			self.outdent()
			self.writeline('},')
		
		self.writeline('')
		self.writeline('"render": function(ctx, tmpl) {')
		self.indent()
		
		extends = node.find(nodes.Extends)
		if extends:
			self.newline()
			self.write('return Jasinja.templates[')
			self.visit(extends.template, frame)
			self.write('].render(ctx, this);')
		else:
			self.writeline('')
			self.writeline('tmpl = Jasinja.utils.extend(this, tmpl);')
			self.writeline('')
			self.writeline('var %s = [];' % frame.buffer)
			for n in node.body:
				self.visit(n, frame)
			self.writeline('return %s.join("");' % frame.buffer)
			self.writeline('')
		
		self.outdent()
		self.writeline('}')
		self.outdent()
		self.writeline('')
		self.writeline('}')
		self.writeline('')