Skip to content

Commit 364625a

Browse files
committed
Merge branch 'main' into temp3_for-taruntarun
2 parents ad7aa8f + 3af6739 commit 364625a

24 files changed

Lines changed: 266 additions & 147 deletions

.rubocop_todo.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,6 @@ Style/MapToHash:
6969
Exclude:
7070
- 'app/models/status.rb'
7171

72-
# This cop supports unsafe autocorrection (--autocorrect-all).
73-
# Configuration parameters: EnforcedStyle.
74-
# SupportedStyles: literals, strict
75-
Style/MutableConstant:
76-
Exclude:
77-
- 'app/models/tag.rb'
78-
- 'app/services/delete_account_service.rb'
79-
- 'lib/mastodon/migration_warning.rb'
80-
8172
# Configuration parameters: AllowedMethods.
8273
# AllowedMethods: respond_to_missing?
8374
Style/OptionalBooleanParameter:

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,24 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [4.3.3] - 2025-01-16
6+
7+
### Security
8+
9+
- Fix insufficient validation of account URIs ([GHSA-5wxh-3p65-r4g6](https://github.com/mastodon/mastodon/security/advisories/GHSA-5wxh-3p65-r4g6))
10+
- Update dependencies
11+
12+
### Fixed
13+
14+
- Fix `libyaml` missing from `Dockerfile` build stage (#33591 by @vmstan)
15+
- Fix incorrect notification settings migration for non-followers (#33348 by @ClearlyClaire)
16+
- Fix down clause for notification policy v2 migrations (#33340 by @jesseplusplus)
17+
- Fix error decrementing status count when `FeaturedTags#last_status_at` is `nil` (#33320 by @ClearlyClaire)
18+
- Fix last paginated notification group only including data on a single notification (#33271 by @ClearlyClaire)
19+
- Fix processing of mentions for post edits with an existing corresponding silent mention (#33227 by @ClearlyClaire)
20+
- Fix deletion of unconfirmed users with Webauthn set (#33186 by @ClearlyClaire)
21+
- Fix empty authors preview card serialization (#33151, #33466 by @mjankowski and @ClearlyClaire)
22+
523
## [4.3.2] - 2024-12-03
624

725
### Added

Gemfile

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,19 @@ gem 'opentelemetry-api', '~> 1.4.0'
104104

105105
group :opentelemetry do
106106
gem 'opentelemetry-exporter-otlp', '~> 0.29.0', require: false
107-
gem 'opentelemetry-instrumentation-active_job', '~> 0.7.1', require: false
108-
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.21.0', require: false
109-
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.21.2', require: false
110-
gem 'opentelemetry-instrumentation-excon', '~> 0.22.0', require: false
111-
gem 'opentelemetry-instrumentation-faraday', '~> 0.25.0', require: false
112-
gem 'opentelemetry-instrumentation-http', '~> 0.23.2', require: false
113-
gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false
114-
gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false
115-
gem 'opentelemetry-instrumentation-pg', '~> 0.29.0', require: false
116-
gem 'opentelemetry-instrumentation-rack', '~> 0.25.0', require: false
117-
gem 'opentelemetry-instrumentation-rails', '~> 0.34.0', require: false
118-
gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false
119-
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false
107+
gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false
108+
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false
109+
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false
110+
gem 'opentelemetry-instrumentation-excon', '~> 0.23.0', require: false
111+
gem 'opentelemetry-instrumentation-faraday', '~> 0.26.0', require: false
112+
gem 'opentelemetry-instrumentation-http', '~> 0.24.0', require: false
113+
gem 'opentelemetry-instrumentation-http_client', '~> 0.23.0', require: false
114+
gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false
115+
gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false
116+
gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false
117+
gem 'opentelemetry-instrumentation-rails', '~> 0.35.0', require: false
118+
gem 'opentelemetry-instrumentation-redis', '~> 0.26.0', require: false
119+
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.26.0', require: false
120120
gem 'opentelemetry-sdk', '~> 1.4', require: false
121121
end
122122

Gemfile.lock

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,20 @@ GEM
9494
ast (2.4.2)
9595
attr_required (1.0.2)
9696
aws-eventstream (1.3.0)
97-
aws-partitions (1.1032.0)
98-
aws-sdk-core (3.214.1)
97+
aws-partitions (1.1038.0)
98+
aws-sdk-core (3.216.0)
9999
aws-eventstream (~> 1, >= 1.3.0)
100100
aws-partitions (~> 1, >= 1.992.0)
101101
aws-sigv4 (~> 1.9)
102102
jmespath (~> 1, >= 1.6.1)
103-
aws-sdk-kms (1.96.0)
104-
aws-sdk-core (~> 3, >= 3.210.0)
103+
aws-sdk-kms (1.97.0)
104+
aws-sdk-core (~> 3, >= 3.216.0)
105105
aws-sigv4 (~> 1.5)
106-
aws-sdk-s3 (1.177.0)
107-
aws-sdk-core (~> 3, >= 3.210.0)
106+
aws-sdk-s3 (1.178.0)
107+
aws-sdk-core (~> 3, >= 3.216.0)
108108
aws-sdk-kms (~> 1)
109109
aws-sigv4 (~> 1.5)
110-
aws-sigv4 (1.10.1)
110+
aws-sigv4 (1.11.0)
111111
aws-eventstream (~> 1, >= 1.0.2)
112112
azure-blob (0.5.4)
113113
rexml
@@ -159,7 +159,7 @@ GEM
159159
climate_control (1.2.0)
160160
cocoon (1.2.15)
161161
color_diff (0.1)
162-
concurrent-ruby (1.3.4)
162+
concurrent-ruby (1.3.5)
163163
connection_pool (2.5.0)
164164
cose (1.3.1)
165165
cbor (~> 0.5.9)
@@ -473,78 +473,78 @@ GEM
473473
opentelemetry-common (~> 0.20)
474474
opentelemetry-sdk (~> 1.2)
475475
opentelemetry-semantic_conventions
476-
opentelemetry-helpers-sql-obfuscation (0.2.1)
476+
opentelemetry-helpers-sql-obfuscation (0.3.0)
477477
opentelemetry-common (~> 0.21)
478-
opentelemetry-instrumentation-action_mailer (0.3.0)
478+
opentelemetry-instrumentation-action_mailer (0.4.0)
479479
opentelemetry-api (~> 1.0)
480480
opentelemetry-instrumentation-active_support (~> 0.7)
481-
opentelemetry-instrumentation-base (~> 0.22.1)
482-
opentelemetry-instrumentation-action_pack (0.10.0)
481+
opentelemetry-instrumentation-base (~> 0.23.0)
482+
opentelemetry-instrumentation-action_pack (0.11.0)
483483
opentelemetry-api (~> 1.0)
484-
opentelemetry-instrumentation-base (~> 0.22.1)
484+
opentelemetry-instrumentation-base (~> 0.23.0)
485485
opentelemetry-instrumentation-rack (~> 0.21)
486-
opentelemetry-instrumentation-action_view (0.8.0)
486+
opentelemetry-instrumentation-action_view (0.9.0)
487487
opentelemetry-api (~> 1.0)
488488
opentelemetry-instrumentation-active_support (~> 0.7)
489-
opentelemetry-instrumentation-base (~> 0.22.1)
490-
opentelemetry-instrumentation-active_job (0.7.8)
489+
opentelemetry-instrumentation-base (~> 0.23.0)
490+
opentelemetry-instrumentation-active_job (0.8.0)
491491
opentelemetry-api (~> 1.0)
492-
opentelemetry-instrumentation-base (~> 0.22.1)
493-
opentelemetry-instrumentation-active_model_serializers (0.21.1)
492+
opentelemetry-instrumentation-base (~> 0.23.0)
493+
opentelemetry-instrumentation-active_model_serializers (0.22.0)
494494
opentelemetry-api (~> 1.0)
495495
opentelemetry-instrumentation-active_support (>= 0.7.0)
496-
opentelemetry-instrumentation-base (~> 0.22.1)
497-
opentelemetry-instrumentation-active_record (0.8.1)
496+
opentelemetry-instrumentation-base (~> 0.23.0)
497+
opentelemetry-instrumentation-active_record (0.9.0)
498498
opentelemetry-api (~> 1.0)
499-
opentelemetry-instrumentation-base (~> 0.22.1)
500-
opentelemetry-instrumentation-active_support (0.7.0)
499+
opentelemetry-instrumentation-base (~> 0.23.0)
500+
opentelemetry-instrumentation-active_support (0.8.0)
501501
opentelemetry-api (~> 1.0)
502-
opentelemetry-instrumentation-base (~> 0.22.1)
503-
opentelemetry-instrumentation-base (0.22.6)
502+
opentelemetry-instrumentation-base (~> 0.23.0)
503+
opentelemetry-instrumentation-base (0.23.0)
504504
opentelemetry-api (~> 1.0)
505505
opentelemetry-common (~> 0.21)
506506
opentelemetry-registry (~> 0.1)
507-
opentelemetry-instrumentation-concurrent_ruby (0.21.4)
507+
opentelemetry-instrumentation-concurrent_ruby (0.22.0)
508508
opentelemetry-api (~> 1.0)
509-
opentelemetry-instrumentation-base (~> 0.22.1)
510-
opentelemetry-instrumentation-excon (0.22.5)
509+
opentelemetry-instrumentation-base (~> 0.23.0)
510+
opentelemetry-instrumentation-excon (0.23.0)
511511
opentelemetry-api (~> 1.0)
512-
opentelemetry-instrumentation-base (~> 0.22.1)
513-
opentelemetry-instrumentation-faraday (0.25.0)
512+
opentelemetry-instrumentation-base (~> 0.23.0)
513+
opentelemetry-instrumentation-faraday (0.26.0)
514514
opentelemetry-api (~> 1.0)
515-
opentelemetry-instrumentation-base (~> 0.22.1)
516-
opentelemetry-instrumentation-http (0.23.5)
515+
opentelemetry-instrumentation-base (~> 0.23.0)
516+
opentelemetry-instrumentation-http (0.24.0)
517517
opentelemetry-api (~> 1.0)
518-
opentelemetry-instrumentation-base (~> 0.22.1)
519-
opentelemetry-instrumentation-http_client (0.22.8)
518+
opentelemetry-instrumentation-base (~> 0.23.0)
519+
opentelemetry-instrumentation-http_client (0.23.0)
520520
opentelemetry-api (~> 1.0)
521-
opentelemetry-instrumentation-base (~> 0.22.1)
522-
opentelemetry-instrumentation-net_http (0.22.8)
521+
opentelemetry-instrumentation-base (~> 0.23.0)
522+
opentelemetry-instrumentation-net_http (0.23.0)
523523
opentelemetry-api (~> 1.0)
524-
opentelemetry-instrumentation-base (~> 0.22.1)
525-
opentelemetry-instrumentation-pg (0.29.2)
524+
opentelemetry-instrumentation-base (~> 0.23.0)
525+
opentelemetry-instrumentation-pg (0.30.0)
526526
opentelemetry-api (~> 1.0)
527527
opentelemetry-helpers-sql-obfuscation
528-
opentelemetry-instrumentation-base (~> 0.22.1)
529-
opentelemetry-instrumentation-rack (0.25.0)
528+
opentelemetry-instrumentation-base (~> 0.23.0)
529+
opentelemetry-instrumentation-rack (0.26.0)
530530
opentelemetry-api (~> 1.0)
531-
opentelemetry-instrumentation-base (~> 0.22.1)
532-
opentelemetry-instrumentation-rails (0.34.1)
531+
opentelemetry-instrumentation-base (~> 0.23.0)
532+
opentelemetry-instrumentation-rails (0.35.0)
533533
opentelemetry-api (~> 1.0)
534-
opentelemetry-instrumentation-action_mailer (~> 0.3.0)
535-
opentelemetry-instrumentation-action_pack (~> 0.10.0)
536-
opentelemetry-instrumentation-action_view (~> 0.8.0)
537-
opentelemetry-instrumentation-active_job (~> 0.7.0)
538-
opentelemetry-instrumentation-active_record (~> 0.8.0)
539-
opentelemetry-instrumentation-active_support (~> 0.7.0)
540-
opentelemetry-instrumentation-base (~> 0.22.1)
541-
opentelemetry-instrumentation-concurrent_ruby (~> 0.21.4)
542-
opentelemetry-instrumentation-redis (0.25.7)
534+
opentelemetry-instrumentation-action_mailer (~> 0.4.0)
535+
opentelemetry-instrumentation-action_pack (~> 0.11.0)
536+
opentelemetry-instrumentation-action_view (~> 0.9.0)
537+
opentelemetry-instrumentation-active_job (~> 0.8.0)
538+
opentelemetry-instrumentation-active_record (~> 0.9.0)
539+
opentelemetry-instrumentation-active_support (~> 0.8.0)
540+
opentelemetry-instrumentation-base (~> 0.23.0)
541+
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
542+
opentelemetry-instrumentation-redis (0.26.0)
543543
opentelemetry-api (~> 1.0)
544-
opentelemetry-instrumentation-base (~> 0.22.1)
545-
opentelemetry-instrumentation-sidekiq (0.25.7)
544+
opentelemetry-instrumentation-base (~> 0.23.0)
545+
opentelemetry-instrumentation-sidekiq (0.26.0)
546546
opentelemetry-api (~> 1.0)
547-
opentelemetry-instrumentation-base (~> 0.22.1)
547+
opentelemetry-instrumentation-base (~> 0.23.0)
548548
opentelemetry-registry (0.3.1)
549549
opentelemetry-api (~> 1.1)
550550
opentelemetry-sdk (1.6.0)
@@ -962,19 +962,19 @@ DEPENDENCIES
962962
omniauth_openid_connect (~> 0.6.1)
963963
opentelemetry-api (~> 1.4.0)
964964
opentelemetry-exporter-otlp (~> 0.29.0)
965-
opentelemetry-instrumentation-active_job (~> 0.7.1)
966-
opentelemetry-instrumentation-active_model_serializers (~> 0.21.0)
967-
opentelemetry-instrumentation-concurrent_ruby (~> 0.21.2)
968-
opentelemetry-instrumentation-excon (~> 0.22.0)
969-
opentelemetry-instrumentation-faraday (~> 0.25.0)
970-
opentelemetry-instrumentation-http (~> 0.23.2)
971-
opentelemetry-instrumentation-http_client (~> 0.22.3)
972-
opentelemetry-instrumentation-net_http (~> 0.22.4)
973-
opentelemetry-instrumentation-pg (~> 0.29.0)
974-
opentelemetry-instrumentation-rack (~> 0.25.0)
975-
opentelemetry-instrumentation-rails (~> 0.34.0)
976-
opentelemetry-instrumentation-redis (~> 0.25.3)
977-
opentelemetry-instrumentation-sidekiq (~> 0.25.2)
965+
opentelemetry-instrumentation-active_job (~> 0.8.0)
966+
opentelemetry-instrumentation-active_model_serializers (~> 0.22.0)
967+
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
968+
opentelemetry-instrumentation-excon (~> 0.23.0)
969+
opentelemetry-instrumentation-faraday (~> 0.26.0)
970+
opentelemetry-instrumentation-http (~> 0.24.0)
971+
opentelemetry-instrumentation-http_client (~> 0.23.0)
972+
opentelemetry-instrumentation-net_http (~> 0.23.0)
973+
opentelemetry-instrumentation-pg (~> 0.30.0)
974+
opentelemetry-instrumentation-rack (~> 0.26.0)
975+
opentelemetry-instrumentation-rails (~> 0.35.0)
976+
opentelemetry-instrumentation-redis (~> 0.26.0)
977+
opentelemetry-instrumentation-sidekiq (~> 0.26.0)
978978
opentelemetry-sdk (~> 1.4)
979979
ox (~> 2.14)
980980
parslet

app/controllers/auth/setup_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def update
1818

1919
if @user.update(user_params)
2020
@user.resend_confirmation_instructions unless @user.confirmed?
21-
redirect_to auth_setup_path, notice: I18n.t('auth.setup.new_confirmation_instructions_sent')
21+
redirect_to auth_setup_path, notice: t('auth.setup.new_confirmation_instructions_sent')
2222
else
2323
render :show
2424
end

app/javascript/mastodon/locales/sk.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,8 @@
378378
"ignore_notifications_modal.not_followers_title": "Nevšímať si oznámenia od ľudí, ktorí ťa nenasledujú?",
379379
"ignore_notifications_modal.not_following_title": "Nevšímať si oznámenia od ľudí, ktorých nenasleduješ?",
380380
"ignore_notifications_modal.private_mentions_title": "Nevšímať si oznámenia o nevyžiadaných súkromných spomínaniach?",
381+
"interaction_modal.action.favourite": "Pre pokračovanie si musíš obľúbiť zo svojho účtu.",
382+
"interaction_modal.action.follow": "Pre pokračovanie musíš nasledovať zo svojho účtu.",
381383
"interaction_modal.action.reply": "Pre pokračovanie musíš odpovedať s tvojho účtu.",
382384
"interaction_modal.action.vote": "Pre pokračovanie musíš hlasovať s tvojho účtu.",
383385
"interaction_modal.go": "Prejdi",
@@ -389,6 +391,7 @@
389391
"interaction_modal.title.reblog": "Zdieľať príspevok od {name}",
390392
"interaction_modal.title.reply": "Odpovedať na príspevok od {name}",
391393
"interaction_modal.title.vote": "Hlasuj v ankete od {name}",
394+
"interaction_modal.username_prompt": "Napr. {example}",
392395
"intervals.full.days": "{number, plural, one {# deň} few {# dni} many {# dní} other {# dní}}",
393396
"intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodín} other {# hodín}}",
394397
"intervals.full.minutes": "{number, plural, one {# minúta} few {# minúty} many {# minút} other {# minút}}",
@@ -517,6 +520,7 @@
517520
"notification.moderation_warning": "Dostal/a si varovanie od moderátora",
518521
"notification.moderation_warning.action_delete_statuses": "Niektoré z tvojich príspevkov boli odstránené.",
519522
"notification.moderation_warning.action_disable": "Tvoj účet bol vypnutý.",
523+
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Niektoré tvoje príspevky boli označené za chúlostivé.",
520524
"notification.moderation_warning.action_none": "Tvoj účet dostal upozornenie od moderátora.",
521525
"notification.moderation_warning.action_sensitive": "Tvoje príspevky budú odteraz označované ako chúlostivé.",
522526
"notification.moderation_warning.action_silence": "Tvoj účet bol obmedzený.",
@@ -575,9 +579,11 @@
575579
"notifications.policy.accept_hint": "Ukáž v oznámeniach",
576580
"notifications.policy.drop": "Ignoruj",
577581
"notifications.policy.filter": "Triediť",
582+
"notifications.policy.filter_limited_accounts_hint": "Obmedzené moderátormi servera",
578583
"notifications.policy.filter_limited_accounts_title": "Moderované účty",
579584
"notifications.policy.filter_new_accounts_title": "Nové účty",
580585
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
586+
"notifications.policy.filter_not_following_hint": "Pokiaľ ich ručne neschváliš",
581587
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
582588
"notifications.policy.filter_private_mentions_title": "Nevyžiadané priame spomenutia",
583589
"notifications.policy.title": "Spravuj oznámenia od…",
@@ -625,6 +631,7 @@
625631
"privacy_policy.title": "Pravidlá ochrany súkromia",
626632
"recommended": "Odporúčané",
627633
"refresh": "Obnoviť",
634+
"regeneration_indicator.please_stand_by": "Prosím, čakajte.",
628635
"regeneration_indicator.preparing_your_home_feed": "Pripravuje sa tvoj domáci kanál…",
629636
"relative_time.days": "{number} dní",
630637
"relative_time.full.days": "Pred {number, plural, one {# dňom} other {# dňami}}",
@@ -716,6 +723,7 @@
716723
"server_banner.about_active_users": "Ľudia používajúci tento server za posledných 30 dní (aktívni používatelia za mesiac)",
717724
"server_banner.active_users": "Aktívne účty",
718725
"server_banner.administered_by": "Správa servera:",
726+
"server_banner.is_one_of_many": "{domain} je jeden z mnohých nezávislých Mastodon serverov, ktoré môžeš použiť na zúčastňovanie sa v rámci fediversa.",
719727
"server_banner.server_stats": "Štatistiky servera:",
720728
"sign_in_banner.create_account": "Vytvoriť účet",
721729
"sign_in_banner.sign_in": "Prihlásiť sa",
@@ -758,6 +766,7 @@
758766
"status.reblogs.empty": "Nikto ešte tento príspevok nezdieľal. Keď tak niekto urobí, zobrazí sa to tu.",
759767
"status.redraft": "Vymazať a prepísať",
760768
"status.remove_bookmark": "Odstrániť záložku",
769+
"status.remove_favourite": "Odstráň z obľúbených",
761770
"status.replied_in_thread": "Odpovedal/a vo vlákne",
762771
"status.replied_to": "Odpoveď na {name}",
763772
"status.reply": "Odpovedať",

app/lib/delivery_failure_tracker.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ def without_unavailable(urls)
4646
urls.reject do |url|
4747
host = Addressable::URI.parse(url).normalized_host
4848
unavailable_domains_map[host]
49+
rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
50+
true
4951
end
5052
end
5153

app/models/tag.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ class Tag < ApplicationRecord
3535
has_one :trend, class_name: 'TagTrend', inverse_of: :tag, dependent: :destroy
3636

3737
HASHTAG_SEPARATORS = "_\u00B7\u30FB\u200c"
38-
HASHTAG_FIRST_SEQUENCE_CHUNK_ONE = "[[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}]"
39-
HASHTAG_FIRST_SEQUENCE_CHUNK_TWO = "[[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_]"
40-
HASHTAG_FIRST_SEQUENCE = "(#{HASHTAG_FIRST_SEQUENCE_CHUNK_ONE}#{HASHTAG_FIRST_SEQUENCE_CHUNK_TWO})"
38+
HASHTAG_FIRST_SEQUENCE_CHUNK_ONE = "[[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}]".freeze
39+
HASHTAG_FIRST_SEQUENCE_CHUNK_TWO = "[[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_]".freeze
40+
HASHTAG_FIRST_SEQUENCE = "(#{HASHTAG_FIRST_SEQUENCE_CHUNK_ONE}#{HASHTAG_FIRST_SEQUENCE_CHUNK_TWO})".freeze
4141
HASHTAG_LAST_SEQUENCE = '([[:word:]_]*[[:alpha:]][[:word:]_]*)'
42-
HASHTAG_NAME_PAT = "#{HASHTAG_FIRST_SEQUENCE}|#{HASHTAG_LAST_SEQUENCE}"
42+
HASHTAG_NAME_PAT = "#{HASHTAG_FIRST_SEQUENCE}|#{HASHTAG_LAST_SEQUENCE}".freeze
4343

4444
HASHTAG_RE = %r{(?<![=/)\p{Alnum}])#(#{HASHTAG_NAME_PAT})}
4545
HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i

0 commit comments

Comments
 (0)