mirror of
https://github.com/zulip/zulip.git
synced 2025-11-21 23:19:10 +00:00
markdown: Use unicode ellipses for collapsing spoilers.
We had initially implemented this feature using `(...)` but `(…)` is the better variation.
This commit is contained in:
committed by
Tim Abbott
parent
7d5d90b484
commit
b64ba98e90
@@ -534,8 +534,8 @@ def get_mobile_push_content(rendered_content: str) -> str:
|
|||||||
header = elem.find_class('spoiler-header')[0]
|
header = elem.find_class('spoiler-header')[0]
|
||||||
text = process(header).strip()
|
text = process(header).strip()
|
||||||
if len(text) == 0:
|
if len(text) == 0:
|
||||||
return "(...)\n"
|
return "(…)\n"
|
||||||
return f"{text} (...)\n"
|
return f"{text} (…)\n"
|
||||||
|
|
||||||
def process(elem: lxml.html.HtmlElement) -> str:
|
def process(elem: lxml.html.HtmlElement) -> str:
|
||||||
plain_text = ''
|
plain_text = ''
|
||||||
|
|||||||
12
zerver/tests/fixtures/markdown_test_cases.json
vendored
12
zerver/tests/fixtures/markdown_test_cases.json
vendored
@@ -848,39 +848,39 @@
|
|||||||
"name": "spoilers_fenced_spoiler",
|
"name": "spoilers_fenced_spoiler",
|
||||||
"input": "```spoiler header\ncontent\n```\noutside spoiler\n",
|
"input": "```spoiler header\ncontent\n```\noutside spoiler\n",
|
||||||
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>",
|
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>",
|
||||||
"text_content": "header (...)\noutside spoiler"
|
"text_content": "header (…)\noutside spoiler"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spoilers_empty_header",
|
"name": "spoilers_empty_header",
|
||||||
"input": "```spoiler\ncontent\n```\noutside spoiler\n",
|
"input": "```spoiler\ncontent\n```\noutside spoiler\n",
|
||||||
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>",
|
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>",
|
||||||
"text_content": "(...)\noutside spoiler"
|
"text_content": "(…)\noutside spoiler"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spoilers_script_tags",
|
"name": "spoilers_script_tags",
|
||||||
"input": "```spoiler <script>alert(1)</script>\n<script>alert(1)</script>\n```",
|
"input": "```spoiler <script>alert(1)</script>\n<script>alert(1)</script>\n```",
|
||||||
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><script>alert(1)</script></p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p><script>alert(1)</script></p>\n</div></div>",
|
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><script>alert(1)</script></p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p><script>alert(1)</script></p>\n</div></div>",
|
||||||
"marked_expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><script>alert(1)</script>\n\n</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p><script>alert(1)</script>\n\n</p>\n</div></div>",
|
"marked_expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><script>alert(1)</script>\n\n</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p><script>alert(1)</script>\n\n</p>\n</div></div>",
|
||||||
"text_content": "<script>alert(1)</script> (...)\n"
|
"text_content": "<script>alert(1)</script> (…)\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spoilers_block_quote",
|
"name": "spoilers_block_quote",
|
||||||
"input": "~~~quote\n```spoiler header\ncontent\n```\noutside spoiler\n~~~\noutside quote",
|
"input": "~~~quote\n```spoiler header\ncontent\n```\noutside spoiler\n~~~\noutside quote",
|
||||||
"expected_output": "<blockquote>\n<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>\n</blockquote>\n<p>outside quote</p>",
|
"expected_output": "<blockquote>\n<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>\n\n<p>outside spoiler</p>\n</blockquote>\n<p>outside quote</p>",
|
||||||
"text_content": "> header (...)\n> outside spoiler\n\noutside quote"
|
"text_content": "> header (…)\n> outside spoiler\n\noutside quote"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spoilers_with_header_markdown",
|
"name": "spoilers_with_header_markdown",
|
||||||
"input": "```spoiler [Header](https://example.com) :smile:\ncontent\n```",
|
"input": "```spoiler [Header](https://example.com) :smile:\ncontent\n```",
|
||||||
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><a href=\"https://example.com\">Header</a> <span aria-label=\"smile\" class=\"emoji emoji-263a\" role=\"img\" title=\"smile\">:smile:</span></p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>",
|
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p><a href=\"https://example.com\">Header</a> <span aria-label=\"smile\" class=\"emoji emoji-263a\" role=\"img\" title=\"smile\">:smile:</span></p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>content</p>\n</div></div>",
|
||||||
"text_content": "Header ☺ (...)\n"
|
"text_content": "Header ☺ (…)\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spoiler_with_inline_image",
|
"name": "spoiler_with_inline_image",
|
||||||
"input": "```spoiler header\nContent http://example.com/image.png\n```",
|
"input": "```spoiler header\nContent http://example.com/image.png\n```",
|
||||||
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>Content <a href=\"http://example.com/image.png\">http://example.com/image.png</a></p>\n<div class=\"message_inline_image\"><a href=\"http://example.com/image.png\"><img data-src-fullsize=\"/thumbnail?url=http%3A%2F%2Fexample.com%2Fimage.png&size=full\" src=\"/thumbnail?url=http%3A%2F%2Fexample.com%2Fimage.png&size=thumbnail\"></a></div></div></div>",
|
"expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>Content <a href=\"http://example.com/image.png\">http://example.com/image.png</a></p>\n<div class=\"message_inline_image\"><a href=\"http://example.com/image.png\"><img data-src-fullsize=\"/thumbnail?url=http%3A%2F%2Fexample.com%2Fimage.png&size=full\" src=\"/thumbnail?url=http%3A%2F%2Fexample.com%2Fimage.png&size=thumbnail\"></a></div></div></div>",
|
||||||
"marked_expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>Content <a href=\"http://example.com/image.png\">http://example.com/image.png</a></p>\n</div></div>",
|
"marked_expected_output": "<div class=\"spoiler-block\"><div class=\"spoiler-header\">\n\n<p>header</p>\n</div><div class=\"spoiler-content\" aria-hidden=\"true\">\n\n<p>Content <a href=\"http://example.com/image.png\">http://example.com/image.png</a></p>\n</div></div>",
|
||||||
"text_content": "header (...)\n"
|
"text_content": "header (…)\n"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"linkify_tests": [
|
"linkify_tests": [
|
||||||
|
|||||||
Reference in New Issue
Block a user