zulip/zerver/lib
Zixuan James Li a3a0103d86 markdown: Calculate linkifier precedence in topics.
This uses the linkifier index among the list of linkifiers in the
replacement as the priority to order the replacement order for
patterns in the topic. This avoids having multiple overlapping matches
that each produce a link.

The linkifier with the lowest id will be prioritized when its pattern
overlaps with another. Linkifiers are prioritized over raw URLs.

Note that the same algorithm is used for local echoing and the
backend markdown processor.

Fixes #23715.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
2022-12-13 15:16:20 -08:00
..
markdown markdown: Calculate linkifier precedence in topics. 2022-12-13 15:16:20 -08:00
url_preview python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
webhooks ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
__init__.py
addressee.py docs: Fix many spelling mistakes. 2022-02-07 18:51:06 -08:00
alert_words.py docs: Remove highlight parameters from links. 2022-02-16 13:15:39 -08:00
async_utils.py requirements: Upgrade Python requirements. 2022-05-03 10:10:06 -07:00
attachments.py python: Fix mypy no_implicit_reexport errors. 2021-07-16 14:02:31 -07:00
avatar_hash.py settings: Make AVATAR_SALT mandatory. 2022-08-25 12:13:03 -07:00
avatar.py avatar: Remove ?x=x kludge. 2021-10-14 12:47:43 -07:00
bot_config.py bot_config: Placate mypy 0.930. 2021-12-28 09:31:55 -08:00
bot_lib.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
bot_storage.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
bulk_create.py markdown: Pass realm down into render_stream_description. 2022-11-01 08:20:47 -07:00
cache_helpers.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
cache.py cache: Decline to store querysets, with an error. 2022-11-29 16:45:11 -08:00
camo.py typing: Apply trivial none-checks with assertions as necessary. 2022-06-23 19:25:48 -07:00
ccache.py python: Remove default "utf8" argument for encode(), decode(). 2021-08-02 15:53:52 -07:00
compatibility.py register: Not all clients send a User-Agent header. 2022-11-10 16:21:04 -08:00
context_managers.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
create_user.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
data_types.py ruff: Fix PLR1701 Consider merging these isinstance calls. 2022-12-04 22:11:24 -08:00
db.py db: Use cursor_factory psycopg2 option. 2022-07-05 17:54:17 -07:00
debug.py python: Accept Optional[FrameType] in signal handlers. 2021-12-28 09:31:55 -08:00
dev_ldap_directory.py tests: Update tests to use example profile picture. 2022-10-31 14:36:54 -07:00
digest.py ruff: Fix C414 Unnecessary list call within sorted(). 2022-11-03 12:10:15 -07:00
display_recipient.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
domains.py python: Convert deprecated Django ugettext alias to gettext. 2021-04-15 18:01:34 -07:00
drafts.py typing: Remove ViewFuncT. 2022-08-22 15:46:16 -07:00
email_mirror_helpers.py email_mirror: Move ZulipEmailForwardUserError into email_mirror_helpers. 2021-08-31 16:37:54 -07:00
email_mirror.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
email_notifications.py ruff: Fix N812 lowercase imported as non-lowercase. 2022-11-16 09:29:11 -08:00
email_validation.py email_validation: Restore case-insensitive domain validation. 2022-10-20 08:19:07 -07:00
emoji.py emoji: Add which emoji are supported to the /register call. 2022-08-26 17:58:31 -07:00
error_notify.py error_notify: Fix type narrowing of settings.ERROR_BOT. 2022-07-15 14:00:56 -07:00
event_schema.py message_edit: Send only changed settings in event data and api response. 2022-09-28 11:47:40 -07:00
events.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
exceptions.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
export.py ruff: Fix C414 Unnecessary list call within sorted(). 2022-11-03 12:10:15 -07:00
external_accounts.py typing: Import StrPromise alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
fix_unreads.py python: Use format string for logging str(obj). 2022-10-10 08:32:29 -07:00
generate_test_data.py populate_db: Generate resolved topics for testing. 2021-08-03 16:42:09 -07:00
github.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
home.py home: Prevent mypy from inferring the type of page_params. 2022-06-23 22:09:05 -07:00
hotspots.py typing: Import StrPromise alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
html_diff.py html_diff: Handle empty differences between empty strings. 2021-10-18 18:27:40 -07:00
html_to_text.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
i18n.py django: Use HttpRequest.headers. 2022-05-13 20:42:20 -07:00
import_realm.py import: Narrow the id-window to just the current realm. 2022-11-03 12:13:43 -07:00
initial_password.py initial_password: Add explicit development environment assertion. 2022-03-21 12:05:59 -07:00
integrations.py ruff: Fix C417 Unnecessary map usage. 2022-11-03 12:10:15 -07:00
logging_util.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
management.py python: Replace avoidable uses of __special__ attributes. 2022-10-10 08:32:29 -07:00
mdiff.py ci: Check that non-scripts aren’t marked executable. 2022-12-07 09:54:01 -08:00
mention.py markdown: Update characters allowed before @ and stream mentions. 2022-08-06 19:29:39 -07:00
message.py message: Fetch streams in bulk in bulk_access_messages. 2022-11-16 21:13:44 -08:00
migrate.py typing: Replace CursorObj by CursorWrapper. 2021-08-20 05:54:19 -07:00
mobile_auth_otp.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
name_restrictions.py name_restrictions: Add your-org.zulipchat.com as a reserved name. 2022-05-17 14:58:31 -07:00
narrow.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
notes.py notes: Separate __notes_map per-subclass. 2022-10-10 08:42:13 -07:00
notification_data.py notifications: Move user group mentions helpers together. 2022-04-27 16:43:54 -07:00
onboarding.py recent-topics: Update hash for view to be "#recent". 2022-10-25 11:03:44 -07:00
outgoing_http.py python: Replace requests.packages.urllib3 alias with urllib3. 2022-01-23 22:14:17 -08:00
outgoing_webhook.py outgoing_webhook: Ignore the exception on failure if the stream is gone. 2022-11-04 14:46:17 -07:00
presence.py user-presence: Refactor function names with "status" for clarity. 2022-09-23 12:27:54 -07:00
profile.py profile: Strengthen decorator types using ParamSpec. 2022-04-14 12:44:35 -07:00
push_notifications.py ruff: Fix C413 Unnecessary list call around sorted(). 2022-11-03 12:10:15 -07:00
pysa.py python: Sort imports with isort. 2020-06-11 16:45:32 -07:00
queue.py queue: Do test retries in tests. 2022-11-04 14:46:17 -07:00
rate_limiter.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
realm_description.py markdown: Refactor out additional properties added to Message. 2021-06-24 18:14:53 -07:00
realm_icon.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
realm_logo.py realm: Rename plan type constants to be more descriptive. 2021-10-19 12:20:39 -07:00
recipient_users.py actions: Split out zerver.lib.recipient_users. 2022-04-14 17:14:30 -07:00
redis_utils.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
remote_server.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
request.py ruff: Fix PLR0402 Consider using from … import. 2022-12-04 22:11:24 -08:00
response.py do_mark_all_as_read: Split up the work into batches. 2022-10-27 16:59:54 -07:00
rest.py rest: Restrict access to json views via basic auth. 2022-11-04 14:44:07 -07:00
retention.py retention: Remove two redundant comments. 2022-10-31 10:23:57 -07:00
safe_session_cached_db.py session: Enforce that changes cannot happen in a transaction. 2022-03-15 13:52:15 -07:00
scim_filter.py scim: Order Users by id when queried using filter syntax. 2021-11-26 16:06:16 -08:00
scim.py mypy: Enable redundant-expr errors. 2022-06-23 19:22:12 -07:00
send_email.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
server_initialization.py realms: Create default system user groups for internal realm. 2022-08-11 04:38:36 -07:00
sessions.py typing: Add none-checks for miscellaneous cases. 2022-05-31 09:43:55 -07:00
singleton_bmemcached.py cache: Instantiate only one BMemcached cache backend. 2022-05-02 17:41:49 -07:00
soft_deactivation.py soft_deactivation: Tighten function signatures with generic QuerySet. 2022-07-07 11:28:13 -07:00
sounds.py actions: Split out zerver.lib.sounds. 2022-04-14 14:26:40 -07:00
sqlalchemy_utils.py sqlalchemy_utils: Remove NonClosingPool.recreate override. 2022-02-10 11:59:41 -08:00
storage.py storage: Fix type annotation of content. 2022-07-27 13:46:13 -07:00
stream_color.py streams: Extract stream_color library. 2022-03-14 18:01:36 -07:00
stream_subscription.py typing: Import ValuesQuerySet alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
stream_topic.py stream_topic: Refactor user_ids_muting_topic. 2022-09-27 17:18:48 -07:00
stream_traffic.py streams: Extract stream_traffic library. 2022-03-14 18:01:36 -07:00
streams.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
string_validation.py email_mirror: Replace disallowed characters in incoming email subject. 2022-08-22 17:16:20 -07:00
subdomains.py subdomains: Fix realm=None case for is_static_or_current_realm_url. 2022-10-06 15:15:10 -07:00
subscription_info.py typing: Use django-stubs' type annotations for QuerySet. 2022-10-05 16:15:56 -07:00
templates.py api-docs: Move include markdown macro files for API documentation. 2022-12-08 12:58:11 -08:00
test_classes.py ruff: Fix B006 Do not use mutable data structures for argument defaults. 2022-12-04 22:11:24 -08:00
test_console_output.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
test_data.source.txt Rename default branch to ‘main’. 2021-09-06 12:56:35 -07:00
test_fixtures.py ruff: Fix ANN204 missing return type annotation for __init__. 2022-11-16 09:29:11 -08:00
test_helpers.py ruff: Enable naming errors. 2022-11-16 09:29:11 -08:00
test_runner.py requirements: Upgrade Django to 4.1. 2022-10-06 15:59:07 -07:00
tex.py python: Replace universal_newlines with text. 2022-01-23 22:16:01 -08:00
thumbnail.py docs: Remove some outdated references to thumbnailing.md doc. 2022-07-12 17:44:24 -07:00
timeout.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
timestamp.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
timezone.py timezone: Improve tzdata parser’s compatibility with zic(8). 2022-09-20 16:58:31 -07:00
topic.py topic: Add a None check with an assertion. 2022-08-12 17:08:04 -07:00
transfer.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
types.py typing: Import StrPromise alias from django_stubs_ext. 2022-10-05 16:15:56 -07:00
unminify.py unminify: Fix lookup if source map does not exist in disk. 2021-03-16 14:46:18 -07:00
upload.py ruff: Fix N813 camelcase imported as lowercase. 2022-11-16 09:29:11 -08:00
url_encoding.py url_encoding: Use user name instead of email in personal_narrow_url. 2022-10-28 09:47:43 -07:00
url_redirects.py recent-topics: Rename to "Recent conversations" in web-app and docs. 2022-10-21 10:28:19 -07:00
user_agent.py python: Reformat with Black, except quotes. 2021-02-12 13:11:19 -08:00
user_counts.py actions: Split out zerver.lib.user_counts. 2022-04-14 17:14:30 -07:00
user_groups.py user_groups: Track acting user for user group creation. 2022-12-13 14:58:58 -08:00
user_message.py actions: Split out zerver.lib.user_message. 2022-04-14 17:14:30 -07:00
user_mutes.py typing: Use assertions for function arguments. 2021-07-26 14:48:45 -07:00
user_status.py user-status: Stop updating the UserStatus model for away updates. 2022-09-23 12:27:54 -07:00
user_topics.py user_topics: Refactor the construction loop for UserTopicDict. 2022-08-11 13:45:54 -07:00
users.py ruff: Fix N818 exception name should be named with an Error suffix. 2022-11-17 16:52:00 -08:00
utils.py utils: Remove unused split_by function. 2021-08-19 01:51:37 -07:00
validator.py requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -07:00
widget.py poll widget: Add server validation. 2021-06-14 17:46:16 -07:00
zcommand.py actions: Split out zerver.actions.user_settings. 2022-04-14 17:14:34 -07:00
zephyr.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00