def test_section_clean(): assert misai.render(' | {{#if 1}}\t|\t{{#end}} | \n') == ' | \t|\t | \n' assert misai.render( ' | {{#if 1}} {{ "" }}\n {{#end}} | \n') == ' | \n | \n' assert misai.render( ' {{#if 1}}YES{{#end}}\n {{#if 1}}GOOD{{#end}}\n') == ' YES\n GOOD\n' assert misai.render( dedent('''\ | | This Is {{#if 1}} | {{#end}} | A Line''')) == dedent('''\ | | This Is | | A Line''') assert misai.render( dedent('''\ | | This Is {{#if 1}} | {{#end}} \t | A Line''')) == dedent('''\ | | This Is | | A Line''') assert misai.render('|\r\n{{#if 1}}\r\n{{#end}}\r\n|') == '|\r\n|' assert misai.render(' {{#if 1}}\n#{{#end}}\n/') == '#\n/' assert misai.render('#{{#if 1}}\n/\n {{#end}}') == '#\n/\n' assert misai.render('|{{#if 1}}={{#end}}|') == '|=|' assert misai.render(' \t{{ foo }}\t ', {'foo': 'bar'}) == ' \tbar\t '
def test_groups(): assert render('{{ 0 and 1 or 2 and 3 }}') == '3' assert render('{{ 0 and (1 or 2) and 3 }}') == '0'
def test_precedence(): assert render('{{ foo.bar | capitalize }}', {'foo': { 'bar': 'baz' }}) == 'Baz'
def test_attr(): assert render('{{ foo.bar }}', {'foo': {'bar': 'baz'}}) == 'baz' assert render('{{ foo.bar.baz }}', {'foo': {'bar': {'baz': 1}}}) == '1' assert render('{{ foo["bar"] }}', {'foo': {'bar': 'baz'}}) == 'baz' assert render('{{ foo["bar"][1] }}', {'foo': {'bar': [1, 2, 3]}}) == '2'
def test_filter_params(): assert render('{{ 1 | concat: "2", "3" }}') == '123' assert render('{{ 100000 | add: 500 }}') == '100500'
def test_pipe(): assert render('{{ " foo " | strip | capitalize }}') == 'Foo'
def test_simple(): assert render('{{ foo }}', {'foo': 'bar'}) == 'bar' assert render('{{ "foo" }}', {'foo': 'bar'}) == 'foo' assert render('{{ 1.2 }}', {'foo': 'bar'}) == '1.2' assert render('{{ 100 }}', {'foo': 'bar'}) == '100'