Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ Thanks for contributing! 🦋🙌
- [](# "selection-in-new-tab") [Adds a keyboard shortcut to open selection in new tab when navigating via <kbd>j</kbd> and <kbd>k</kbd>: <kbd>shift</kbd> <kbd>o</kbd>.](https://github.com/sindresorhus/refined-github/issues/1110)
- [](# "close-out-of-view-modals") [Automatically closes dropdown menus when they’re no longer visible.](https://user-images.githubusercontent.com/1402241/37022353-531c676e-2155-11e8-96cc-80d934bb22e0.gif)
- [](# "deprioritize-marketplace-link") Moves the "Marketplace" link from the black header bar to the profile dropdown.
- [](# "parse-backticks") [Renders text in <code>\`backticks\`</code> in issue titles and commit titles.](https://user-images.githubusercontent.com/170270/55060505-31179b00-50a4-11e9-99a9-c3691ba38d66.png)
- [](# "parse-backticks") [Renders text in <code>\`backticks\`</code> in issue titles, commit titles and more places.](https://user-images.githubusercontent.com/170270/55060505-31179b00-50a4-11e9-99a9-c3691ba38d66.png)
- [](# "trending-menu-item") Adds a `Trending` link to the global navbar and a keyboard shortcut: <kbd>g</kbd> <kbd>t</kbd>.
- [](# "navigate-pages-with-arrow-keys") Adds shortcuts to navigate through pages with pagination: <kbd>←</kbd> and <kbd>→</kbd>.
- [](# "open-all-notifications") [Adds button to open all your unread notifications at once.](https://user-images.githubusercontent.com/1402241/80861295-fbad8b80-8c6d-11ea-87a4-8025fbc3a3f4.png)
Expand Down
97 changes: 80 additions & 17 deletions source/features/parse-backticks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,111 @@ import select from 'select-dom';
import * as pageDetect from 'github-url-detection';

import features from '.';
import observeElement from '../helpers/simplified-element-observer';
import {parseBackticks} from '../github-helpers/dom-formatters';

function init(): void {
for (const title of select.all([
function parse(selectors: string[]): void {
for (const element of select.all(selectors.map(selector => selector + ':not(.rgh-backticks-already-parsed)'))) {
element.classList.add('rgh-backticks-already-parsed');
parseBackticks(element);
}
}

function initRepo(): void {
parse([
'.commit-title', // `isCommit`
'.commit-desc', // `isCommit`, `isCommitList`, `isRepoTree`
'.commit-message', // Pushed commits in `isPRConversation`, `isCompare`, `isReleasesOrTags`
'.message', // `isCommitList`, `isRepoTree`, `isBlame`
'.Box--condensed .link-gray[href*="/commit/"]', // `isSingleFile`
'.repository-content .js-details-container .link-gray[href*="/commit/"]', // `isSingleFile`
'.repository-content .js-details-container pre', // `isSingleFile`
'[aria-label="Issues"][role="group"] .js-navigation-open', // `isConversationList`
'[id^=ref-issue-]', // Issue references in `isIssue`, `isPRConversation`
'[id^=ref-pullrequest-]', // PR references in `isIssue`, `isPRConversation`
'.TimelineItem-body > del, .TimelineItem-body > ins', // Title edits in `isIssue`, `isPRConversation`
'.js-pinned-issue-list-item > span', // Pinned Issues
'.js-pinned-issue-list-item > .d-block', // Pinned Issues
'.pulse-section li', // `isPulse`
'.issues_labeled .text-gray-dark > a', // `isDashboard` "help wanted" event titles
'.js-recent-activity-container .text-bold', // `isDashboard`"Recent activity" titles
'.commits blockquote', // Newsfeed commits
'.release-header', // `isReleasesOrTags` Headers
'.Box-row.js-navigation-item a.link-gray-dark', // `isGlobalConversationList`
'[data-channel^="check_suites"] a', // `isActions`
'[id^="check_suite"] a.link-gray-dark', // `isActions`
'.repository-content .pr-toolbar h2', // `isActions` run
'#wiki-wrapper h1' // `isWiki`
].map(selector => selector + ':not(.rgh-backticks-already-parsed)'))) {
title.classList.add('rgh-backticks-already-parsed');
parseBackticks(title);
}
'.Details[data-issue-and-pr-hovercards-enabled] .Details-content--hidden a.link-gray-dark', // `isRepoRoot`
'.Details[data-issue-and-pr-hovercards-enabled] .Details-content--hidden pre', // `isRepoRoot`
'.Details[data-issue-and-pr-hovercards-enabled] .d-none a.link-gray-dark', // `isRepoRoot`
'.existing-pull-contents .list-group-item-link', // `isCompare` with existing PR
'[aria-label="Link issues"] a', // "Linked issues" in `isIssue`, `isPRConversation`
'.BorderGrid--spacious .f4.mt-3', // `isRepoHome` repository description
'.js-wiki-sidebar-toggle-display a', // `isWiki`
'.gh-header-title' // `isWiki`
]);
}

function initDashboard(): void {
parse([
'.js-recent-activity-container .text-bold', // `isDashboard`"Recent activity" titles
'.commits blockquote' // Newsfeed commits
]);
}

function initNotifications(): void {
parse([
'.notifications-list-item p.text-normal'
]);
}

function initGlobalConversationList(): void {
parse([
'.link-gray-dark.js-navigation-open'
]);
}

function initUserProfile(): void {
parse([
'.profile-timeline-card .text-gray-dark', // `isUserProfileMainTab` issue and PR title
'[itemprop="description"]' // `isUserProfileRepoTab` repository description
]);
}

function initHovercard(): void {
const hovercard = select('.js-hovercard-content > .Popover-message')!;

observeElement(hovercard, () => {
parse([
'.js-hovercard-content > .Popover-message .link-gray-dark'
]);
});
}

void features.add({
id: __filebasename,
description: 'Renders text in `backticks` in issue titles and commit titles/descriptions.',
description: 'Renders text in `backticks` in issue titles, commit titles and more places.',
screenshot: 'https://user-images.githubusercontent.com/170270/55060505-31179b00-50a4-11e9-99a9-c3691ba38d66.png'
}, {
include: [
pageDetect.isRepo
],
init
init: initRepo
}, {
include: [
pageDetect.isDashboard
],
onlyAdditionalListeners: true,
init
init: initDashboard
}, {
include: [
pageDetect.isNotifications
],
init: initNotifications
}, {
include: [
pageDetect.isGlobalConversationList
],
init: initGlobalConversationList
}, {
include: [
pageDetect.isUserProfile
],
init: initUserProfile
}, {
init: initHovercard,
repeatOnAjax: false
});