From 75131e7bf7f3d96cf325e674e6b76b0096382e99 Mon Sep 17 00:00:00 2001
From: Nick Schonning <nschonni@gmail.com>
Date: Tue, 14 Mar 2023 23:15:36 -0400
Subject: [PATCH] Setup haml-lint CI with todo config (#23524)
---
.../workflows/haml-lint-problem-matcher.json | 17 +++
.github/workflows/lint-haml.yml | 44 ++++++
.haml-lint.yml | 103 +-------------
.haml-lint_todo.yml | 128 ++++++++++++++++++
Gemfile | 1 +
Gemfile.lock | 8 ++
app/views/admin/accounts/show.html.haml | 8 +-
app/views/admin/action_logs/index.html.haml | 2 +-
app/views/admin/announcements/index.html.haml | 2 +-
.../admin/disputes/appeals/index.html.haml | 2 +-
app/views/admin/instances/index.html.haml | 2 +-
app/views/admin/rules/index.html.haml | 2 +-
.../admin/warning_presets/index.html.haml | 2 +-
app/views/admin/webhooks/index.html.haml | 2 +-
app/views/auth/sessions/two_factor.html.haml | 2 +-
app/views/filters/_filter_fields.html.haml | 2 +-
app/views/filters/index.html.haml | 2 +-
app/views/kaminari/_next_page.html.haml | 16 ++-
app/views/kaminari/_paginator.html.haml | 15 +-
app/views/kaminari/_prev_page.html.haml | 15 +-
app/views/layouts/modal.html.haml | 2 +-
.../notification_mailer/_status.html.haml | 4 +-
app/views/oauth/authorizations/show.html.haml | 2 +-
.../settings/applications/index.html.haml | 2 +-
.../settings/applications/show.html.haml | 4 +-
.../settings/login_activities/index.html.haml | 2 +-
app/views/statuses/_poll.html.haml | 2 +-
27 files changed, 248 insertions(+), 145 deletions(-)
create mode 100644 .github/workflows/haml-lint-problem-matcher.json
create mode 100644 .github/workflows/lint-haml.yml
create mode 100644 .haml-lint_todo.yml
diff --git a/.github/workflows/haml-lint-problem-matcher.json b/.github/workflows/haml-lint-problem-matcher.json
new file mode 100644
index 0000000000..3523ea2951
--- /dev/null
+++ b/.github/workflows/haml-lint-problem-matcher.json
@@ -0,0 +1,17 @@
+{
+ "problemMatcher": [
+ {
+ "owner": "haml-lint",
+ "severity": "warning",
+ "pattern": [
+ {
+ "regexp": "^(.*):(\\d+)\\s\\[W]\\s(.*):\\s(.*)$",
+ "file": 1,
+ "line": 2,
+ "code": 3,
+ "message": 4
+ }
+ ]
+ }
+ ]
+}
diff --git a/.github/workflows/lint-haml.yml b/.github/workflows/lint-haml.yml
new file mode 100644
index 0000000000..a2b22a6590
--- /dev/null
+++ b/.github/workflows/lint-haml.yml
@@ -0,0 +1,44 @@
+name: Haml Linting
+on:
+ push:
+ branches-ignore:
+ - 'dependabot/**'
+ paths:
+ - '.github/workflows/haml-lint-problem-matcher.json'
+ - '.github/workflows/lint-haml.yml'
+ - '.haml-lint*.yml'
+ - '.rubocop*.yml'
+ - '.ruby-version'
+ - '**/*.haml'
+ - 'Gemfile*'
+
+ pull_request:
+ paths:
+ - '.github/workflows/haml-lint-problem-matcher.json'
+ - '.github/workflows/lint-haml.yml'
+ - '.haml-lint*.yml'
+ - '.rubocop*.yml'
+ - '.ruby-version'
+ - '**/*.haml'
+ - 'Gemfile*'
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Clone repository
+ uses: actions/checkout@v3
+
+ - name: Install native Ruby dependencies
+ run: sudo apt-get install -y libicu-dev libidn11-dev
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: .ruby-version
+ bundler-cache: true
+
+ - name: Run haml-lint
+ run: |
+ echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
+ bundle exec haml-lint
diff --git a/.haml-lint.yml b/.haml-lint.yml
index 7853d81d7c..12ca463422 100644
--- a/.haml-lint.yml
+++ b/.haml-lint.yml
@@ -1,108 +1,9 @@
-# Whether to ignore frontmatter at the beginning of HAML documents for
-# frameworks such as Jekyll/Middleman
-skip_frontmatter: false
+inherits_from: .haml-lint_todo.yml
exclude:
- 'vendor/**/*'
- - 'spec/**/*'
- - 'lib/templates/**/*'
- - 'app/views/kaminari/**/*'
+ - lib/templates/haml/scaffold/_form.html.haml
linters:
AltText:
- enabled: false
-
- ClassAttributeWithStaticValue:
- enabled: true
-
- ClassesBeforeIds:
- enabled: true
-
- ConsecutiveComments:
- enabled: true
-
- ConsecutiveSilentScripts:
- enabled: true
- max_consecutive: 2
-
- EmptyObjectReference:
- enabled: true
-
- EmptyScript:
- enabled: true
-
- FinalNewline:
- enabled: true
- present: true
-
- HtmlAttributes:
- enabled: true
-
- ImplicitDiv:
- enabled: true
-
- LeadingCommentSpace:
- enabled: true
-
- LineLength:
- enabled: false
- max: 80
-
- MultilinePipe:
- enabled: true
-
- MultilineScript:
- enabled: true
-
- ObjectReferenceAttributes:
- enabled: true
-
- RuboCop:
- enabled: true
- # These cops are incredibly noisy when it comes to HAML templates, so we
- # ignore them.
- ignored_cops:
- - Lint/BlockAlignment
- - Lint/EndAlignment
- - Lint/Void
- - Metrics/BlockLength
- - Metrics/LineLength
- - Style/AlignParameters
- - Style/BlockNesting
- - Style/ElseAlignment
- - Style/EndOfLine
- - Style/FileName
- - Style/FinalNewline
- - Style/FrozenStringLiteralComment
- - Style/IfUnlessModifier
- - Style/IndentationWidth
- - Style/Next
- - Style/TrailingBlankLines
- - Style/TrailingWhitespace
- - Style/WhileUntilModifier
-
- RubyComments:
- enabled: true
-
- SpaceBeforeScript:
- enabled: true
-
- SpaceInsideHashAttributes:
- enabled: true
- style: space
-
- Indentation:
- enabled: true
- character: space # or tab
-
- TagName:
- enabled: true
-
- TrailingWhitespace:
- enabled: true
-
- UnnecessaryInterpolation:
- enabled: true
-
- UnnecessaryStringOutput:
enabled: true
diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml
new file mode 100644
index 0000000000..203010b043
--- /dev/null
+++ b/.haml-lint_todo.yml
@@ -0,0 +1,128 @@
+# This configuration was generated by
+# `haml-lint --auto-gen-config`
+# on 2023-02-11 02:16:03 -0500 using Haml-Lint version 0.45.0.
+# The point is for the user to remove these configuration records
+# one by one as the lints are removed from the code base.
+# Note that changes in the inspected code, or installation of new
+# versions of Haml-Lint, may require this file to be generated again.
+
+linters:
+ # Offense count: 76
+ RuboCop:
+ exclude:
+ - 'app/views/accounts/_og.html.haml'
+ - 'app/views/admin/account_actions/new.html.haml'
+ - 'app/views/admin/account_warnings/_account_warning.html.haml'
+ - 'app/views/admin/accounts/index.html.haml'
+ - 'app/views/admin/accounts/show.html.haml'
+ - 'app/views/admin/action_logs/index.html.haml'
+ - 'app/views/admin/announcements/edit.html.haml'
+ - 'app/views/admin/announcements/new.html.haml'
+ - 'app/views/admin/change_emails/show.html.haml'
+ - 'app/views/admin/custom_emojis/index.html.haml'
+ - 'app/views/admin/dashboard/index.html.haml'
+ - 'app/views/admin/disputes/appeals/_appeal.html.haml'
+ - 'app/views/admin/domain_blocks/edit.html.haml'
+ - 'app/views/admin/domain_blocks/new.html.haml'
+ - 'app/views/admin/ip_blocks/new.html.haml'
+ - 'app/views/admin/reports/actions/preview.html.haml'
+ - 'app/views/admin/reports/index.html.haml'
+ - 'app/views/admin/reports/show.html.haml'
+ - 'app/views/admin/roles/_form.html.haml'
+ - 'app/views/admin/settings/about/show.html.haml'
+ - 'app/views/admin/settings/appearance/show.html.haml'
+ - 'app/views/admin/settings/registrations/show.html.haml'
+ - 'app/views/admin/statuses/show.html.haml'
+ - 'app/views/application/_card.html.haml'
+ - 'app/views/application/_sidebar.html.haml'
+ - 'app/views/auth/registrations/_sessions.html.haml'
+ - 'app/views/auth/registrations/new.html.haml'
+ - 'app/views/auth/sessions/new.html.haml'
+ - 'app/views/disputes/strikes/show.html.haml'
+ - 'app/views/filters/_filter_fields.html.haml'
+ - 'app/views/invites/_form.html.haml'
+ - 'app/views/layouts/application.html.haml'
+ - 'app/views/layouts/error.html.haml'
+ - 'app/views/layouts/mailer.html.haml'
+ - 'app/views/notification_mailer/_status.html.haml'
+ - 'app/views/notification_mailer/favourite.html.haml'
+ - 'app/views/notification_mailer/follow_request.html.haml'
+ - 'app/views/oauth/authorizations/new.html.haml'
+ - 'app/views/oauth/authorized_applications/index.html.haml'
+ - 'app/views/settings/applications/_fields.html.haml'
+ - 'app/views/settings/imports/show.html.haml'
+ - 'app/views/settings/login_activities/_login_activity.html.haml'
+ - 'app/views/settings/preferences/appearance/show.html.haml'
+ - 'app/views/settings/preferences/other/show.html.haml'
+ - 'app/views/settings/preferences/other/show.html.haml'
+ - 'app/views/statuses_cleanup/show.html.haml'
+ - 'app/views/statuses/_detailed_status.html.haml'
+ - 'app/views/statuses/_og_image.html.haml'
+ - 'app/views/statuses/_poll.html.haml'
+ - 'app/views/statuses/_status.html.haml'
+ - 'app/views/statuses/show.html.haml'
+ - 'app/views/user_mailer/suspicious_sign_in.html.haml'
+ - 'app/views/user_mailer/warning.html.haml'
+ - 'app/views/user_mailer/webauthn_credential_added.html.haml'
+ - 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
+
+ # Offense count: 918
+ LineLength:
+ enabled: false
+
+ # Offense count: 22
+ UnnecessaryStringOutput:
+ exclude:
+ - 'app/views/accounts/show.html.haml'
+ - 'app/views/admin/custom_emojis/_custom_emoji.html.haml'
+ - 'app/views/admin/relays/_relay.html.haml'
+ - 'app/views/admin/rules/_rule.html.haml'
+ - 'app/views/admin/statuses/index.html.haml'
+ - 'app/views/auth/registrations/_sessions.html.haml'
+ - 'app/views/disputes/strikes/show.html.haml'
+ - 'app/views/notification_mailer/_status.html.haml'
+ - 'app/views/settings/two_factor_authentication_methods/index.html.haml'
+ - 'app/views/statuses/_detailed_status.html.haml'
+ - 'app/views/statuses/_poll.html.haml'
+ - 'app/views/statuses/_simple_status.html.haml'
+ - 'app/views/user_mailer/suspicious_sign_in.html.haml'
+ - 'app/views/user_mailer/webauthn_credential_added.html.haml'
+ - 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
+ - 'app/views/user_mailer/welcome.html.haml'
+
+ # Offense count: 3
+ ViewLength:
+ exclude:
+ - 'app/views/admin/accounts/show.html.haml'
+ - 'app/views/admin/reports/show.html.haml'
+ - 'app/views/disputes/strikes/show.html.haml'
+
+ # Offense count: 43
+ InstanceVariables:
+ exclude:
+ - 'app/views/admin/reports/_actions.html.haml'
+ - 'app/views/admin/roles/_form.html.haml'
+ - 'app/views/admin/webhooks/_form.html.haml'
+ - 'app/views/application/_sidebar.html.haml'
+ - 'app/views/auth/registrations/_sessions.html.haml'
+ - 'app/views/auth/registrations/_status.html.haml'
+ - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
+ - 'app/views/authorize_interactions/_post_follow_actions.html.haml'
+ - 'app/views/invites/_form.html.haml'
+ - 'app/views/relationships/_account.html.haml'
+ - 'app/views/shared/_og.html.haml'
+ - 'app/views/statuses/_status.html.haml'
+
+ # Offense count: 6
+ ConsecutiveSilentScripts:
+ exclude:
+ - 'app/views/admin/settings/shared/_links.html.haml'
+ - 'app/views/settings/login_activities/_login_activity.html.haml'
+ - 'app/views/statuses/_poll.html.haml'
+
+ # Offense count: 3
+ IdNames:
+ exclude:
+ - 'app/views/authorize_interactions/error.html.haml'
+ - 'app/views/oauth/authorizations/error.html.haml'
+ - 'app/views/shared/_error_messages.html.haml'
diff --git a/Gemfile b/Gemfile
index 7a836b6ba4..c7889118d3 100644
--- a/Gemfile
+++ b/Gemfile
@@ -139,6 +139,7 @@ group :development do
gem 'memory_profiler'
gem 'brakeman', '~> 5.4', require: false
gem 'bundler-audit', '~> 0.9', require: false
+ gem 'haml_lint', require: false
gem 'capistrano', '~> 3.17'
gem 'capistrano-rails', '~> 1.6'
diff --git a/Gemfile.lock b/Gemfile.lock
index 5904ed804d..0041c24c74 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -308,6 +308,12 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
+ haml_lint (0.45.0)
+ haml (>= 4.0, < 6.2)
+ parallel (~> 1.10)
+ rainbow
+ rubocop (>= 0.50.0)
+ sysexits (~> 1.1)
hashdiff (1.0.1)
hashie (5.0.0)
highline (2.0.3)
@@ -687,6 +693,7 @@ GEM
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
+ sysexits (1.2.0)
temple (0.10.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
@@ -804,6 +811,7 @@ DEPENDENCIES
fog-openstack (~> 0.3)
fuubar (~> 2.5)
haml-rails (~> 2.0)
+ haml_lint
hiredis (~> 0.6)
htmlentities (~> 4.3)
http (~> 5.1)
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index c8a9d33a70..f5ae88379d 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -206,7 +206,7 @@
- if @deletion_request.present?
= link_to t('admin.accounts.delete'), admin_account_path(@account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, @account)
- else
- %div.action-buttons
+ .action-buttons
%div
- if @account.local? && @account.user_approved?
= link_to t('admin.accounts.warn'), new_admin_account_action_path(@account.id, type: 'none'), class: 'button' if can?(:warn, @account)
@@ -276,9 +276,9 @@
%hr.spacer/
- if @account.user&.invite_request&.text&.present?
- %div.speech-bubble
- %div.speech-bubble__bubble
+ .speech-bubble
+ .speech-bubble__bubble
= @account.user&.invite_request&.text
- %div.speech-bubble__owner
+ .speech-bubble__owner
= admin_account_link_to @account
= t('admin.accounts.invite_request_text')
diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml
index d8b7132f5c..e2992fb80c 100644
--- a/app/views/admin/action_logs/index.html.haml
+++ b/app/views/admin/action_logs/index.html.haml
@@ -19,7 +19,7 @@
= select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key]}, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all')
- if @action_logs.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.action_logs.empty'
- else
.report-notes
diff --git a/app/views/admin/announcements/index.html.haml b/app/views/admin/announcements/index.html.haml
index 40f02b914e..ce520f59d3 100644
--- a/app/views/admin/announcements/index.html.haml
+++ b/app/views/admin/announcements/index.html.haml
@@ -12,7 +12,7 @@
%li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil
- if @announcements.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.announcements.empty'
- else
.announcements-list
diff --git a/app/views/admin/disputes/appeals/index.html.haml b/app/views/admin/disputes/appeals/index.html.haml
index dd6a6f403f..602414550e 100644
--- a/app/views/admin/disputes/appeals/index.html.haml
+++ b/app/views/admin/disputes/appeals/index.html.haml
@@ -13,7 +13,7 @@
%li= filter_link_to t('admin.trends.rejected'), status: 'rejected'
- if @appeals.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.disputes.appeals.empty'
- else
.announcements-list
diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml
index 8f7e3e67d2..0bae70e31d 100644
--- a/app/views/admin/instances/index.html.haml
+++ b/app/views/admin/instances/index.html.haml
@@ -47,7 +47,7 @@
%hr.spacer/
- if @instances.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.instances.empty'
- else
= render partial: 'instance', collection: @instances
diff --git a/app/views/admin/rules/index.html.haml b/app/views/admin/rules/index.html.haml
index 4fb993ad07..aa6a4c1b6a 100644
--- a/app/views/admin/rules/index.html.haml
+++ b/app/views/admin/rules/index.html.haml
@@ -18,7 +18,7 @@
%hr.spacer/
- if @rules.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.rules.empty'
- else
.announcements-list
diff --git a/app/views/admin/warning_presets/index.html.haml b/app/views/admin/warning_presets/index.html.haml
index dbc23fa308..b26a13d966 100644
--- a/app/views/admin/warning_presets/index.html.haml
+++ b/app/views/admin/warning_presets/index.html.haml
@@ -17,7 +17,7 @@
%hr.spacer/
- if @warning_presets.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.warning_presets.empty'
- else
.announcements-list
diff --git a/app/views/admin/webhooks/index.html.haml b/app/views/admin/webhooks/index.html.haml
index e4499e078b..603d0edd25 100644
--- a/app/views/admin/webhooks/index.html.haml
+++ b/app/views/admin/webhooks/index.html.haml
@@ -9,7 +9,7 @@
%hr.spacer/
- if @webhooks.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'admin.webhooks.empty'
- else
.applications-list
diff --git a/app/views/auth/sessions/two_factor.html.haml b/app/views/auth/sessions/two_factor.html.haml
index b897a0422e..20232d8dc2 100644
--- a/app/views/auth/sessions/two_factor.html.haml
+++ b/app/views/auth/sessions/two_factor.html.haml
@@ -1,7 +1,7 @@
- content_for :page_title do
= t('auth.login')
-=javascript_pack_tag 'two_factor_authentication', crossorigin: 'anonymous'
+= javascript_pack_tag 'two_factor_authentication', crossorigin: 'anonymous'
- if @webauthn_enabled
= render partial: 'auth/sessions/two_factor/webauthn_form', locals: { hidden: @scheme_type != 'webauthn' }
diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml
index c58978f5a3..a554b55ff6 100644
--- a/app/views/filters/_filter_fields.html.haml
+++ b/app/views/filters/_filter_fields.html.haml
@@ -35,6 +35,6 @@
= render 'keyword_fields', f: keyword
%tfoot
%tr
- %td{ colspan: 3}
+ %td{ colspan: 3 }
= link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do
= safe_join([fa_icon('plus'), t('filters.edit.add_keyword')])
diff --git a/app/views/filters/index.html.haml b/app/views/filters/index.html.haml
index 0227526a47..9c84f796ff 100644
--- a/app/views/filters/index.html.haml
+++ b/app/views/filters/index.html.haml
@@ -5,7 +5,7 @@
= link_to t('filters.new.title'), new_filter_path, class: 'button'
- if @filters.empty?
- %div.muted-hint.center-text= t 'filters.index.empty'
+ .muted-hint.center-text= t 'filters.index.empty'
- else
.applications-list
= render partial: 'filter', collection: @filters
diff --git a/app/views/kaminari/_next_page.html.haml b/app/views/kaminari/_next_page.html.haml
index 30a3643d64..c44aea1f11 100644
--- a/app/views/kaminari/_next_page.html.haml
+++ b/app/views/kaminari/_next_page.html.haml
@@ -1,9 +1,11 @@
--# Link to the "Next" page
--# available local variables
--# url: url to the next page
--# current_page: a page object for the currently displayed page
--# total_pages: total number of pages
--# per_page: number of items to fetch per page
--# remote: data-remote
+-#
+ Link to the "Next" page
+ available local variables
+ url: url to the next page
+ current_page: a page object for the currently displayed page
+ total_pages: total number of pages
+ per_page: number of items to fetch per page
+ remote: data-remote
+
%span.next
= link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote
diff --git a/app/views/kaminari/_paginator.html.haml b/app/views/kaminari/_paginator.html.haml
index b1da236d5d..4778f6279a 100644
--- a/app/views/kaminari/_paginator.html.haml
+++ b/app/views/kaminari/_paginator.html.haml
@@ -1,10 +1,11 @@
--# The container tag
--# available local variables
--# current_page: a page object for the currently displayed page
--# total_pages: total number of pages
--# per_page: number of items to fetch per page
--# remote: data-remote
--# paginator: the paginator that renders the pagination tags inside
+-#
+ The container tag
+ available local variables
+ current_page: a page object for the currently displayed page
+ total_pages: total number of pages
+ per_page: number of items to fetch per page
+ remote: data-remote
+ paginator: the paginator that renders the pagination tags inside
= paginator.render do
%nav.pagination
= prev_page_tag unless current_page.first?
diff --git a/app/views/kaminari/_prev_page.html.haml b/app/views/kaminari/_prev_page.html.haml
index 1089e35668..284d6223b8 100644
--- a/app/views/kaminari/_prev_page.html.haml
+++ b/app/views/kaminari/_prev_page.html.haml
@@ -1,9 +1,10 @@
--# Link to the "Previous" page
--# available local variables
--# url: url to the previous page
--# current_page: a page object for the currently displayed page
--# total_pages: total number of pages
--# per_page: number of items to fetch per page
--# remote: data-remote
+-#
+ Link to the "Previous" page
+ available local variables
+ url: url to the previous page
+ current_page: a page object for the currently displayed page
+ total_pages: total number of pages
+ per_page: number of items to fetch per page
+ remote: data-remote
%span.prev
= link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote
diff --git a/app/views/layouts/modal.html.haml b/app/views/layouts/modal.html.haml
index bbdae602f3..bd2dcc1324 100644
--- a/app/views/layouts/modal.html.haml
+++ b/app/views/layouts/modal.html.haml
@@ -15,6 +15,6 @@
.modal-layout__mastodon
%div
- %img{alt: '', draggable: 'false', src: mascot_url }
+ %img{ alt: '', draggable: 'false', src: mascot_url }
= render template: 'layouts/application'
diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml
index e7cd5ba3eb..03f49c73da 100644
--- a/app/views/notification_mailer/_status.html.haml
+++ b/app/views/notification_mailer/_status.html.haml
@@ -26,11 +26,11 @@
= "@#{status.account.pretty_acct}"
- if status.spoiler_text?
- %div.auto-dir
+ .auto-dir
%p
= status.spoiler_text
- %div.auto-dir
+ .auto-dir
= status_content_format(status)
- if status.ordered_media_attachments.size > 0
diff --git a/app/views/oauth/authorizations/show.html.haml b/app/views/oauth/authorizations/show.html.haml
index c3c9960d8a..a5122a87fc 100644
--- a/app/views/oauth/authorizations/show.html.haml
+++ b/app/views/oauth/authorizations/show.html.haml
@@ -3,5 +3,5 @@
%p= t('doorkeeper.authorizations.show.title')
.input-copy
.input-copy__wrapper
- %input{ type: 'text', class: 'oauth-code', spellcheck: 'false', readonly: true, value: params[:code] }
+ %input.oauth-code{ type: 'text', spellcheck: 'false', readonly: true, value: params[:code] }
%button{ type: :button }= t('generic.copy')
diff --git a/app/views/settings/applications/index.html.haml b/app/views/settings/applications/index.html.haml
index a1f904a3a8..5c31d56bca 100644
--- a/app/views/settings/applications/index.html.haml
+++ b/app/views/settings/applications/index.html.haml
@@ -5,7 +5,7 @@
= link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button'
- if @applications.empty?
- %div.muted-hint.center-text=t 'doorkeeper.applications.index.empty'
+ .muted-hint.center-text= t 'doorkeeper.applications.index.empty'
- else
.table-wrapper
%table.table
diff --git a/app/views/settings/applications/show.html.haml b/app/views/settings/applications/show.html.haml
index 390682d6f9..466a8ba340 100644
--- a/app/views/settings/applications/show.html.haml
+++ b/app/views/settings/applications/show.html.haml
@@ -6,7 +6,7 @@
.table-wrapper
%table.table
%tbody
- %tr
+ %tr
%th= t('doorkeeper.applications.show.application_id')
%td
%code= @application.uid
@@ -15,7 +15,7 @@
%td
%code= @application.secret
%tr
- %th{ rowspan: 2}= t('applications.your_token')
+ %th{ rowspan: 2 }= t('applications.your_token')
%td
%code= current_user.token_for_app(@application).token
%tr
diff --git a/app/views/settings/login_activities/index.html.haml b/app/views/settings/login_activities/index.html.haml
index ce524fbef7..6fb1bc34c0 100644
--- a/app/views/settings/login_activities/index.html.haml
+++ b/app/views/settings/login_activities/index.html.haml
@@ -6,7 +6,7 @@
%hr.spacer/
- if @login_activities.empty?
- %div.muted-hint.center-text
+ .muted-hint.center-text
= t 'login_activities.empty'
- else
.announcements-list
diff --git a/app/views/statuses/_poll.html.haml b/app/views/statuses/_poll.html.haml
index d0f2640957..248c6058cb 100644
--- a/app/views/statuses/_poll.html.haml
+++ b/app/views/statuses/_poll.html.haml
@@ -21,7 +21,7 @@
%span.poll__chart
- else
%label.poll__option><
- %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}><
+ %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil }><
%span.poll__option__text
= prerender_custom_emojis(h(option.title), status.emojis)
.poll__footer
--
GitLab