Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vim fold marker {{{ causes TemplateSyntaxError #264

Closed
sscherfke opened this issue Aug 30, 2013 · 2 comments
Closed

Vim fold marker {{{ causes TemplateSyntaxError #264

sscherfke opened this issue Aug 30, 2013 · 2 comments

Comments

@sscherfke
Copy link

If I have a comment like /* General styles {{{ */ in a CSS template, I get the following error when Sphinx builds HTML:

# Sphinx version: 1.1.3
# Python version: 3.3.1
# Docutils version: 0.11 release
# Jinja2 version: 2.7.1
Traceback (most recent call last):
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/cmdline.py", line 189, in main
    app.build(force_all, filenames)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/application.py", line 204, in build
    self.builder.build_update()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/builders/__init__.py", line 196, in build_update
    'out of date' % len(to_build))
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/builders/__init__.py", line 255, in build
    self.finish()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/builders/html.py", line 462, in finish
    self.copy_static_files()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/builders/html.py", line 561, in copy_static_files
    self, ctx)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/util/__init__.py", line 158, in copy_static_entry
    exclude_matchers=exclude_matchers)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/util/__init__.py", line 146, in copy_static_entry
    fdst.write(builder.templates.render_string(fsrc.read(), context))
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/sphinx/jinja2glue.py", line 131, in render_string
    return self.environment.from_string(source).render(context)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/environment.py", line 841, in from_string
    return cls.from_code(self, self.compile(source), globals, None)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/environment.py", line 554, in compile
    self.handle_exception(exc_info, source_hint=source)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/_compat.py", line 36, in reraise
    raise value.with_traceback(tb)
  File "<unknown>", line 203, in <module>
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/environment.py", line 459, in _parse
    return Parser(self, source, name, encode_filename(filename)).parse()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 893, in parse
    result = nodes.Template(self.subparse(), lineno=1)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 867, in subparse
    add_data(self.parse_tuple(with_condexpr=True))
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 612, in parse_tuple
    args.append(parse())
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 386, in parse_expression
    return self.parse_condexpr()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 391, in parse_condexpr
    expr1 = self.parse_or()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 404, in parse_or
    left = self.parse_and()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 413, in parse_and
    left = self.parse_not()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 424, in parse_not
    return self.parse_compare()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 428, in parse_compare
    expr = self.parse_add()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 450, in parse_add
    left = self.parse_sub()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 460, in parse_sub
    left = self.parse_concat()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 470, in parse_concat
    args = [self.parse_mul()]
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 480, in parse_mul
    left = self.parse_div()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 490, in parse_div
    left = self.parse_floordiv()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 500, in parse_floordiv
    left = self.parse_mod()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 510, in parse_mod
    left = self.parse_pow()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 520, in parse_pow
    left = self.parse_unary()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 538, in parse_unary
    node = self.parse_primary()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 573, in parse_primary
    node = self.parse_dict()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 653, in parse_dict
    key = self.parse_expression()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 386, in parse_expression
    return self.parse_condexpr()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 391, in parse_condexpr
    expr1 = self.parse_or()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 404, in parse_or
    left = self.parse_and()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 413, in parse_and
    left = self.parse_not()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 424, in parse_not
    return self.parse_compare()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 428, in parse_compare
    expr = self.parse_add()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 450, in parse_add
    left = self.parse_sub()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 460, in parse_sub
    left = self.parse_concat()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 470, in parse_concat
    args = [self.parse_mul()]
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 480, in parse_mul
    left = self.parse_div()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 490, in parse_div
    left = self.parse_floordiv()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 500, in parse_floordiv
    left = self.parse_mod()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 510, in parse_mod
    left = self.parse_pow()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 520, in parse_pow
    left = self.parse_unary()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 533, in parse_unary
    node = nodes.Neg(self.parse_unary(False), lineno=lineno)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 533, in parse_unary
    node = nodes.Neg(self.parse_unary(False), lineno=lineno)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 538, in parse_unary
    node = self.parse_primary()
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 575, in parse_primary
    self.fail("unexpected '%s'" % describe_token(token), token.lineno)
  File "/home/stefan/.virtualenvs/mosaik/lib/python3.3/site-packages/jinja2/parser.py", line 51, in fail
    raise exc(msg, lineno, self.name, self.filename)
jinja2.exceptions.TemplateSyntaxError: unexpected '*'

It doesn't matter if I wrap the {{{ with dashes—as long as it occurs in a comment, an error is raised. The end marker /* }}} */ works fine, though.

@vreon
Copy link

vreon commented Sep 5, 2013

This is because Jinja doesn't know about the semantics of the text it's generating; "CSS comment" has no meaning to it.

Does folding work if you use Jinja comments instead? They won't appear in the generated CSS, but that may not be a dealbreaker for you...

{# General styles {{{ #}
.foo { ... }
{# }}} #}

@sscherfke
Copy link
Author

Yes, jinja comments work.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 13, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants