templates: Fix minor whitespace errors.

(we also add validation)
This commit is contained in:
Steve Howell
2021-12-01 23:51:16 +00:00
committed by Tim Abbott
parent a744e38e67
commit 2f0f27b841
7 changed files with 41 additions and 8 deletions

View File

@@ -18,7 +18,7 @@
</p>
<ul>
<li><code>Python</code> {{t "and" }} <code>https://replit.com/languages/python3/?code=</code></li>
<li><code>JavaScript</code> {{t "and" }} <code>https://replit.com/languages/javascript/?code=</code></li>
<li><code>JavaScript</code> {{t "and" }} <code>https://replit.com/languages/javascript/?code=</code></li>
</ul>
{{#if is_admin}}

View File

@@ -49,7 +49,7 @@
How we work
</h1>
<p>
<strong>Open source.</strong> The Zulip software is 100% free and
<strong>Open source.</strong> The Zulip software is 100% free and
open source. We're <a href="/team/">an open-source project</a> first,
and were building a sustainable business as a means to support the
project's growth and long-term future. We provide the same open-source
@@ -77,7 +77,7 @@
are open to all applicants without regard for location.
</p>
<p>
<strong>Maintainable software.</strong> Great
<strong>Maintainable software.</strong> Great
software over time depends on a teams shared
understanding of a system and how to change it, as
much as on the code itself. Beyond writing our

View File

@@ -49,7 +49,7 @@
<input type="hidden" name="onboarding" value="true" />
{% endif %}
{% if onboarding and free_trial_days %}
<p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
<p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
<hr />
<h2>Zulip Standard free trial</h2>
{% endif %}
@@ -165,7 +165,7 @@
<div id="invoice-input-section">
<form id="invoice-form" method="post">
{% if onboarding and free_trial_days %}
<p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
<p><b>Not ready to start your trial?</b> <a href="/">Continue with the Zulip Cloud Free plan</a>.</p>
<hr />
<h2>Zulip Standard free trial</h2>
{% endif %}

View File

@@ -70,7 +70,7 @@
<br />
<div class="row2">
<label for="URL"><b>URL</b> (automatically generated)</label>
<label for="URL"><b>URL</b> (automatically generated)</label>
<input id="URL" type="text" />
</div>

View File

@@ -10,5 +10,5 @@
<p>{% trans realm_uri=macros.link_tag(realm_uri), old_email=macros.email_tag(old_email), new_email=macros.email_tag(new_email) %}We received a request to change the email address for the Zulip account on {{ realm_uri }} from {{ old_email }} to {{ new_email }}. To confirm this change, please click below:{% endtrans %}
<a class="button" href="{{ activate_url }}">{{_('Confirm email change') }}</a></p>
<p>{% trans support_email=macros.email_tag(support_email) %}If you did not request this change, please contact us immediately at {{ support_email }}.{% endtrans %}</p>
<p>{% trans support_email=macros.email_tag(support_email) %}If you did not request this change, please contact us immediately at {{ support_email }}.{% endtrans %}</p>
{% endblock %}

View File

@@ -135,7 +135,7 @@ page can be easily identified in it's respective JavaScript file. -->
<form class="social_login_form form-inline" action="{{ backend.login_url }}" method="get">
<input type="hidden" name="next" value="{{ next }}" />
<button id="login_{{ backend.button_id_suffix }}" class="login-social-button"
{% if backend.display_icon %} style="background-image:url({{ backend.display_icon }})" {% endif %}> {{ _('Log in with %(identity_provider)s', identity_provider=backend.display_name) }}
{% if backend.display_icon %} style="background-image:url({{ backend.display_icon }})" {% endif %}> {{ _('Log in with %(identity_provider)s', identity_provider=backend.display_name) }}
</button>
</form>
</div>

View File

@@ -290,6 +290,7 @@ def validate(fn: Optional[str] = None, text: Optional[str] = None) -> None:
{e}"""
)
prevent_whitespace_violations(fn, tokens)
prevent_dangling_tags(fn, tokens)
class State:
@@ -435,6 +436,38 @@ def validate(fn: Optional[str] = None, text: Optional[str] = None) -> None:
raise TemplateParserException("Missing end tag")
def prevent_whitespace_violations(fn: str, tokens: List[Token]) -> None:
if tokens[0].kind in ("indent", "whitespace"):
raise TemplateParserException(f" Please remove the whitespace at the beginning of {fn}.")
for i in range(1, len(tokens) - 1):
token = tokens[i]
next_token = tokens[i + 1]
if token.kind == "indent":
if next_token.kind in ("indent", "whitespace"):
raise AssertionError("programming error parsing indents")
if next_token.kind == "newline":
raise TemplateParserException(
f"""Please just make row {token.line} in {fn} a truly blank line (no spaces)."""
)
if token.kind == "whitespace":
if len(token.s) > 1:
raise TemplateParserException(
f"""
We did not expect this much whitespace at row {token.line} column {token.col} in {fn}.
"""
)
if next_token.kind == "newline":
raise TemplateParserException(
f"""
Unexpected trailing whitespace at row {token.line} column {token.col} in {fn}.
"""
)
def prevent_dangling_tags(fn: str, tokens: List[Token]) -> None:
"""
Prevent this kind of HTML: