github-go-deepwiki

github仓库跳转到deepwiki

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         github-go-deepwiki
// @namespace
// @version      0.3
// @description  github仓库跳转到deepwiki
// @source       https://github.com/gxr404/go-deepwiki
// @author       gxr404
// @match        https://github.com/*
// @grant        none
// @namespace 
// ==/UserScript==
(function() {
  'use strict';

  const bodyEl = document.querySelector('body')
  if (bodyEl) {
      watchDom(bodyEl, main)
      main()
  }
})();

function watchDom(dom, callback) {
  const observer = new MutationObserver(() => {
    callback()
  })
  observer.observe(dom, {
    childList: true,
    subtree: true,
  })
}

function main() {
  // match https://github.com/<user>/<repo>
  if (location.pathname.split('/').filter(Boolean).length !== 2) return
  if (document.getElementById('go-deepwiki')) return
  const repoBtnContainer = document.getElementById('repository-details-container')
  if (!repoBtnContainer) return
  const btnList = repoBtnContainer.querySelector('ul')
  if (!btnList) return
  btnList.appendChild(createGoDeepWikiDOM())
}

function createGoDeepWikiDOM() {
  const li = document.createElement('li')
  const repName = location.pathname.split('/').filter(Boolean).slice(0,2).join('/')
  const deepWikiUrl = `https://deepwiki.com/${repName}`
  li.innerHTML = `
<li id="go-deepwiki">
  <div data-view-component="true" class="BtnGroup d-flex">
      <a href="${deepWikiUrl}"
        rel="nofollow"
        aria-label="Go DeepDeepwikiWiki"
        data-view-component="true"
        class="tooltipped tooltipped-sw btn-sm btn">
        Go Deepwiki
      </a>
  </div>
</li>
`
  return li
}