Conflicts: - `.github/workflows/build-image.yml`: Upstream switched to pushing to both DockerHub and GitHub Container Repository, while glitch-soc was already pushing to the latter only. Updated our configuration to be slightly more consistent with upstream's naming and styling, but kept our behavior. - `Gemfile.lock`: Updated dependencies textually too close to glitch-soc only hcaptcha dependency. Updated dependencies as upstream did. - `README.md`: Upstream updated its README, but we have a completely different one. Kept our README, though it probably should be reworked at some point. - `app/views/auth/sessions/two_factor.html.haml`: Minor style fix upstream that's on a line glitch-soc removed because of its different theming system. Kept our file as is. - `spec/controllers/health_controller_spec.rb`: This file apparently did not exist upstream, upstream created it with different contents but it is functionally the same. Switched to upstream's version of the file. - `spec/presenters/instance_presenter_spec.rb`: Upstream changed the specs around `GITHUB_REPOSITORY`, while glitch-soc had its own code because it's a fork and does not have the same default source URL. Took upstream's change, but with glitch-soc's repo as the default case. - `yarn.lock`: Upstream dependencies textually too close to a glitch-soc only one. Updated dependencies as upstream did.local
commit
3ef5f62abf
171 changed files with 2094 additions and 1783 deletions
@ -1,128 +0,0 @@ |
|||||||
version: 2.1 |
|
||||||
|
|
||||||
orbs: |
|
||||||
ruby: circleci/ruby@2.0.0 |
|
||||||
node: circleci/node@5.0.3 |
|
||||||
|
|
||||||
executors: |
|
||||||
default: |
|
||||||
parameters: |
|
||||||
ruby-version: |
|
||||||
type: string |
|
||||||
docker: |
|
||||||
- image: cimg/ruby:<< parameters.ruby-version >> |
|
||||||
environment: |
|
||||||
BUNDLE_JOBS: 3 |
|
||||||
BUNDLE_RETRY: 3 |
|
||||||
CONTINUOUS_INTEGRATION: true |
|
||||||
DB_HOST: localhost |
|
||||||
DB_USER: root |
|
||||||
DISABLE_SIMPLECOV: true |
|
||||||
RAILS_ENV: test |
|
||||||
- image: cimg/postgres:14.5 |
|
||||||
environment: |
|
||||||
POSTGRES_USER: root |
|
||||||
POSTGRES_HOST_AUTH_METHOD: trust |
|
||||||
- image: cimg/redis:7.0 |
|
||||||
|
|
||||||
commands: |
|
||||||
install-system-dependencies: |
|
||||||
steps: |
|
||||||
- run: |
|
||||||
name: Install system dependencies |
|
||||||
command: | |
|
||||||
sudo apt-get update |
|
||||||
sudo apt-get install -y libicu-dev libidn11-dev |
|
||||||
install-ruby-dependencies: |
|
||||||
parameters: |
|
||||||
ruby-version: |
|
||||||
type: string |
|
||||||
steps: |
|
||||||
- run: |
|
||||||
command: | |
|
||||||
bundle config clean 'true' |
|
||||||
bundle config frozen 'true' |
|
||||||
bundle config without 'development production' |
|
||||||
name: Set bundler settings |
|
||||||
- ruby/install-deps: |
|
||||||
bundler-version: '2.3.26' |
|
||||||
key: ruby<< parameters.ruby-version >>-gems-v2 |
|
||||||
wait-db: |
|
||||||
steps: |
|
||||||
- run: |
|
||||||
command: dockerize -wait tcp://localhost:5432 -wait tcp://localhost:6379 -timeout 1m |
|
||||||
name: Wait for PostgreSQL and Redis |
|
||||||
|
|
||||||
jobs: |
|
||||||
build: |
|
||||||
docker: |
|
||||||
- image: cimg/ruby:3.2-node |
|
||||||
environment: |
|
||||||
RAILS_ENV: test |
|
||||||
steps: |
|
||||||
- checkout |
|
||||||
- install-system-dependencies |
|
||||||
- install-ruby-dependencies: |
|
||||||
ruby-version: '3.2' |
|
||||||
- node/install-packages: |
|
||||||
cache-version: v1 |
|
||||||
pkg-manager: yarn |
|
||||||
- run: |
|
||||||
command: | |
|
||||||
export NODE_OPTIONS=--openssl-legacy-provider |
|
||||||
./bin/rails assets:precompile |
|
||||||
name: Precompile assets |
|
||||||
- persist_to_workspace: |
|
||||||
paths: |
|
||||||
- public/assets |
|
||||||
- public/packs-test |
|
||||||
root: . |
|
||||||
|
|
||||||
test: |
|
||||||
parameters: |
|
||||||
ruby-version: |
|
||||||
type: string |
|
||||||
executor: |
|
||||||
name: default |
|
||||||
ruby-version: << parameters.ruby-version >> |
|
||||||
environment: |
|
||||||
ALLOW_NOPAM: true |
|
||||||
PAM_ENABLED: true |
|
||||||
PAM_DEFAULT_SERVICE: pam_test |
|
||||||
PAM_CONTROLLED_SERVICE: pam_test_controlled |
|
||||||
parallelism: 4 |
|
||||||
steps: |
|
||||||
- checkout |
|
||||||
- install-system-dependencies |
|
||||||
- run: |
|
||||||
command: sudo apt-get install -y ffmpeg imagemagick libmagickcore-dev libmagickwand-dev libjpeg-dev libpng-dev libtiff-dev libwebp-dev libpam-dev |
|
||||||
name: Install additional system dependencies |
|
||||||
- run: |
|
||||||
command: bundle config with 'pam_authentication' |
|
||||||
name: Enable PAM authentication |
|
||||||
- install-ruby-dependencies: |
|
||||||
ruby-version: << parameters.ruby-version >> |
|
||||||
- attach_workspace: |
|
||||||
at: . |
|
||||||
- wait-db |
|
||||||
- run: |
|
||||||
command: ./bin/rails db:create db:schema:load db:seed |
|
||||||
name: Load database schema |
|
||||||
- ruby/rspec-test |
|
||||||
|
|
||||||
workflows: |
|
||||||
version: 2 |
|
||||||
build-and-test: |
|
||||||
jobs: |
|
||||||
- build |
|
||||||
- test: |
|
||||||
matrix: |
|
||||||
parameters: |
|
||||||
ruby-version: |
|
||||||
- '2.7' |
|
||||||
- '3.0' |
|
||||||
- '3.1' |
|
||||||
- '3.2' |
|
||||||
name: test-ruby<< matrix.ruby-version >> |
|
||||||
requires: |
|
||||||
- build |
|
@ -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 |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -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 |
@ -0,0 +1,141 @@ |
|||||||
|
name: Ruby Testing |
||||||
|
|
||||||
|
on: |
||||||
|
push: |
||||||
|
branches-ignore: |
||||||
|
- 'dependabot/**' |
||||||
|
pull_request: |
||||||
|
|
||||||
|
env: |
||||||
|
BUNDLE_CLEAN: true |
||||||
|
BUNDLE_FROZEN: true |
||||||
|
BUNDLE_WITHOUT: 'development production' |
||||||
|
|
||||||
|
concurrency: |
||||||
|
group: ${{ github.workflow }}-${{ github.ref }} |
||||||
|
cancel-in-progress: true |
||||||
|
|
||||||
|
jobs: |
||||||
|
build: |
||||||
|
runs-on: ubuntu-latest |
||||||
|
|
||||||
|
env: |
||||||
|
RAILS_ENV: test |
||||||
|
|
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v3 |
||||||
|
|
||||||
|
- name: Set up Node.js |
||||||
|
uses: actions/setup-node@v3 |
||||||
|
with: |
||||||
|
cache: yarn |
||||||
|
node-version-file: '.nvmrc' |
||||||
|
|
||||||
|
- name: Install native Ruby dependencies |
||||||
|
run: sudo apt-get install -y libicu-dev libidn11-dev |
||||||
|
|
||||||
|
- name: Set up bundler cache |
||||||
|
uses: ruby/setup-ruby@v1 |
||||||
|
with: |
||||||
|
ruby-version: .ruby-version |
||||||
|
bundler-cache: true |
||||||
|
|
||||||
|
- run: yarn install --frozen-lockfile |
||||||
|
- name: Precompile assets |
||||||
|
# Previously had set this, but it's not supported |
||||||
|
# export NODE_OPTIONS=--openssl-legacy-provider |
||||||
|
run: |- |
||||||
|
./bin/rails assets:precompile |
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3 |
||||||
|
with: |
||||||
|
path: |- |
||||||
|
./public/assets |
||||||
|
./public/packs-test |
||||||
|
name: ${{ github.sha }} |
||||||
|
retention-days: 0 |
||||||
|
|
||||||
|
test: |
||||||
|
runs-on: ubuntu-latest |
||||||
|
|
||||||
|
needs: |
||||||
|
- build |
||||||
|
|
||||||
|
services: |
||||||
|
postgres: |
||||||
|
image: postgres:14-alpine |
||||||
|
env: |
||||||
|
POSTGRES_PASSWORD: postgres |
||||||
|
POSTGRES_USER: postgres |
||||||
|
options: >- |
||||||
|
--health-cmd pg_isready |
||||||
|
--health-interval 10s |
||||||
|
--health-timeout 5s |
||||||
|
--health-retries 5 |
||||||
|
ports: |
||||||
|
- 5432:5432 |
||||||
|
|
||||||
|
redis: |
||||||
|
image: redis:7-alpine |
||||||
|
options: >- |
||||||
|
--health-cmd "redis-cli ping" |
||||||
|
--health-interval 10s |
||||||
|
--health-timeout 5s |
||||||
|
--health-retries 5 |
||||||
|
ports: |
||||||
|
- 6379:6379 |
||||||
|
|
||||||
|
env: |
||||||
|
DB_HOST: localhost |
||||||
|
DB_USER: postgres |
||||||
|
DB_PASS: postgres |
||||||
|
DISABLE_SIMPLECOV: true |
||||||
|
RAILS_ENV: test |
||||||
|
ALLOW_NOPAM: true |
||||||
|
PAM_ENABLED: true |
||||||
|
PAM_DEFAULT_SERVICE: pam_test |
||||||
|
PAM_CONTROLLED_SERVICE: pam_test_controlled |
||||||
|
BUNDLE_WITH: 'pam_authentication' |
||||||
|
CI_JOBS: ${{ matrix.ci_job }}/4 |
||||||
|
|
||||||
|
strategy: |
||||||
|
fail-fast: false |
||||||
|
matrix: |
||||||
|
ruby-version: |
||||||
|
- '2.7' |
||||||
|
- '3.0' |
||||||
|
- '3.1' |
||||||
|
- '.ruby-version' |
||||||
|
ci_job: |
||||||
|
- 1 |
||||||
|
- 2 |
||||||
|
- 3 |
||||||
|
- 4 |
||||||
|
steps: |
||||||
|
- uses: actions/checkout@v3 |
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3 |
||||||
|
with: |
||||||
|
path: './public' |
||||||
|
name: ${{ github.sha }} |
||||||
|
|
||||||
|
- name: Install native Ruby dependencies |
||||||
|
run: sudo apt-get install -y libicu-dev libidn11-dev |
||||||
|
|
||||||
|
- name: Install additional system dependencies |
||||||
|
run: sudo apt-get install -y ffmpeg imagemagick libpam-dev |
||||||
|
|
||||||
|
- name: Set up bundler cache |
||||||
|
uses: ruby/setup-ruby@v1 |
||||||
|
with: |
||||||
|
ruby-version: ${{ matrix.ruby-version}} |
||||||
|
bundler-cache: true |
||||||
|
|
||||||
|
- name: Update system gems |
||||||
|
if: matrix.ruby-version == '2.7' |
||||||
|
run: gem update --system |
||||||
|
|
||||||
|
- name: Load database schema |
||||||
|
run: './bin/rails db:create db:schema:load db:seed' |
||||||
|
|
||||||
|
- run: bundle exec rake rspec_chunked |
@ -1,108 +1,9 @@ |
|||||||
# Whether to ignore frontmatter at the beginning of HAML documents for |
inherits_from: .haml-lint_todo.yml |
||||||
# frameworks such as Jekyll/Middleman |
|
||||||
skip_frontmatter: false |
|
||||||
|
|
||||||
exclude: |
exclude: |
||||||
- 'vendor/**/*' |
- 'vendor/**/*' |
||||||
- 'spec/**/*' |
- lib/templates/haml/scaffold/_form.html.haml |
||||||
- 'lib/templates/**/*' |
|
||||||
- 'app/views/kaminari/**/*' |
|
||||||
|
|
||||||
linters: |
linters: |
||||||
AltText: |
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 |
enabled: true |
||||||
|
@ -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' |
@ -1,69 +0,0 @@ |
|||||||
# frozen_string_literal: true |
|
||||||
|
|
||||||
class TOCGenerator |
|
||||||
TARGET_ELEMENTS = %w(h1 h2 h3 h4 h5 h6).freeze |
|
||||||
LISTED_ELEMENTS = %w(h2 h3).freeze |
|
||||||
|
|
||||||
class Section |
|
||||||
attr_accessor :depth, :title, :children, :anchor |
|
||||||
|
|
||||||
def initialize(depth, title, anchor) |
|
||||||
@depth = depth |
|
||||||
@title = title |
|
||||||
@children = [] |
|
||||||
@anchor = anchor |
|
||||||
end |
|
||||||
|
|
||||||
delegate :<<, to: :children |
|
||||||
end |
|
||||||
|
|
||||||
def initialize(source_html) |
|
||||||
@source_html = source_html |
|
||||||
@processed = false |
|
||||||
@target_html = '' |
|
||||||
@headers = [] |
|
||||||
@slugs = Hash.new { |h, k| h[k] = 0 } |
|
||||||
end |
|
||||||
|
|
||||||
def html |
|
||||||
parse_and_transform unless @processed |
|
||||||
@target_html |
|
||||||
end |
|
||||||
|
|
||||||
def toc |
|
||||||
parse_and_transform unless @processed |
|
||||||
@headers |
|
||||||
end |
|
||||||
|
|
||||||
private |
|
||||||
|
|
||||||
def parse_and_transform |
|
||||||
return if @source_html.blank? |
|
||||||
|
|
||||||
parsed_html = Nokogiri::HTML.fragment(@source_html) |
|
||||||
|
|
||||||
parsed_html.traverse do |node| |
|
||||||
next unless TARGET_ELEMENTS.include?(node.name) |
|
||||||
|
|
||||||
anchor = node['id'] || node.text.parameterize.presence || 'sec' |
|
||||||
@slugs[anchor] += 1 |
|
||||||
anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1 |
|
||||||
|
|
||||||
node['id'] = anchor |
|
||||||
|
|
||||||
next unless LISTED_ELEMENTS.include?(node.name) |
|
||||||
|
|
||||||
depth = node.name[1..-1] |
|
||||||
latest_section = @headers.last |
|
||||||
|
|
||||||
if latest_section.nil? || latest_section.depth >= depth |
|
||||||
@headers << Section.new(depth, node.text, anchor) |
|
||||||
else |
|
||||||
latest_section << Section.new(depth, node.text, anchor) |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
@target_html = parsed_html.to_s |
|
||||||
@processed = true |
|
||||||
end |
|
||||||
end |
|
@ -1,16 +0,0 @@ |
|||||||
.hero-widget |
|
||||||
.hero-widget__img |
|
||||||
= image_tag @instance_presenter.thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title |
|
||||||
|
|
||||||
.hero-widget__text |
|
||||||
%p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html') |
|
||||||
|
|
||||||
- if Setting.trends && !(user_signed_in? && !current_user.setting_trends) |
|
||||||
- trends = Trends.tags.query.allowed.limit(3) |
|
||||||
|
|
||||||
- unless trends.empty? |
|
||||||
.endorsements-widget.trends-widget |
|
||||||
%h4.emojify= t('footer.trending_now') |
|
||||||
|
|
||||||
- trends.each do |tag| |
|
||||||
= react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer, scope: current_user, scope_name: :current_user).as_json |
|
@ -1,9 +1,11 @@ |
|||||||
-# Link to the "Next" page |
-# |
||||||
-# available local variables |
Link to the "Next" page |
||||||
-# url: url to the next page |
available local variables |
||||||
-# current_page: a page object for the currently displayed page |
url: url to the next page |
||||||
-# total_pages: total number of pages |
current_page: a page object for the currently displayed page |
||||||
-# per_page: number of items to fetch per page |
total_pages: total number of pages |
||||||
-# remote: data-remote |
per_page: number of items to fetch per page |
||||||
|
remote: data-remote |
||||||
|
|
||||||
%span.next |
%span.next |
||||||
= link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote |
= link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote |
||||||
|
@ -1,9 +1,10 @@ |
|||||||
-# Link to the "Previous" page |
-# |
||||||
-# available local variables |
Link to the "Previous" page |
||||||
-# url: url to the previous page |
available local variables |
||||||
-# current_page: a page object for the currently displayed page |
url: url to the previous page |
||||||
-# total_pages: total number of pages |
current_page: a page object for the currently displayed page |
||||||
-# per_page: number of items to fetch per page |
total_pages: total number of pages |
||||||
-# remote: data-remote |
per_page: number of items to fetch per page |
||||||
|
remote: data-remote |
||||||
%span.prev |
%span.prev |
||||||
= link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote |
= link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote |
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue