Пример #1
0
 def test_block_template(self):
     token = tempson.compiler("""<div>
         {% for item in list %}
             {{ item }}
         {% endfor %}
     </div>""")
     result = token.tokenize()
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>\n            '
         }, {
             'type': 'BLKEXP',
             'value': '{% for item in list %}'
         }, {
             'type': 'HTML',
             'value': '\n                '
         }, {
             'type': 'VAREXP',
             'value': '{{ item }}'
         }, {
             'type': 'HTML',
             'value': '\n            '
         }, {
             'type': 'BLKEXP',
             'value': '{% endfor %}'
         }, {
             'type': 'HTML',
             'value': '\n        </div>'
         }])
     except AssertionError:
         coloredPrint('\n  [tokenizer] × block template parse failed.',
                      'RED')
     else:
         coloredPrint('\n  [tokenizer] √ block template parse.', 'GREEN')
Пример #2
0
 def test_comment_template(self):
     token = tempson.compiler("""<div>
         {* this is comments *}
         {* multi-line comments
            row1
            row2
          *}
     </div>""")
     result = token.tokenize()
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>\n            '
         }, {
             'type': 'COMEXP',
             'value': '{* this is comments *}'
         }, {
             'type': 'HTML',
             'value': '\n            '
         }, {
             'type':
             'COMEXP',
             'value':
             '{* multi-line comments\n               row1\n               row2\n             *}'
         }, {
             'type': 'HTML',
             'value': '\n        </div>'
         }])
     except AssertionError:
         coloredPrint('\n  [tokenizer] × comments template parse failed.',
                      'RED')
     else:
         coloredPrint('\n  [tokenizer] √ comments template parse.', 'GREEN')
Пример #3
0
 def test_empty_template(self):
     token = tempson.compiler('')
     result = token.tokenize()
     try:
         self.assertEqual(result, [])
     except AssertionError:
         coloredPrint('\n  [tokenizer] × empty template detect failed.',
                      'RED')
     else:
         coloredPrint('\n  [tokenizer] √ empty template detect.', 'GREEN')
Пример #4
0
 def test_template_type(self):
     try:
         with self.assertRaises(RuntimeError):
             token = tempson.compiler([])
             result = token.tokenize()
     except AssertionError:
         coloredPrint('\n  [tokenizer] × template type detect failed.',
                      'RED')
     else:
         coloredPrint('\n  [tokenizer] √ template type detect.', 'GREEN')
Пример #5
0
 def test_raw_template(self):
     token = tempson.compiler("""<div>{{{ rawHTML }}}</div>""")
     result = token.tokenize()
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>'
         }, {
             'type': 'RAWEXP',
             'value': '{{{ rawHTML }}}'
         }, {
             'type': 'HTML',
             'value': '</div>'
         }])
     except AssertionError:
         coloredPrint('\n  [tokenizer] × raw template parse failed.', 'RED')
     else:
         coloredPrint('\n  [tokenizer] √ raw template parse.', 'GREEN')
Пример #6
0
 def test_variable_template(self):
     token = tempson.compiler('<div>{{ a }}</div>')
     result = token.tokenize()
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>'
         }, {
             'type': 'VAREXP',
             'value': '{{ a }}'
         }, {
             'type': 'HTML',
             'value': '</div>'
         }])
     except AssertionError:
         coloredPrint('\n  [tokenizer] × variable template parse failed.',
                      'RED')
     else:
         coloredPrint('\n  [tokenizer] √ variable template parse.', 'GREEN')
Пример #7
0
 def test_variable_with_string_expression_template(self):
     token = tempson.compiler('<div>{{ a + "}}" }}</div>')
     result = token.tokenize()
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>'
         }, {
             'type': 'VAREXP',
             'value': '{{ a + "}}" }}'
         }, {
             'type': 'HTML',
             'value': '</div>'
         }])
     except AssertionError:
         coloredPrint(
             '\n  [tokenizer] × error tokenize variable with string expression template.',
             'RED')
     else:
         coloredPrint(
             '\n  [tokenizer] √ expression template parse (keywords contains).',
             'GREEN')
Пример #8
0
 def test_ast_parser(self):
     doc = tempson.compiler("""<div>
         {% for item in list: %}
             {% if item == 1: %}
                 {{ item }}
             {% endif %}
             {% if item == 2: %}
                 {{ item }}
             {% endif %}
         {% endfor %}
     </div>""")
     tokens = doc.tokenize()
     result = doc.astParser(tokens)
     try:
         self.assertEqual(result, [{
             'type': 'HTML',
             'value': '<div>\n            '
         }, {
             'body': [{
                 'type': 'HTML',
                 'value': '\n                '
             }, {
                 'body': [{
                     'type': 'HTML',
                     'value': '\n                    '
                 }, {
                     'type': 'VAREXP',
                     'value': '{{ item }}'
                 }, {
                     'type': 'HTML',
                     'value': '\n                '
                 }],
                 'expression':
                 'item == 1',
                 'type':
                 'IFEXP'
             }, {
                 'type': 'HTML',
                 'value': '\n                '
             }, {
                 'body': [{
                     'type': 'HTML',
                     'value': '\n                    '
                 }, {
                     'type': 'VAREXP',
                     'value': '{{ item }}'
                 }, {
                     'type': 'HTML',
                     'value': '\n                '
                 }],
                 'expression':
                 'item == 2',
                 'type':
                 'IFEXP'
             }, {
                 'type': 'HTML',
                 'value': '\n            '
             }],
             'squence':
             'list',
             'type':
             'FOREXP',
             'iteratingVar':
             'item'
         }, {
             'type': 'HTML',
             'value': '\n        </div>'
         }])
     except AssertionError:
         coloredPrint('\n  [ast parser] × ast parse failed.', 'RED')
     else:
         coloredPrint('\n  [ast parser] √ ast parse correct.', 'GREEN')