Greasy Fork is available in English.

Fsharp library docs - easy skim TOC

13/04/2022, 2:14:00 pm

// ==UserScript==
// @name        Fsharp library docs - easy skim TOC
// @namespace   Violentmonkey Scripts
// @match       https://fsharp.github.io/fsharp-core-docs/reference/*
// @match       https://fsprojects.github.io/FSharpPlus/*
// @match       http://fsprojects.github.io/FSharpPlus/reference/*
// @match       https://fsprojects.github.io/FSharpx.Collections/reference/*
// @match       https://fsprojects.github.io/FSharp.Control.AsyncSeq/reference/*
// @grant       GM_addStyle
// @version     1.2
// @author      -
// @description 13/04/2022, 2:14:00 pm
// @license MIT
// ==/UserScript==

GM_addStyle(`.hide {display:none;}`)

const button = document.createElement('button')
button.setAttribute('style', `display: block;margin-bottom: 0.8rem; margin-top: 0.8rem;`)
button.textContent = 'Show Summaries'

button.onclick = () => {
  Array.from(document.querySelectorAll('.toc-summary')).forEach(elem => {
    elem.classList.toggle('hide')
  })
}

const apiAnchorLinks = Array.from(document.querySelectorAll('.fsdocs-member-usage code a[href^="#"]'))

const topNavAnchorLinksContainer = document.createElement('div')
topNavAnchorLinksContainer.setAttribute('class', 'anchor-nav-container')
topNavAnchorLinksContainer.setAttribute('style', 'display:inline-flex;flex-direction:column;')

document.querySelector('.fsdocs-xmldoc').insertAdjacentElement('afterend', topNavAnchorLinksContainer)
document.querySelector('#content>div').insertBefore(button, document.querySelector('.anchor-nav-container'))

apiAnchorLinks.forEach(elem => {

  const clonedElem = elem.cloneNode(true)
  clonedElem.querySelector('code span>span')?.remove()

  const divContainer = document.createElement('div')
  divContainer.setAttribute('style', `display: flex;flex-direction: column;`)


  const summary = elem.closest('.fsdocs-member-usage').nextElementSibling.querySelector('p.fsdocs-summary').textContent

  const span = document.createElement('span')
  span.setAttribute('style', `font-size: 1rem;margin-bottom: 0.8rem;`)
  span.setAttribute('class', `hide toc-summary`)
  span.textContent = summary

  divContainer.appendChild(clonedElem)
  divContainer.appendChild(span)

  topNavAnchorLinksContainer.appendChild(divContainer)
})


document.querySelector("#navbarsExampleDefault>a").href = "https://fsharp.github.io/fsharp-core-docs/"