Beispiel #1
0
  def test_getattr(self):
    class Article:
      def __init__(self, text, url):
        self.text = text
	self.url = url
    articles = []
    articles.append(Article('twitter','http://twitter.com'))
    articles.append(Article('google','http://www.google.com'))
    articles.append(Article('yahoo!','http://www.yahoo.com'))
    node = nodes.Template(
                       [nodes.For(
		         nodes.Name('article', 'store'),
			 nodes.Name('articles', 'load'),
			 [nodes.Output([
			   nodes.Getattr(
			     nodes.Name('article', 'load'),
			     'text',
			     'load'
			   ),
			   nodes.TemplateData(u':'),
			   nodes.Getattr(
			     nodes.Name('article', 'load'),
			     'url',
			     'load'),
			   nodes.TemplateData(u'\n'),
			  ])],
                       )])
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual('twitter:http://twitter.com\n'
    'google:http://www.google.com\nyahoo!:http://www.yahoo.com\n',
    tpl.render({'articles': articles}))
Beispiel #2
0
 def test_visit_Name(self):
   frame = compiler.Frame()
   self.assertFalse(frame.identifiers.is_declared('greeting'))
   _nodes = []
   _nodes.append(nodes.Output(nodes.Name('greeting', 'load')))
   self.generator.visit(nodes.Template(_nodes), frame)
   self.assertTrue(frame.identifiers.is_declared('greeting'))
   code = self.generator.get_code()
   #print code
   tpl = Template.from_code(code)
   self.assertEqual('hello', tpl.render(greeting='hello'))
Beispiel #3
0
  def test_OutputNode_list(self):
    node = nodes.Template([nodes.Output([
        nodes.Name('date', 'load'),
	nodes.TemplateData(u': '),
	nodes.Name('message', 'load')
      ])
     ])
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual(u'2011-07-25: hello', tpl.render(date='2011-07-25', message='hello'))
Beispiel #4
0
  def test_visit_For(self):
    node = nodes.Template([
             nodes.For(
	       nodes.Name('item', 'store'),
	       nodes.Name('seq', 'load'),
	       nodes.Output(nodes.Name('item', 'load'))
	    )
	  ])
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual('one, two, three', tpl.render(seq=['one, ', 'two, ', 'three']))
Beispiel #5
0
  def test_if_simple(self):
    node =nodes.Template([
      nodes.If(
        nodes.Const(True),
	[nodes.Output(
	  [nodes.TemplateData(u'...')])
	]
      )])
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual('...', tpl.render())
Beispiel #6
0
  def test_set_simple(self):
    node = nodes.Template(
                       [nodes.Assign(
		         nodes.Name('foo', 'store'),
			 nodes.Const(1)),
			 nodes.Output(
			   [nodes.Name('foo', 'load')]
			 )
		       ]
		     )
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    tpl = Template.from_code(code)
    self.assertEqual(u'1', tpl.render())
Beispiel #7
0
  def test_block(self):
    node = nodes.Template([
              nodes.Block(
	        #name
	        'foo',
		#body
	        [nodes.Output([nodes.TemplateData(u'...')])]
	      )
            ])
    self.generator.visit(node, compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual('...', tpl.render())
Beispiel #8
0
  def test_TemplateNode_from_multi_nodes(self):
    data = ('<html>\n',
             '<head><title>hello, world</title></head>\n',
             '<body>hello, world</body>\n',
             '</html>\n'
	     )
    _nodes = []
    _nodes.append(nodes.Output(nodes.TemplateData(data[0])))
    _nodes.append(nodes.Output(nodes.TemplateData(data[1])))
    _nodes.append(nodes.Output(nodes.TemplateData(data[2])))
    _nodes.append(nodes.Output(nodes.TemplateData(data[3])))
    self.generator.visit_Template(nodes.Template(_nodes), compiler.Frame())
    code = self.generator.get_code()
    #print code
    tpl = Template.from_code(code)
    self.assertEqual(''.join(data), tpl.render())
Beispiel #9
0
 def test_forloop_in_if(self):
   node = nodes.Template([
     nodes.If(
       nodes.Name('render', 'load'),
       [nodes.For(nodes.Name('cell', 'store'),
        nodes.Name('row', 'load'),
        [nodes.Output([
          nodes.Name('cell', 'load')
        ])],
     )],
   )])
   self.generator.visit(node, compiler.Frame())
   code = self.generator.get_code()
   #print code
   tpl = Template.from_code(code)
   self.assertEqual('0123456789', tpl.render({'render':True, 'row': range(10)}))
   self.assertEqual('', tpl.render({'render':False, 'row': range(10)}))
Beispiel #10
0
 def test_TemplateNode_from_one_node(self):
   node = nodes.Template([nodes.Output(nodes.TemplateData(self.data))])
   self.generator.visit_Template(node, compiler.Frame())
   code = self.generator.get_code()
   tpl = Template.from_code(code)
   self.assertEqual(self.data, tpl.render())