Fix merge conflicts

pull/870/head
Jasper van Merle 6 years ago
commit bf53a00ca9

@ -1,4 +1,7 @@
language: ruby
cache: bundler
before_script:
- gem update --system
- gem install bundler

@ -11,6 +11,7 @@ group :app do
gem 'rack'
gem 'sinatra'
gem 'sinatra-contrib'
gem 'rack-ssl-enforcer'
gem 'thin'
gem 'sprockets'
gem 'sprockets-helpers'

@ -1,13 +1,13 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (5.2.0)
activesupport (5.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
backports (3.11.3)
better_errors (2.4.0)
backports (3.11.4)
better_errors (2.5.0)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
@ -28,42 +28,43 @@ GEM
exifr (1.3.4)
ffi (1.9.25)
fspath (3.1.0)
highline (1.7.10)
highline (2.0.0)
html-pipeline (2.8.4)
activesupport (>= 2)
nokogiri (>= 1.4)
i18n (1.0.1)
i18n (1.1.1)
concurrent-ruby (~> 1.0)
image_optim (0.26.1)
image_optim (0.26.3)
exifr (~> 1.2, >= 1.2.2)
fspath (~> 3.0)
image_size (~> 1.5)
image_size (>= 1.5, < 3)
in_threads (~> 1.3)
progress (~> 3.0, >= 3.0.1)
image_optim_pack (0.5.1)
fspath (>= 2.1, < 4)
image_optim (~> 0.19)
image_size (1.5.0)
image_size (2.0.0)
in_threads (1.5.0)
method_source (0.9.0)
mini_portile2 (2.3.0)
minitest (5.11.3)
multi_json (1.13.1)
mustermann (1.0.2)
newrelic_rpm (5.2.0.345)
nokogiri (1.8.4)
mustermann (1.0.3)
newrelic_rpm (5.4.0.347)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
options (2.3.2)
progress (3.4.0)
progress_bar (1.2.0)
highline (~> 1.6)
progress (3.5.0)
progress_bar (1.3.0)
highline (>= 1.6, < 3)
options (~> 2.3.0)
pry (0.11.3)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
rack (2.0.5)
rack-protection (2.0.3)
rack-protection (2.0.4)
rack
rack-ssl-enforcer (0.2.9)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rake (12.3.1)
@ -71,23 +72,23 @@ GEM
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rr (1.2.1)
sass (3.5.7)
sass (3.6.0)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sinatra (2.0.3)
sinatra (2.0.4)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.3)
rack-protection (= 2.0.4)
tilt (~> 2.0)
sinatra-contrib (2.0.3)
sinatra-contrib (2.0.4)
activesupport (>= 4.0.0)
backports (>= 2.8.2)
multi_json
mustermann (~> 1.0)
rack-protection (= 2.0.3)
sinatra (= 2.0.3)
rack-protection (= 2.0.4)
sinatra (= 2.0.4)
tilt (>= 1.3, < 3)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
@ -96,9 +97,11 @@ GEM
sprockets (>= 2.2)
sprockets-sass (2.0.0.beta2)
sprockets (>= 2.0, < 4.0)
strings (0.1.1)
unicode-display_width (~> 1.3.0)
strings (0.1.4)
strings-ansi (~> 0.1.0)
unicode-display_width (~> 1.4.0)
unicode_utils (~> 1.4.0)
strings-ansi (0.1.0)
thin (1.7.2)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
@ -116,9 +119,9 @@ GEM
ethon (>= 0.9.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.17)
uglifier (4.1.19)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.3.3)
unicode-display_width (1.4.0)
unicode_utils (1.4.0)
unix_utils (0.0.15)
yajl-ruby (1.4.1)
@ -142,6 +145,7 @@ DEPENDENCIES
progress_bar
pry (~> 0.11.0)
rack
rack-ssl-enforcer
rack-test
rake
rr
@ -163,4 +167,4 @@ RUBY VERSION
ruby 2.5.1p57
BUNDLED WITH
1.16.4
1.16.6

@ -64,14 +64,10 @@ Another driving factor is performance and the fact that everything happens in th
DevDocs being a developer tool, the browser requirements are high:
1. On the desktop:
* Recent version of Chrome, Firefox, or Opera
* Safari 8+
* IE / Edge 10+
2. On mobile:
* iOS 8+
* Android 4.1+
* Windows Phone 8+
* Recent versions of Firefox, Chrome, or Opera
* Safari 9.1+
* Edge 16+
* iOS 10+
This allows the code to take advantage of the latest DOM and HTML5 APIs and make developing DevDocs a lot more fun!

@ -245,7 +245,7 @@
matchMedia: !!window.matchMedia
insertAdjacentHTML: !!document.body.insertAdjacentHTML
defaultPrevented: document.createEvent('CustomEvent').defaultPrevented is false
cssGradients: supportsCssGradients()
cssVariables: CSS.supports and CSS.supports('(--t: 0)')
for key, value of features when not value
Raven.captureMessage "unsupported/#{key}", level: 'info'
@ -268,9 +268,4 @@
isInvalidLocation: ->
@config.env is 'production' and location.host.indexOf(app.config.production_host) isnt 0
supportsCssGradients = ->
el = document.createElement('div')
el.style.cssText = "background-image: -webkit-linear-gradient(top, #000, #fff); background-image: linear-gradient(to top, #000, #fff);"
el.style.backgroundImage.indexOf('gradient') >= 0
$.extend app, Events

@ -190,7 +190,7 @@ isSameOrigin = (url) ->
updateCanonicalLink = ->
@canonicalLink ||= document.head.querySelector('link[rel="canonical"]')
@canonicalLink.setAttribute('href', "http://#{location.host}#{location.pathname}")
@canonicalLink.setAttribute('href', "https://#{location.host}#{location.pathname}")
trackers = []

@ -1,5 +1,8 @@
[
[
"2018-09-23",
"New documentations: <a href=\"/puppeteer/\">Puppeteer</a> and <a href=\"/handlebars/\">Handlebars.js</a>"
], [
"2018-08-12",
"New documentations: <a href=\"/dart/\">Dart</a> and <a href=\"/qt/\">Qt</a>"
], [

@ -56,13 +56,10 @@ app.templates.unsupportedBrowser = """
<h1 class="_fail-title">Your browser is unsupported, sorry.</h1>
<p class="_fail-text">DevDocs is an API documentation browser which supports the following browsers:
<ul class="_fail-list">
<li>Recent versions of Chrome and Firefox
<li>Safari 5.1+
<li>Opera 12.1+
<li>Internet Explorer 10+
<li>iOS 6+
<li>Android 4.1+
<li>Windows Phone 8+
<li>Recent versions of Firefox, Chrome, or Opera
<li>Safari 9.1+
<li>Edge 16+
<li>iOS 10+
</ul>
<p class="_fail-text">
If you're unable to upgrade, I apologize.

@ -310,6 +310,11 @@ credits = [
'GruntJS Team',
'MIT',
'https://github.com/gruntjs/grunt-docs/blob/master/package.json#L10'
], [
'Handlebars',
'2011-2017 Yehuda Katz',
'MIT',
'https://raw.githubusercontent.com/wycats/handlebars.js/master/LICENSE'
], [
'Haskell',
'The University of Glasgow',
@ -560,6 +565,11 @@ credits = [
'1996-2018 The PostgreSQL Global Development Group<br>&copy; 1994 The Regents of the University of California',
'PostgreSQL',
'https://www.postgresql.org/about/licence/'
], [
'Puppeteer',
'2017 Google Inc',
'Apache',
'https://raw.githubusercontent.com/GoogleChrome/puppeteer/master/LICENSE'
], [
'Pygame',
'Pygame Developpers',

@ -72,14 +72,3 @@ app.templates.androidWarning = """
<p>To install DevDocs on your phone, visit <a href="https://devdocs.io" target="_blank" rel="noopener">devdocs.io</a> in Chrome and select "Add to home screen" in the menu.
</div>
"""
app.templates.httpWarning = """
<div class="_intro"><div class="_intro-message">
<h2 class="_intro-title">Hi there!</h2>
<p>DevDocs is migrating to HTTPS.
<p>Please update your bookmarks to point to <a href="https://devdocs.io">https://devdocs.io</a>.
<p>When using the HTTPS version, your preferences will carry over automatically, but your offline data will be reset. Simply re-download documentation in the <a href="https://devdocs.io/offline">Offline area</a>, and you'll be all set to use DevDocs securely offline.
<p>Sorry for the inconvenience. This migration is needed because browsers are removing support for certain DOM APIs that power DevDocs's offline mode over non-secure origins.
<p>Thanks for using DevDocs, and happy coding!
</div></div>
"""

@ -19,10 +19,6 @@ class app.views.RootPage extends app.View
else
'intro'
# temporary
if location.host is 'devdocs.io' and location.protocol is 'http:'
tmpl = 'httpWarning'
@append @tmpl(tmpl)
return

@ -24,10 +24,9 @@ class app.views.SettingsPage extends app.View
'Preferences'
toggleDark: (enable) ->
css = $('link[rel="stylesheet"][data-alt]')
alt = css.getAttribute('data-alt')
css.setAttribute('data-alt', css.getAttribute('href'))
css.setAttribute('href', alt)
html = document.documentElement
html.classList.toggle('_theme-default')
html.classList.toggle('_theme-dark')
app.settings.set('dark', !!enable)
app.appCache?.updateInBackground()
return

@ -1,107 +0,0 @@
//= depend_on sprites/docs.png
//= depend_on sprites/docs@2x.png
//= depend_on sprites/docs.json
/*!
* Copyright 2013-2018 Thibaut Courouble and other contributors
*
* This source code is licensed under the terms of the Mozilla
* Public License, v. 2.0, a copy of which may be obtained at:
* http://mozilla.org/MPL/2.0/
*/
@import 'global/variables-dark',
'global/mixins',
'global/icons',
'global/classes',
'global/base';
@import 'components/app',
'components/header',
'components/notif',
'components/sidebar',
'components/settings',
'components/content',
'components/page',
'components/fail',
'components/path',
'components/notice',
'components/prism',
'components/mobile';
@import 'pages/simple',
'pages/angular',
'pages/angularjs',
'pages/apache',
'pages/async',
'pages/bash',
'pages/bootstrap',
'pages/c',
'pages/cakephp',
'pages/clojure',
'pages/codeception',
'pages/coffeescript',
'pages/cordova',
'pages/crystal',
'pages/d',
'pages/d3',
'pages/dart',
'pages/dojo',
'pages/drupal',
'pages/elixir',
'pages/ember',
'pages/erlang',
'pages/express',
'pages/git',
'pages/github',
'pages/go',
'pages/graphite',
'pages/haskell',
'pages/jekyll',
'pages/jquery',
'pages/julia',
'pages/knockout',
'pages/kotlin',
'pages/laravel',
'pages/liquid',
'pages/love',
'pages/lua',
'pages/mdn',
'pages/meteor',
'pages/modernizr',
'pages/moment',
'pages/nginx',
'pages/node',
'pages/npm',
'pages/openjdk',
'pages/perl',
'pages/phalcon',
'pages/phaser',
'pages/php',
'pages/phpunit',
'pages/postgres',
'pages/pug',
'pages/python',
'pages/qt',
'pages/ramda',
'pages/rdoc',
'pages/react_native',
'pages/redis',
'pages/rethinkdb',
'pages/rfc',
'pages/rubydoc',
'pages/rust',
'pages/sinon',
'pages/socketio',
'pages/sphinx',
'pages/sphinx_simple',
'pages/sqlite',
'pages/support_tables',
'pages/tcl_tk',
'pages/tensorflow',
'pages/terraform',
'pages/underscore',
'pages/vue',
'pages/webpack',
'pages/yard',
'pages/yii';

@ -10,7 +10,9 @@
* http://mozilla.org/MPL/2.0/
*/
@import 'global/variables',
@import 'global/variables-light',
'global/variables-dark',
'global/variables',
'global/mixins',
'global/icons',
'global/classes',

@ -1,6 +1,6 @@
html._booting { background: $contentBackground; }
html._booting { background: var(--contentBackground); }
body._max-width { background: none; }
html._booting body._max-width { background: $documentBackground; }
html._booting body._max-width { background: var(--documentBackground); }
._app {
position: relative;
@ -15,8 +15,8 @@ html._booting body._max-width { background: $documentBackground; }
._max-width & {
margin: 0 auto;
max-width: $maxWidth;
background: $contentBackground;
box-shadow: 1px 0 $headerBorder, -1px 0 $headerBorder;
max-width: var(--maxWidth);
background: var(--contentBackground);
box-shadow: 1px 0 var(--headerBorder), -1px 0 var(--headerBorder);
}
}

@ -4,13 +4,13 @@
._container {
position: relative;
z-index: $contentZ;
z-index: var(--contentZ);
height: 100%;
margin-left: $sidebarWidth;
margin-left: var(--sidebarWidth);
pointer-events: none;
@extend %border-box;
@media #{$mediumScreen} { margin-left: $sidebarMediumWidth; }
@include mobile { margin-left: var(--sidebarMediumWidth); }
._sidebar-hidden & { margin-left: 0; }
body:not(._native-scrollbars) & { -webkit-margin-end: -1px; }
@ -30,7 +30,7 @@
._sidebar-hidden &:before {
content: '';
display: block;
margin-top: $headerHeight;
margin-top: var(--headerHeight);
}
._overlay-scrollbars & { padding-left: .625rem; }
@ -54,7 +54,7 @@
font-size: 4rem;
font-weight: 300;
letter-spacing: -.125rem;
color: $loadingText;
color: var(--loadingText);
text-align: center;
cursor: default;
}
@ -68,7 +68,7 @@
//
._splash-title {
color: $splashText;
color: var(--splashText);
@extend %loading, %user-select-none;
}
@ -88,7 +88,7 @@
min-height: calc(100vh - 2.375rem);
._sidebar-hidden & {
min-height: calc(100vh - 2.375rem - #{$headerHeight});
min-height: calc(100vh - 2.375rem - var(--headerHeight));
}
}
@ -140,12 +140,12 @@
._error-text {
margin: 0 0 1rem;
color: $textColorLight;
color: var(--textColorLight);
}
._error-links {
font-size: 1rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
._error-link { padding: 0 .5rem; }
@ -167,7 +167,7 @@
height: 1px;
margin-top: .25rem;
margin-left: 1rem;
background: $boxBorderLight;
background: var(--boxBorderLight);
}
}
@ -197,7 +197,7 @@
._toc-title {
margin: 0 0 .5rem;
font-size: inherit;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
._toc-list {
@ -252,7 +252,7 @@
._docs-size {
text-align: right;
> small { color: $textColorLight; }
> small { color: var(--textColorLight); }
}
._docs-tools {
@ -285,7 +285,7 @@
padding: 0 .75rem;
}
._btn-link:not(._show) { display: none; }
._btn-link._show ~ ._btn-link._show { border-left: 1px solid $boxBorder; }
._btn-link._show ~ ._btn-link._show { border-left: 1px solid var(--boxBorder); }
}
//
@ -297,7 +297,7 @@
position: relative;
padding-left: 10em;
font-size: .8125rem;
color: $textColorLight;
color: var(--textColorLight);
+ ._news-row { margin-top: 1em; }
}
@ -305,7 +305,7 @@
._news-title {
display: block;
font-size: .875rem;
color: $textColor;
color: var(--textColor);
}
._news-date {
@ -372,12 +372,12 @@
// Utilities
//
._bold { font-weight: $boldFontWeight; }
._bold { font-weight: var(--boldFontWeight); }
._note { @extend %note; }
._note-green { @extend %note-green; }
._label { @extend %label; }
._code { @extend %code; }
._highlight { background: $highlightBackground !important; }
._highlight { background: var(--highlightBackground) !important; }
._table { width: 100%; }
._mobile ._table { overflow-x: auto; }
@ -396,12 +396,9 @@
pre:hover > & { display: block; }
&:hover { opacity: 1; }
> svg { @extend %svg-icon; }
@if $style == 'dark' {
> svg { fill: white; }
} @else {
> svg { fill: black; }
> svg {
@extend %svg-icon;
fill: var(--absolute);
}
&._pre-clip-success > svg,
@ -419,15 +416,13 @@
line-height: normal;
white-space: nowrap;
padding: .375rem .675rem;
background-image: linear-gradient(lighten($boxBackground, 4%), darken($boxBackground, 2%));
border: 1px solid $boxBorder;
background-color: var(--boxBackground);
border: 1px solid var(--boxBorder);
border-radius: 3px;
box-shadow: 0 1px rgba($boxBorder, .08);
cursor: pointer;
&:active {
background-color: $boxBackground;
box-shadow: inset 0 1px 1px rgba(black, .05), inset 0 1px 4px $boxBorder;
box-shadow: inset 0 1px 1px rgba(black, .05), inset 0 1px 4px var(--boxBorder);
}
}
@ -447,18 +442,18 @@
._btn-link {
line-height: inherit;
color: $linkColor;
text-decoration: $linkTextDecoration;
color: var(--linkColor);
text-decoration: var(--linkTextDecoration);
&:hover {
color: $linkColorHover;
color: var(--linkColorHover);
text-decoration: underline;
}
}
._reset-btn,
._reset-btn:hover {
color: $textColorRed;
color: var(--textColorRed);
}
._github-btn {

@ -1,4 +1,4 @@
._fail {
._fail { // Don't use CSS variables, in case the browser doesn't support them.
display: block;
position: relative;
top: 1.5rem;
@ -23,7 +23,7 @@
._fail-title {
margin: 0 0 1rem;
font-size: 1rem;
font-weight: $boldFontWeight;
font-weight: bold;
}
._fail-text, ._fail-list {

@ -4,20 +4,20 @@
._header {
position: absolute;
z-index: $headerZ;
z-index: var(--headerZ);
top: 0;
left: 0;
display: -ms-flexbox;
display: flex;
width: $sidebarWidth;
height: $headerHeight;
background: $headerBackground;
border-bottom: 1px solid $headerBorder;
border-right: 1px solid $headerBorder;
width: var(--sidebarWidth);
height: var(--headerHeight);
background: var(--headerBackground);
border-bottom: 1px solid var(--headerBorder);
border-right: 1px solid var(--headerBorder);
@extend %border-box;
@extend %user-select-none;
@media #{$mediumScreen} { width: $sidebarMediumWidth; }
@include mobile { width: var(--sidebarMediumWidth); }
}
._header-left {
@ -35,7 +35,7 @@
flex: 0 0 auto;
width: 2.25rem;
height: 100%;
color: $textColorLight;
color: var(--textColorLight);
text-align: center;
&[hidden] { display: none; }
@ -67,8 +67,8 @@
word-wrap: normal;
overflow-wrap: normal;
font-size: .875rem;
background: $contentBackground;
border: 1px solid $headerBorder;
background: var(--contentBackground);
border: 1px solid var(--headerBorder);
border-radius: 3px;
box-shadow: -1px 1px 1px rgba(black, .05);
transition: all 0ms cubic-bezier(0.23, 1, 0.32, 1) 1ms;
@ -98,10 +98,10 @@
margin: 0;
line-height: 1.5rem;
font-size: 1rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
letter-spacing: -.5px;
background: $sidebarBackground;
border-bottom: 1px solid $sidebarBorder;
background: var(--sidebarBackground);
border-bottom: 1px solid var(--sidebarBorder);
border-radius: 2px 2px 0 0;
}
@ -109,7 +109,7 @@
._menu-title-link:hover {
display: block;
padding: .5rem 1rem;
color: $focusText;
color: var(--focusText);
text-decoration: none;
}
@ -121,9 +121,9 @@
text-decoration: none;
&:hover {
color: $focusText;
color: var(--focusText);
text-decoration: none;
background: $sidebarBackground;
background: var(--sidebarBackground);
}
&:last-child { border-radius: 0 0 2px 2px; }
@ -151,11 +151,7 @@
opacity: .42;
@extend %svg-icon;
@if $style == 'dark' {
fill: white;
} @else {
fill: black;
}
fill: var(--absolute);
}
}
@ -166,21 +162,19 @@
height: 100%;
padding: 0 .75rem 1px 1.75rem;
font-size: .875rem;
background: $contentBackground;
background: var(--contentBackground);
border: 1px solid;
border-color: darken($headerBorder, 2%);
border-color: var(--searchBorder);
border-radius: 3px;
&:focus {
outline: 0;
@if $inputFocusBorder {
border-color: $inputFocusBorder;
box-shadow: 0 0 1px $inputFocusBorder;
}
border-color: var(--inputFocusBorder);
box-shadow: 0 0 1px var(--inputFocusBorder);
}
&[disabled] {
background: $sidebarBackground;
background: var(--sidebarBackground);
cursor: not-allowed;
}
}
@ -202,13 +196,9 @@
top: .5rem;
left: .375rem;
@extend %svg-icon;
fill: var(--absolute);
}
@if $style == 'dark' {
> svg { fill: white; }
} @else {
> svg { fill: black; }
}
._search-active > & { display: block; }
}
@ -222,8 +212,8 @@
line-height: 1.25rem;
max-width: 50%;
font-size: .8125rem;
color: $textColorLight;
background: darken($headerBackground, 5%);
color: var(--textColorLight);
background: var(--searchTagBackground);
border-radius: 2px;
@extend %truncate-text;
}

@ -4,7 +4,7 @@
._mobile {
font-size: 100%;
background: $contentBackground;
background: var(--contentBackground);
._hide-on-mobile { display: none; }
@ -18,7 +18,7 @@
._container {
margin: 0;
padding-top: $headerHeight;
padding-top: var(--headerHeight);
}
._content {

@ -1,15 +1,15 @@
._notice {
position: absolute;
z-index: $noticeZ;
z-index: var(--noticeZ);
bottom: 0;
left: $sidebarWidth;
left: var(--sidebarWidth);
right: 0;
height: 2.5rem;
padding: 0 1.25rem;
background: $noticeBackground;
box-shadow: inset 0 1px $noticeBorder;
background: var(--noticeBackground);
box-shadow: inset 0 1px var(--noticeBorder);
@media #{$mediumScreen} { left: $sidebarMediumWidth; }
@include mobile { left: var(--sidebarMediumWidth); }
._sidebar-hidden & { left: 0; }

@ -7,9 +7,9 @@
max-width: 90%;
padding: .625rem 1rem;
font-size: .75rem;
color: $notifColor;
background: $notifBackground;
border: $notifBorder;
color: var(--notifColor);
background: var(--notifBackground);
border: var(--notifBorder);
border-radius: .25rem;
transition: opacity .2s;
opacity: 0;
@ -30,7 +30,7 @@
._notif-info {
float: right;
color: $notifColorLight;
color: var(--notifColorLight);
}
._notif-link,
@ -69,13 +69,13 @@
&::-webkit-scrollbar { width: 10px !important; }
&::-webkit-scrollbar-track {
background: $notifBackground !important;
background: var(--notifBackground) !important;
border: 0 !important;
border-radius: 5px !important;
}
&::-webkit-scrollbar-thumb {
border: 3px solid $notifBackground !important;
border: 3px solid var(--notifBackground) !important;
&:hover, &:active { border-width: 2px !important; }
}
@ -90,7 +90,7 @@
> ._news-row {
line-height: 1.125rem;
font-size: .6875rem;
color: $notifColorLight;
color: var(--notifColorLight);
margin-bottom: .25rem;
+ ._news-row { margin-top: .625rem; }
@ -107,7 +107,7 @@
._news-date {
float: right;
margin-left: 1rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
code {
@ -128,9 +128,9 @@
}
._notif-tip {
color: $textColor;
background: $tipBackground;
border: $tipBorder;
color: var(--textColor);
background: var(--tipBackground);
border: var(--tipBorder);
._notif-info { color: $textColorLight; }
._notif-info { color: var(--textColorLight); }
}

@ -23,7 +23,7 @@
max-width: 100%;
margin-bottom: 1em;
padding: 1px;
border: 1px dotted $boxBorder;
border: 1px dotted var(--boxBorder);
border-radius: 3px;
@extend %border-box;
}
@ -50,7 +50,7 @@
display: inline-block;
vertical-align: top;
padding: 0 .5rem;
background: $contentBackground;
background: var(--contentBackground);
@extend %internal-link;
& + & { margin-left: .75rem; }
@ -66,7 +66,7 @@
clear: both;
margin: 2rem 0 1.5rem;
font-size: .75rem;
color: $textColorLight;
color: var(--textColorLight);
text-align: center;
-webkit-font-smoothing: subpixel-antialiased;
@ -78,7 +78,7 @@
display: inline-block;
margin: 0;
padding: .25rem .75rem;
background: $labelBackground;
background: var(--labelBackground);
border-radius: 3px;
}

@ -1,17 +1,17 @@
._path {
position: absolute;
z-index: $noticeZ - 1;
z-index: var(--headerZ);
bottom: 0;
left: $sidebarWidth;
left: var(--sidebarWidth);
right: 0;
height: 2rem;
line-height: 2rem;
padding: 0 .375rem;
font-size: .875rem;
background: $pathBackground;
box-shadow: inset 0 1px $pathBorder;
background: var(--pathBackground);
box-shadow: inset 0 1px var(--pathBorder);
@media #{$mediumScreen} { left: $sidebarMediumWidth; }
@include mobile { left: var(--sidebarMediumWidth); }
._sidebar-hidden & { left: 0; }
@ -24,7 +24,7 @@
display: inline-block;
vertical-align: top;
padding: 0 .375rem;
color: $textColor;
color: var(--textColor);
text-decoration: none;
&:first-child:before {

@ -1,9 +1,26 @@
html {
--prismValue: #905;
--prismText: #5e8e01;
--prismOperator: #a67f59;
--prismKeyword: #0070a3;
--prismFunction: #dd4a68;
--prismVariable: #e90;
}
html._theme-dark {
--prismValue: #eb8160;
--prismText: #ddcf88;
--prismOperator: #b1c676;
--prismKeyword: #91b3ed;
--prismFunction: #c79e6b;
--prismVariable: #e9c062;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata,
.token.punctuation {
color: $textColorLight;
color: var(--textColorLight);
}
.namespace {
@ -17,11 +34,7 @@
.token.constant,
.token.symbol,
.token.deleted {
@if $style == 'dark' {
color: #eb8160;
} @else {
color: #905;
}
color: var(--prismValue);
}
.token.selector,
@ -30,11 +43,7 @@
.token.char,
.token.builtin,
.token.inserted {
@if $style == 'dark' {
color: #ddcf88;
} @else {
color: #5e8e01;
}
color: var(--prismText);
}
.token.operator,
@ -42,44 +51,28 @@
.token.url,
.language-css .token.string,
.style .token.string {
@if $style == 'dark' {
color: #b1c676;
} @else {
color: #a67f59;
}
color: var(--prismOperator);
}
.token.atrule,
.token.attr-value,
.token.keyword {
@if $style == 'dark' {
color: #91b3ed;
} @else {
color: #0070a3;
}
color: var(--prismKeyword);
}
.token.function {
@if $style == 'dark' {
color: #c79e6b;
} @else {
color: #dd4a68;
}
color: var(--prismFunction);
}
.token.regex,
.token.important,
.token.variable {
@if $style == 'dark' {
color: #e9c062;
} @else {
color: #e90;
}
color: var(--prismVariable);
}
.token.important,
.token.bold {
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
.token.italic {

@ -7,15 +7,15 @@
position: absolute;
top: 0;
bottom: 0;
z-index: $headerZ;
z-index: var(--headerZ);
&._in { display: block; }
> ._header { justify-content: space-between; }
&._dirty > ._header {
background: $noteGreenBackground;
border-color: $noteGreenBorder;
background: var(--noteGreenBackground);
border-color: var(--noteGreenBorder);
}
}
@ -37,7 +37,7 @@
padding-right: .5rem;
line-height: inherit;
font-size: inherit;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
text-align: right;
@extend %border-box;
}
@ -52,7 +52,7 @@
> small {
display: block;
color: $textColorLight;
color: var(--textColorLight);
margin-left: 1.75rem;
}
@ -62,7 +62,7 @@
}
}
@media (max-width: $maxWidth) {
@media (max-width: 80rem) {
._setting-max-width { display: none; }
}
@ -80,7 +80,7 @@
line-height: 1.5rem;
padding: 0 .75rem;
font-size: .875rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
color: inherit;
text-align: left;
cursor: pointer;
@ -119,12 +119,12 @@
position: relative;
vertical-align: top;
padding: 0 .75rem;
line-height: $headerHeight;
color: $textColorLight;
line-height: var(--headerHeight);
color: var(--textColorLight);
&.active {
color: $textColor;
font-weight: $boldFontWeight;
box-shadow: inset 0 -2px $linkColor;
color: var(--textColor);
font-weight: var(--boldFontWeight);
box-shadow: inset 0 -2px var(--linkColor);
}
}

@ -4,14 +4,14 @@
._sidebar {
position: absolute;
z-index: $sidebarZ;
z-index: var(--sidebarZ);
top: 0;
bottom: 0;
left: 0;
overflow-x: hidden;
overflow-y: scroll;
padding-top: $headerHeight;
background: $sidebarBackground;
padding-top: var(--headerHeight);
background: var(--sidebarBackground);
background-clip: content-box;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: none; // IE 10 doesn't support pointer-events
@ -22,13 +22,13 @@
._overlay-scrollbars & {
padding-top: 0;
top: $headerHeight;
top: var(--headerHeight);
}
body:not(._native-scrollbars) & {
&::-webkit-scrollbar { width: 10px; }
&::-webkit-scrollbar-track {
background: $contentBackground;
background: var(--contentBackground);
border: 0;
}
&::-webkit-scrollbar-thumb {
@ -52,10 +52,10 @@
._resizer {
position: absolute;
z-index: $sidebarZ + 1;
top: $headerHeight;
bottom: $headerHeight;
left: $sidebarWidth;
z-index: var(--headerZ);
top: var(--headerHeight);
bottom: var(--headerHeight);
left: var(--sidebarWidth);
margin-left: -2px;
width: 3px;
cursor: col-resize;
@ -72,11 +72,11 @@
margin: 0;
padding: 0;
list-style: none;
width: $sidebarWidth;
box-shadow: inset -1px 0 $sidebarBorder;
width: var(--sidebarWidth);
box-shadow: inset -1px 0 var(--sidebarBorder);
@extend %border-box;
@media #{$mediumScreen} { width: $sidebarMediumWidth; }
@include mobile { width: var(--sidebarMediumWidth); }
._sidebar > & { min-height: 100%; }
@ -89,7 +89,7 @@
padding: 0 .75rem 0 2.125rem;
line-height: 2rem;
font-size: .75rem;
color: $textColorLight;
color: var(--textColorLight);
text-transform: uppercase;
cursor: default;
}
@ -110,8 +110,8 @@
line-height: 1.5rem;
font-size: .875rem;
cursor: default;
background: $sidebarBackground;
box-shadow: inset -1px 0 $sidebarBorder;
background: var(--sidebarBackground);
box-shadow: inset -1px 0 var(--sidebarBorder);
@extend %truncate-text;
&, &:hover {
@ -123,16 +123,16 @@
&.focus:hover,
&.active,
&.active:hover {
color: $focusText;
background: $focusBackground;
box-shadow: inset -1px 0 $focusBorder;
color: var(--focusText);
background: var(--focusBackground);
box-shadow: inset -1px 0 var(--focusBorder);
}
&.active,
&.active:hover {
color: $selectionText;
background: $selectionBackground;
box-shadow: inset -1px 0 $selectionBorder;
color: var(--selectionText);
background: var(--selectionBackground);
box-shadow: inset -1px 0 var(--selectionBorder);
}
&:before {
@ -160,7 +160,7 @@
}
._list-count {
color: $textColorLighter;
color: var(--textColorLighter);
pointer-events: none;
._list-disabled:hover > & { display: none; }
@ -168,7 +168,7 @@
._list-enable {
display: none;
color: $linkColor;
color: var(--linkColor);
cursor: pointer;
&:hover { text-decoration: underline; }
@ -188,7 +188,7 @@
._list-disabled {
@extend %_list-dir;
&, &:hover { color: $textColorLight; }
&, &:hover { color: var(--textColorLight); }
&:before { opacity: .7; }
}
@ -200,11 +200,9 @@
width: 1rem;
height: 1rem;
cursor: pointer;
fill: black;
fill: var(--absolute);
opacity: .4;
@if $style == 'dark' { fill: white; }
&:hover { opacity: .65; }
._list-rdir > & {
@ -239,11 +237,11 @@
//
._list-pagelink {
color: $linkColor;
color: var(--linkColor);
cursor: pointer;
&:hover {
color: $linkColorHover;
color: var(--linkColorHover);
text-decoration: underline;
}
}
@ -275,9 +273,9 @@
left: .75rem;
width: .75rem;
height: 1px;
background: rgba($selectionText, .9);
box-shadow: 0 -3px rgba($selectionText, .9), // top line
0 3px rgba($selectionText, .9); // bottom line
background: var(--transparentSelectionText);
box-shadow: 0 -3px var(--transparentSelectionText), // top line
0 3px var(--transparentSelectionText); // bottom line
}
}
@ -289,7 +287,7 @@
padding: .5rem .75rem;
line-height: 1.25rem;
font-size: .8125rem;
color: $textColorLight;
color: var(--textColorLight);
& + & { padding-top: 0; }
}
@ -303,9 +301,9 @@
._list-hover.clone {
position: fixed;
overflow: visible;
z-index: $hoverZ;
z-index: var(--hoverZ);
left: 0;
min-width: $sidebarWidth;
min-width: var(--sidebarWidth);
padding: .25rem .75rem;
pointer-events: none;
-webkit-font-smoothing: subpixel-antialiased;
@ -313,7 +311,7 @@
transform: translate3d(0, 0, 0);
@extend %border-box;
@media #{$mediumScreen} { min-width: $sidebarMediumWidth; }
@include mobile { min-width: var(--sidebarMediumWidth); }
> ._list-text { display: inline; }
@ -346,10 +344,10 @@
padding: .5rem .75rem .25rem .75rem;
line-height: 1.5rem;
font-size: .75rem;
font-weight: $bolderFontWeight;
color: $textColorLight;
font-weight: var(--bolderFontWeight);
color: var(--textColorLight);
text-transform: uppercase;
background: linear-gradient(to bottom, $sidebarBackground, $sidebarBackground 75%, rgba($sidebarBackground, 0));
background: linear-gradient(to bottom, var(--sidebarBackground), var(--sidebarBackground) 75%, var(--transparentSidebarBackground));
cursor: default;
}

@ -1,9 +1,10 @@
html {
height: 100%;
font-size: 100%;
background: $documentBackground;
background: #fff; // fallback to show the error message to browsers that don't support CSS variables.
background: var(--documentBackground);
@media #{$mediumScreen} { font-size: 93.75%; }
@include mobile { font-size: 93.75%; }
@include print { background: none; }
@import 'global/print';
@ -17,10 +18,11 @@ body {
font-weight: normal;
font-family: $baseFont;
line-height: 1.7;
color: $textColor;
color: $textColor; // fallback to show the error message to browsers that don't support CSS variables.
color: var(--textColor);
word-wrap: break-word;
overflow-wrap: break-word;
background: $contentBackground;
background: var(--contentBackground);
touch-action: manipulation;
-webkit-tap-highlight-color: rgba(black, 0);
-webkit-touch-callout: none;
@ -29,11 +31,11 @@ body {
}
a {
color: $linkColor;
text-decoration: $linkTextDecoration;
color: var(--linkColor);
text-decoration: var(--linkTextDecoration);
&:hover {
color: $linkColorHover;
color: var(--linkColorHover);
text-decoration: underline;
}
}
@ -47,7 +49,7 @@ img {
h1, h2, h3, h4, h5, h6 {
margin: 1.5em 0 1em;
line-height: 1.3;
font-weight: $bolderFontWeight;
font-weight: var(--bolderFontWeight);
}
h1 { font-size: 1.5em; }
@ -59,7 +61,7 @@ h5, h6 { font-size: 1em; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
b, strong { font-weight: $boldFontWeight; }
b, strong { font-weight: var(--boldFontWeight); }
small { font-size: .9em; }
@ -79,7 +81,7 @@ li > ul, li > ol, dd > ul, dd > ol { margin: .5em 0; }
li > p { margin-bottom: .25em; }
dl { margin: 1.5em 0; }
dt { font-weight: $boldFontWeight; }
dt { font-weight: var(--boldFontWeight); }
dd {
margin: .375em;
padding-left: 1em;
@ -91,15 +93,15 @@ dfn, var { font-style: normal; }
abbr, acronym, dfn {
cursor: help;
border-bottom: 1px dotted $textColor;
border-bottom: 1px dotted var(--textColor);
}
pre, code, samp, %pre, %code {
font-family: $monoFont;
font-family: var(--monoFont);
font-weight: normal;
font-style: normal;
font-size: .9em;
color: $textColor;
color: var(--textColor);
white-space: pre-wrap;
direction: ltr;
-moz-tab-size: 2;
@ -121,14 +123,14 @@ a > code { color: inherit; }
table {
margin: 1.5em 0;
background: none;
border: 1px solid $boxBorder;
border: 1px solid var(--boxBorder);
border-collapse: separate;
border-spacing: 0;
border-radius: 3px;
}
caption {
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
padding: 0 .7em .3em;
}
@ -142,15 +144,15 @@ th, td {
}
th {
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
border: 0;
border-bottom: 1px solid $boxBorder;
border-bottom: 1px solid var(--boxBorder);
border-radius: 0;
@extend %heading-box;
&:empty { background: none; }
+ th, + td { border-left: 1px solid $boxBorder; }
+ th, + td { border-left: 1px solid var(--boxBorder); }
tr:first-child > &:first-child { border-top-left-radius: 3px; }
tr:first-child > &:last-child { border-top-right-radius: 3px; }
@ -161,10 +163,10 @@ th {
}
td {
background: $contentBackground;
border-bottom: 1px solid $boxBorderLight;
background: var(--contentBackground);
border-bottom: 1px solid var(--boxBorderLight);
+ td { border-left: 1px solid $boxBorderLight; }
+ td { border-left: 1px solid var(--boxBorderLight); }
tr:last-child > & { border-bottom: 0; }
> pre:only-child, > p:only-child, > ul:only-child, > ol:only-child {
@ -190,7 +192,7 @@ input, button {
margin: 0;
font-family: inherit;
font-size: 100%;
color: $textColor;
color: var(--textColor);
line-height: normal;
@extend %border-box;
}
@ -218,6 +220,10 @@ button:focus {
outline: -webkit-focus-ring-color auto 5px;
}
img, iframe {
background: var(--externalsBackground);
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
@ -230,9 +236,9 @@ input[type="search"]::-webkit-search-decoration {
border: 0 !important;
}
::-webkit-input-placeholder { color: $textColorLighter; }
::-moz-placeholder { color: $textColorLighter; opacity: 1; }
:-ms-input-placeholder { color: $textColorLighter; }
::-webkit-input-placeholder { color: var(--textColorLighter); }
::-moz-placeholder { color: var(--textColorLighter); opacity: 1; }
:-ms-input-placeholder { color: var(--textColorLighter); }
body:not(._native-scrollbars) {
*::-webkit-scrollbar { -webkit-appearance: none; }
@ -243,12 +249,12 @@ body:not(._native-scrollbars) {
*::-webkit-scrollbar-corner { display: none; }
*::-webkit-scrollbar-track {
background: $contentBackground;
border: 1px solid $contentBackground;
background: var(--contentBackground);
border: 1px solid var(--contentBackground);
&:hover {
background: $sidebarBackground;
border-color: $sidebarBorder;
background: var(--sidebarBackground);
border-color: var(--sidebarBorder);
}
&:vertical { border-width: 0 0 0 1px; }
@ -266,14 +272,14 @@ body:not(._native-scrollbars) {
*::-webkit-scrollbar-thumb {
min-height: 2rem;
background: $scrollbarColor;
background: var(--scrollbarColor);
background-clip: padding-box;
border: 5px solid rgba(black, 0);
border-radius: 10px;
&:hover,
&:active {
background-color: $scrollbarColorHover;
background-color: var(--scrollbarColorHover);
border-width: 4px;
}
}

@ -36,15 +36,15 @@
//
%box {
background: $boxBackground;
border: 1px solid $boxBorder;
background: var(--boxBackground);
border: 1px solid var(--boxBorder);
border-radius: 3px;
}
%heading-box {
color: $boxHeaderColor;
background: $boxHeaderBackground;
border: 1px solid $boxBorder;
color: var(--boxHeaderColor);
background: var(--boxHeaderBackground);
border: 1px solid var(--boxBorder);
border-radius: 3px;
}
@ -82,15 +82,15 @@
%note {
margin: 1.5rem 0;
padding: .5rem .875rem;
background: $noteBackground;
border: 1px solid $noteBorder;
background: var(--noteBackground);
border: 1px solid var(--noteBorder);
border-radius: 3px;
}
%label {
margin: 0 1px;
padding: 1px 4px 2px;
background: $labelBackground;
background: var(--labelBackground);
border-radius: 3px;
}
@ -102,35 +102,35 @@
padding-right: .5em;
overflow: hidden;
font-size: inherit;
color: $boxHeaderColor;
border: 1px solid $boxBorder;
color: var(--boxHeaderColor);
border: 1px solid var(--boxBorder);
border-radius: 2px;
@extend %label;
}
%label-yellow {
background: $noteBackground;
border-color: $noteBorder;
background: var(--noteBackground);
border-color: var(--noteBorder);
}
%note-green, %label-green {
background: $noteGreenBackground;
border-color: $noteGreenBorder;
background: var(--noteGreenBackground);
border-color: var(--noteGreenBorder);
}
%note-blue, %label-blue {
background: $noteBlueBackground;
border-color: $noteBlueBorder;
background: var(--noteBlueBackground);
border-color: var(--noteBlueBorder);
}
%note-orange, %label-orange {
background: $noteOrangeBackground;
border-color: $noteOrangeBorder;
background: var(--noteOrangeBackground);
border-color: var(--noteOrangeBorder);
}
%note-red, %label-red {
background: $noteRedBackground;
border-color: $noteRedBorder;
background: var(--noteRedBackground);
border-color: var(--noteRedBorder);
}
//
@ -149,12 +149,11 @@
pointer-events: none;
// <svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M15,15H2V6h2.595c0,0,0.689-0.896,2.17-2H1C0.447,4,0,4.449,0,5v11c0,0.553,0.447,1,1,1h15c0.553,0,1-0.447,1-1v-3.746 l-2,1.645V15z M13.361,8.05v3.551L20,6.4l-6.639-4.999v3.131C5.3,4.532,5.3,12.5,5.3,12.5C7.582,8.752,8.986,8.05,13.361,8.05z"/></svg>
@if $style == 'dark' {
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2NiZDBkMCIgZD0iTTE1LDE1SDJWNmgyLjU5NWMwLDAsMC42ODktMC44OTYsMi4xNy0ySDFDMC40NDcsNCwwLDQuNDQ5LDAsNXYxMWMwLDAuNTUzLDAuNDQ3LDEsMSwxaDE1YzAuNTUzLDAsMS0wLjQ0NywxLTF2LTMuNzQ2IGwtMiwxLjY0NVYxNXogTTEzLjM2MSw4LjA1djMuNTUxTDIwLDYuNGwtNi42MzktNC45OTl2My4xMzFDNS4zLDQuNTMyLDUuMywxMi41LDUuMywxMi41QzcuNTgyLDguNzUyLDguOTg2LDguMDUsMTMuMzYxLDguMDV6Ii8+PC9zdmc+);
} @else {
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iIzMzNzdjMCIgZD0iTTE1LDE1SDJWNmgyLjU5NWMwLDAsMC42ODktMC44OTYsMi4xNy0ySDFDMC40NDcsNCwwLDQuNDQ5LDAsNXYxMWMwLDAuNTUzLDAuNDQ3LDEsMSwxaDE1YzAuNTUzLDAsMS0wLjQ0NywxLTF2LTMuNzQ2IGwtMiwxLjY0NVYxNXogTTEzLjM2MSw4LjA1djMuNTUxTDIwLDYuNGwtNi42MzktNC45OTl2My4xMzFDNS4zLDQuNTMyLDUuMywxMi41LDUuMywxMi41QzcuNTgyLDguNzUyLDguOTg2LDguMDUsMTMuMzYxLDguMDV6Ii8+PC9zdmc+);
}
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iIzMzNzdjMCIgZD0iTTE1LDE1SDJWNmgyLjU5NWMwLDAsMC42ODktMC44OTYsMi4xNy0ySDFDMC40NDcsNCwwLDQuNDQ5LDAsNXYxMWMwLDAuNTUzLDAuNDQ3LDEsMSwxaDE1YzAuNTUzLDAsMS0wLjQ0NywxLTF2LTMuNzQ2IGwtMiwxLjY0NVYxNXogTTEzLjM2MSw4LjA1djMuNTUxTDIwLDYuNGwtNi42MzktNC45OTl2My4xMzFDNS4zLDQuNTMyLDUuMywxMi41LDUuMywxMi41QzcuNTgyLDguNzUyLDguOTg2LDguMDUsMTMuMzYxLDguMDV6Ii8+PC9zdmc+);
}
}
html._theme-dark %external-link:after {
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2NiZDBkMCIgZD0iTTE1LDE1SDJWNmgyLjU5NWMwLDAsMC42ODktMC44OTYsMi4xNy0ySDFDMC40NDcsNCwwLDQuNDQ5LDAsNXYxMWMwLDAuNTUzLDAuNDQ3LDEsMSwxaDE1YzAuNTUzLDAsMS0wLjQ0NywxLTF2LTMuNzQ2IGwtMiwxLjY0NVYxNXogTTEzLjM2MSw4LjA1djMuNTUxTDIwLDYuNGwtNi42MzktNC45OTl2My4xMzFDNS4zLDQuNTMyLDUuMywxMi41LDUuMywxMi41QzcuNTgyLDguNzUyLDguOTg2LDguMDUsMTMuMzYxLDguMDV6Ii8+PC9zdmc+);
}
%internal-link:after { content: none !important; }

@ -22,8 +22,8 @@
%doc-icon { background-image: image-url('sprites/docs@2x.png'); }
}
%darkIconFix {
@if $style == 'dark' {
html._theme-dark {
%darkIconFix {
filter: invert(100%) grayscale(100%);
-webkit-filter: invert(100%) grayscale(100%);
}

@ -7,3 +7,9 @@
@content;
}
}
@mixin mobile {
@media (max-width: 800px) {
@content;
}
}

@ -25,14 +25,14 @@
._attribution-p {
background: none;
border: 2px solid $boxBorder;
border: 2px solid var(--boxBorder);
}
._attribution:last-child:after {
content: 'Exported from DevDocs \2014 https://devdocs.io';
display: block;
margin-top: 1rem;
font-weight: $bolderFontWeight;
font-weight: var(--bolderFontWeight);
}
._attribution {

@ -1,92 +1,76 @@
$baseFont: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, Ubuntu, 'Helvetica Neue', Arial, sans-serif;
$monoFont: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
$boldFontWeight: 500;
$bolderFontWeight: 600;
html._theme-dark {
--absolute: white;
$style: 'dark';
--documentBackground: #222;
--contentBackground: #33373a;
$maxWidth: 80rem;
$headerHeight: 3rem;
$sidebarWidth: 20rem;
$sidebarMediumWidth: 16rem;
--textColor: #cbd0d0;
--textColorLight: #9da5ad;
--textColorLighter: #77787a;
$documentBackground: #222;
$contentBackground: #33373a;
--externalsBackground: #fff;
$textColor: #cbd0d0;
$textColorLight: #9da5ad;
$textColorLighter: #77787a;
$textColorRed: #f44336;
--inputFocusBorder: transparent;
$inputFocusBorder: false;
--focusBackground: #3f4042;
--focusBorder: #000;
--focusText: #f7f2f2;
$focusBackground: #3f4042;
$focusBorder: #000;
$focusText: #f7f2f2;
--loadingText: #5d6164;
$loadingText: #5d6164;
$splashText: $loadingText;
--selectionBackground: #007acc;
--selectionBorder: #000;
$selectionBackground: #007acc;
$selectionBorder: #000;
$selectionText: #fff;
--highlightBackground: #64675f;
$highlightBackground: #64675f;
--linkColor: var(--textColor);
--linkColorHover: white;
--linkTextDecoration: underline;
$linkColor: $textColor;
$linkColorHover: white;
$linkTextDecoration: underline;
--headerBackground: #1c1c1c;
--headerBorder: #000;
--searchTagBackground: #{darken(#1c1c1c, 5%)};
--searchBorder: #{darken(#000, 2%)};
$headerBackground: #1c1c1c;
$headerBorder: #000;
--sidebarBackground: #24282a;
--transparentSidebarBackground: #{rgba(#24282a, 0)};
--sidebarBorder: #000;
$sidebarBackground: #24282a;
$sidebarBorder: #000;
--scrollbarColor: #6c6c6f;
--scrollbarColorHover: #949697;
$scrollbarColor: #6c6c6f;
$scrollbarColorHover: #949697;
--pathBackground: var(--headerBackground);
--pathBorder: var(--headerBorder);
$pathBackground: $headerBackground;
$pathBorder: $headerBorder;
--noticeBackground: var(--sidebarBackground);
--noticeBorder: var(--sidebarBorder);
$noticeBackground: $sidebarBackground;
$noticeBorder: $sidebarBorder;
--boxBackground: var(--sidebarBackground);
--boxBorder: var(--headerBorder);
--boxBorderLight: var(--headerBorder);
--boxHeaderColor: #dbe4e4;
--boxHeaderBackground: var(--sidebarBackground);
$boxBackground: $sidebarBackground;
$boxBorder: $headerBorder;
$boxBorderLight: $headerBorder;
$boxHeaderColor: #dbe4e4;
$boxHeaderBackground: $sidebarBackground;
--noteBackground: #45474b;
--noteBorder: #000;
$noteBackground: #45474b;
$noteBorder: #000;
--noteGreenBackground: #284a2a;
--noteGreenBorder: #000;
$noteGreenBackground: #284a2a;
$noteGreenBorder: #000;
--noteBlueBackground: #2a4151;
--noteBlueBorder: #000;
$noteBlueBackground: #2a4151;
$noteBlueBorder: #000;
--noteOrangeBackground: #563322;
--noteOrangeBorder: #000;
$noteOrangeBackground: #563322;
$noteOrangeBorder: #000;
--noteRedBackground: #603033;
--noteRedBorder: #000;
$noteRedBackground: #603033;
$noteRedBorder: #000;
--labelBackground: var(--boxBackground);
$labelBackground: $boxBackground;
--notifBackground: #{rgba(#555, .95)};
--notifBorder: 1px solid #000;
$notifBackground: rgba(#555, .95);
$notifBorder: 1px solid #000;
$notifColor: #fff;
$notifColorLight: #ccc;
$tipBackground: $notifBackground;
$tipBorder: $notifBorder;
$mediumScreen: '(max-width: 800px)';
$contentZ: 1;
$sidebarZ: 2;
$headerZ: 3;
$noticeZ: 4;
$hoverZ: 5;
--tipBackground: var(--notifBackground);
--tipBorder: var(--notifBorder);
}

@ -0,0 +1,76 @@
html._theme-default {
--absolute: black;
--documentBackground: #f3f3f3;
--contentBackground: #fff;
--textColor: #333;
--textColorLight: #666;
--textColorLighter: #888;
--externalsBackground: #fff;
--inputFocusBorder: #35b5f4;
--focusBackground: #e5e5e5;
--focusBorder: #d4d4d4;
--focusText: #000;
--loadingText: #ccc;
--selectionBackground: #398df0;
--selectionBorder: #196fc2;
--highlightBackground: #fffdcd;
--linkColor: #3377c0;
--linkColorHover: #2f6cb6;
--linkTextDecoration: none;
--headerBackground: #eee;
--headerBorder: #d7d7d7;
--searchTagBackground: #{darken(#eee, 5%)};
--searchBorder: #{darken(#d7d7d7, 2%)};
--sidebarBackground: #f9f9f9;
--transparentSidebarBackground: #{rgba(#f9f9f9, 0)};
--sidebarBorder: #e1e1e1;
--scrollbarColor: #ccc;
--scrollbarColorHover: #999;
--pathBackground: var(--sidebarBackground);
--pathBorder: var(--sidebarBorder);
--noticeBackground: #faf9e2;
--noticeBorder: #e2e2c1;
--boxBackground: #fafafa;
--boxBorder: #d8d8d8;
--boxBorderLight: #e5e5e5;
--boxHeaderColor: var(--textColor);
--boxHeaderBackground: #f5f5f5;
--noteBackground: #f8f8dd;
--noteBorder: #d3d952;
--noteGreenBackground: #e7f8e1;
--noteGreenBorder: #89da70;
--noteBlueBackground: #d4f3fd;
--noteBlueBorder: #94bbeb;
--noteOrangeBackground: #fbe6d1;
--noteOrangeBorder: #ec8b01;
--noteRedBackground: #fed5d3;
--noteRedBorder: #dc7874;
--labelBackground: #f4f4f4;
--notifBackground: #{rgba(#333, .85)};
--notifBorder: none;
--tipBackground: #{rgba(#fffdcd, .95)};
--tipBorder: 1px solid #e7dca9;
}

@ -1,92 +1,35 @@
// Variables needed to style the error message for browsers that don't support CSS variables.
$baseFont: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, Ubuntu, 'Helvetica Neue', Arial, sans-serif;
$monoFont: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
$boldFontWeight: 500;
$bolderFontWeight: 600;
$style: 'light';
$maxWidth: 80rem;
$headerHeight: 3rem;
$sidebarWidth: 20rem;
$sidebarMediumWidth: 16rem;
$documentBackground: #f3f3f3;
$contentBackground: #fff;
$textColor: #333;
$textColorLight: #666;
$textColorLighter: #888;
$textColorRed: #f44336;
$inputFocusBorder: #35b5f4;
$focusBackground: #e5e5e5;
$focusBorder: #d4d4d4;
$focusText: #000;
$loadingText: #ccc;
$splashText: #ccc;
$selectionBackground: #398df0;
$selectionBorder: #196fc2;
$selectionText: #fff;
$highlightBackground: #fffdcd;
$linkColor: #3377c0;
$linkColorHover: #2f6cb6;
$linkTextDecoration: none;
$headerBackground: #eee;
$headerBorder: #d7d7d7;
$sidebarBackground: #f9f9f9;
$sidebarBorder: #e1e1e1;
$scrollbarColor: #ccc;
$scrollbarColorHover: #999;
$pathBackground: $sidebarBackground;
$pathBorder: $sidebarBorder;
$noticeBackground: #faf9e2;
$noticeBorder: #e2e2c1;
$boxBackground: #fafafa;
$boxBorder: #d8d8d8;
$boxBorderLight: #e5e5e5;
$boxHeaderColor: $textColor;
$boxHeaderBackground: #f5f5f5;
$noteBackground: #f8f8dd;
$noteBorder: #d3d952;
$noteGreenBackground: #e7f8e1;
$noteGreenBorder: #89da70;
$noteBlueBackground: #d4f3fd;
$noteBlueBorder: #94bbeb;
html {
--baseFont: #{$baseFont};
--monoFont: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
--boldFontWeight: 500;
--bolderFontWeight: 600;
$noteOrangeBackground: #fbe6d1;
$noteOrangeBorder: #ec8b01;
--textColorRed: #f44336;
$noteRedBackground: #fed5d3;
$noteRedBorder: #dc7874;
--splashText: var(--loadingText);
$labelBackground: #f4f4f4;
--selectionText: #fff;
--transparentSelectionText: rgba(255, 255, 255, 0.9);
$notifBackground: rgba(#333, .85);
$notifBorder: none;
$notifColor: #fff;
$notifColorLight: #ccc;
--notifColor: #fff;
--notifColorLight: #ccc;
$tipBackground: rgba(#fffdcd, .95);
$tipBorder: 1px solid #e7dca9;
--maxWidth: 80rem;
--headerHeight: 3rem;
--sidebarWidth: 20rem;
--sidebarMediumWidth: 16rem;
$mediumScreen: '(max-width: 800px)';
--focusBackground: #e5e5e5;
--focusBorder: #d4d4d4;
--focusText: #000;
$contentZ: 1;
$sidebarZ: 2;
$headerZ: 3;
$noticeZ: 4;
$hoverZ: 5;
--contentZ: 1;
--sidebarZ: 2;
--headerZ: 3;
--noticeZ: 4;
--hoverZ: 5;
}

@ -8,7 +8,7 @@
.nav-index-section {
margin: 1.5em 0 1em -2em;
list-style: none;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
text-transform: capitalize;
}

@ -3,13 +3,13 @@
h3 > .type-signature {
float: right;
color: $textColorLight;
color: var(--textColorLight);
}
h3 > .signature-attributes {
font-size: .75rem;
font-weight: normal;
font-style: italic;
color: $textColorLighter;
color: var(--textColorLighter);
}
}

@ -5,7 +5,7 @@
}
th[align=left] {
border-left: 1px solid $boxBorder;
border-left: 1px solid var(--boxBorder);
}
code { @extend %label; }

@ -4,7 +4,7 @@
h4 > code, h5 > code, strong > code { @extend %label; }
h2 > small {
color: $textColorLight;
color: var(--textColorLight);
float: right;
}

@ -23,7 +23,7 @@
.t-spar { // language/switch, language/for, etc.
font-style: italic;
color: $textColorLight;
color: var(--textColorLight);
}
.t-sdsc-nopad dl, .t-sdsc-nopad dd { margin: 0; }
@ -57,7 +57,7 @@
margin: 1rem 0;
padding: .375rem;
font-size: .75rem;
border: 1px solid $boxBorder;
border: 1px solid var(--boxBorder);
border-radius: 2px;
}

@ -5,6 +5,6 @@
.type {
float: right;
font-size: .9em;
color: $textColorLight;
color: var(--textColorLight);
}
}

@ -2,10 +2,10 @@
h2 { @extend %block-heading; }
h3, .d_decl { @extend %block-label, %label-blue; }
.d_decl { @extend %code; }
.d_decl > small { color: $textColorLight; }
.d_decl > strong { font-weight: $bolderFontWeight; }
.d_decl > small { color: var(--textColorLight); }
.d_decl > strong { font-weight: var(--bolderFontWeight); }
p > code, li > code, td > code, dd > code { @extend %label; }
span.red { color: $textColorRed; }
span.red { color: var(--textColorRed); }
}

@ -6,7 +6,7 @@
.features {
float: right;
color: $textColorLight;
color: var(--textColorLight);
}
}
}

@ -1,5 +1,5 @@
._dojo {
@extend %simple;
.jsdoc-inheritance { color: $textColorLight; }
.jsdoc-inheritance { color: var(--textColorLight); }
}

@ -5,7 +5,7 @@
h3 > .access {
float: right;
color: $textColorLight;
color: var(--textColorLight);
font-weight: normal;
}
@ -15,6 +15,6 @@
}
p.github-link {
color: $textColorLight;
color: var(--textColorLight);
}
}

@ -5,5 +5,5 @@
code.code { @extend %label; }
.note { @extend %note; }
.warning { @extend %note, %note-red; }
.note .label, .warning .label { font-weight: $boldFontWeight; }
.note .label, .warning .label { font-weight: var(--boldFontWeight); }
}

@ -32,7 +32,7 @@
.toc-list {
margin-top: 0;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
> li + li { margin-top: 1em; }
> li > ul { font-weight: normal; }
@ -48,7 +48,7 @@
.returns,
.option-type {
float: right;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
margin-left: 1em;
}

@ -12,6 +12,6 @@
.smwtable { width: 100%; }
.smwtable td:nth-last-child(2), .smwtable td:last-child { width: 2.5em; }
.cell-green { background: $noteGreenBackground; }
.cell-red { background: $noteRedBackground; }
.cell-green { background: var(--noteGreenBackground); }
.cell-red { background: var(--noteRedBackground); }
}

@ -7,7 +7,7 @@
> span {
display: block;
font-size: 1rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
ul, ol {
@ -42,7 +42,7 @@
> .note {
em {
font-style: normal;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
> ul { margin: 1em 0; }
@ -93,7 +93,7 @@
dt > strong > code, // HTML element attribute
dl > dt > code { // CSS property value, Javascript function argument
font-family: inherit;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
font-size: inherit;
}

@ -9,10 +9,10 @@
dt > code { @extend %label; }
.api-heading { overflow: hidden; }
.api-heading > code { font-weight: $boldFontWeight; }
.api-heading > code { font-weight: var(--boldFontWeight); }
.locus, .src-code { float: right; }
.locus, .type, .src-code { margin-left: .5em; }
h2 .subtext-api { margin-top: .25rem; }
.locus, .subtext-api, .subtext-api > code { font-size: .75rem; }
.locus, .type { color: $textColorLight; }
.locus, .type { color: var(--textColorLight); }
}

@ -8,7 +8,7 @@
.faint.heading {
font-size: .9em;
color: $textColorLight;
color: var(--textColorLight);
}
.youtube-video iframe { width: 420px; height: 315px; }

@ -3,6 +3,6 @@
h3 > small {
float: right;
color: $textColorLight;
color: var(--textColorLight);
}
}

@ -13,7 +13,7 @@
.verinfo {
float: right;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
.classsynopsis,
@ -21,7 +21,7 @@
.description > .methodsynopsis,
.description > .fieldsynopsis { @extend %note, %note-blue; }
.classsynopsisinfo_comment { color: $textColorLight; }
.classsynopsisinfo_comment { color: var(--textColorLight); }
.classsynopsisinfo_comment,
.classsynopsis > .constructorsynopsis,

@ -16,7 +16,7 @@
}
p > code { @extend %label; }
p.c2 { font-weight: $boldFontWeight; }
p.c2 { font-weight: var(--boldFontWeight); }
.navfooter > table { width: 100%; }
td[align=center] { text-align: center; }

@ -4,6 +4,6 @@
// Function headers
h3.fn > code {
float: right;
color: $textColorLight;
color: var(--textColorLight);
}
}

@ -6,7 +6,7 @@
.method-description > h2, h3, h4, h5, h6 { font-size: 1em; }
.method-heading {
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
@extend %block-label, %label-blue;
+ .method-heading { margin-top: -.5em; }
@ -22,7 +22,7 @@
a.method-click-advice {
float: right;
font-size: .75rem;
color: $linkColor;
color: var(--linkColor);
cursor: pointer;
@extend %user-select-none;
@ -42,8 +42,8 @@
top: 0;
left: -1em;
right: 0;
background: rgba($contentBackground, .95);
box-shadow: 0 1em 1em 1em $contentBackground;
background: var(--contentBackground);
box-shadow: 0 1em 1em 1em var(--contentBackground);
> pre { margin: 0; }
}

@ -2,7 +2,7 @@
@extend %simple;
.deprecated { @extend %note, %note-orange; }
.deprecatedTitle { font-weight: $boldFontWeight; }
.deprecatedTitle { font-weight: var(--boldFontWeight); }
span.platform { float: right; }
span.propType, span.platform { font-weight: normal; }

@ -14,7 +14,7 @@
.args {
font-size: .75rem;
color: $textColorLight;
color: var(--textColorLight);
}
// Others
@ -35,7 +35,7 @@
> .prompt {
float: left;
margin-right: .5em;
color: $textColorLight;
color: var(--textColorLight);
}
> code {

@ -10,6 +10,6 @@
> h1, > h2, > h3, > h4, > h5 {
margin: 0;
font-family: $baseFont;
font-family: var(--baseFont);
}
}

@ -3,9 +3,18 @@
h4 { @extend %block-label; }
.docblock { margin-left: 1em; }
div.information, div.important-traits {
@extend %note;
> pre { margin: .5rem 0; }
}
div.stability { margin-bottom: 1em; }
em.stab, span.stab { @extend %label; }
em.stab.unstable, span.stab.unstable { @extend %label-orange; }
.since, .out-of-band { float: right; }
.out-of-band { float: right; }
.since, .srclink {
float: right;
margin-left: .5rem;
}
}

@ -17,34 +17,4 @@
blockquote > h4, blockquote > h5 { margin-top: .25rem; }
}
._apache_pig,
._bower,
._chai,
._codeceptjs,
._docker,
._electron,
._fish,
._flow,
._gnu,
._grunt,
._haxe,
._immutable,
._influxdata,
._jasmine,
._jest,
._less,
._lodash,
._marionette,
._markdown,
._mocha,
._mongoose,
._nim,
._redux,
._requirejs,
._simple,
._typescript,
._vagrant,
._vulkan,
._yarn {
@extend %simple;
}
._simple { @extend %simple; }

@ -14,7 +14,7 @@
.versionmodified, span.title, .topic-title {
display: block;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
p > code, li > code, dd > code, .docutils > dt > code { @extend %label; }
@ -26,7 +26,7 @@
.admonition-title {
float: left;
margin: 0 .5em 0 0;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
&:after { content: ':'; }
}

@ -6,7 +6,7 @@
.admonition.tip { @extend %note-green; }
.admonition-title {
margin: 0 0 .25rem;
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
}
code { @extend %label; }

@ -24,7 +24,7 @@
}
tr.current {
font-weight: $boldFontWeight;
font-weight: var(--boldFontWeight);
font-size: 1rem;
}

@ -1,5 +1,5 @@
._yard {
@extend %simple;
.tag_title { font-weight: $boldFontWeight; }
.tag_title { font-weight: var(--boldFontWeight); }
}

@ -3,6 +3,6 @@
.detail-header-tag, .detailHeaderTag {
float: right;
color: $textColorLight;
color: var(--textColorLight);
}
}

@ -12,6 +12,8 @@ class App < Sinatra::Application
Rack::Mime::MIME_TYPES['.webapp'] = 'application/x-web-app-manifest+json'
configure do
use Rack::SslEnforcer, only_environments: ['production', 'test'], hsts: false, force_secure_cookies: false
set :sentry_dsn, ENV['SENTRY_DSN']
set :protection, except: [:frame_options, :xss_header]
@ -199,7 +201,6 @@ class App < Sinatra::Application
@@manifest_asset_urls ||= [
javascript_path('application', asset_host: false),
stylesheet_path('application'),
stylesheet_path('application-dark'),
image_path('docs-1.png'),
image_path('docs-1@2x.png'),
image_path('docs-2.png'),
@ -208,21 +209,6 @@ class App < Sinatra::Application
]
end
def main_stylesheet_path
stylesheet_paths[dark_theme? ? :dark : :default]
end
def alternate_stylesheet_path
stylesheet_paths[dark_theme? ? :default : :dark]
end
def stylesheet_paths
@@stylesheet_paths ||= {
default: stylesheet_path('application'),
dark: stylesheet_path('application-dark')
}
end
def app_size
@app_size ||= memoized_cookies['size'].nil? ? '20rem' : "#{memoized_cookies['size']}px"
end

@ -59,6 +59,7 @@ module Docs
css('pre').each do |node|
node['data-language'] = 'elixir'
node.content = node.content
end
end
end

@ -42,6 +42,11 @@ module Docs
node.parent.content = node.parent.content
end
# Fix links to the method reference
css('a').each do |node|
node['href'] = node['href'].sub('4x/api', 'index')
end
doc
end
end

@ -0,0 +1,44 @@
module Docs
class Handlebars
class CleanHtmlFilter < Filter
def call
# Remove the t-shirt shop advertisement
css('#callout').remove
# The title filter is used to add titles to pages without one, remove original headers
css('h1').remove
# Remove the link to the issue tracker
css('.issue-tracker').remove
css('pre').each do |node|
# Remove nested nodes inside pre tags
node.content = node.content
# Add syntax highlighting
node['data-language'] = 'html'
end
# Transform 'Learn More' links to headers in the "Getting Started" part of the homepage
# If this step is skipped, that section looks cluttered with 4 sub-sections without any dividers
css('#getting-started + .contents a.more-info').each do |node|
clone = node.clone
# Move it to the top of the sub-section
node.parent.prepend_child(clone)
# Turn it into a header
clone.name = 'h3'
# Remove the "Learn More: " part
clone.content = clone.content[12..-1]
end
# Remove class attributes from div elements to reduce file size
css('div').remove_attr('class')
doc
end
end
end
end

@ -0,0 +1,19 @@
module Docs
class Handlebars
class EntriesFilter < Docs::EntriesFilter
def get_name
subpath[0..-6].titleize
end
def get_type
name
end
def additional_entries
css('h2, h3').to_a.map do |node|
[node.content.strip, node['id'], root_page? ? 'Manual' : nil]
end
end
end
end
end

@ -0,0 +1,24 @@
module Docs
class Puppeteer
class CleanHtmlFilter < Filter
def call
at_css('h1').content = 'Puppeteer Documentation'
# None of the elements to remove have classes, so the order of the remove calls is trivial
# Remove links to previous versions of the reference
at_css('h1 + ul').remove
# Remove table of contents
at_css('h1 + h5').remove
at_css('h1 + ul').remove
# Make headers bigger by transforming them into a bigger variant
css('h3').each { |node| node.name = 'h2' }
css('h4').each { |node| node.name = 'h3' }
doc
end
end
end
end

@ -0,0 +1,41 @@
module Docs
class Puppeteer
class EntriesFilter < Docs::EntriesFilter
# The entire reference is one big page, so get_name and get_type are not necessary
def additional_entries
entries = []
css('h3').each do |node|
name = node.content.split(': ').last
# Find all sub-items (all h4's between the current h3 and the next)
current = node.next
while !current.nil? && current.name != 'h3'
if current.name == 'h4'
current_name = current.content
# Prepend events with the class name
if current_name.start_with?('event: ')
current_name = "#{name} event: #{current_name[/'(.*)'/, 1]}"
end
# Remove arguments from functions
if current_name.include?('(')
current_name = current_name.split('(')[0] + '()'
end
entries << [current_name, current['id'], name]
end
current = current.next
end
entries << [name, node['id'], name]
end
entries
end
end
end
end

@ -15,15 +15,17 @@ module Docs
def other
css('h1').each do |node|
node.content = node.content.sub!(/\A[\d\.]+/) do |str|
node.content = node.content.sub(/\A[\d\.]+/) do |str|
rgx = /\A#{str}/
@levelRegexp = @levelRegexp ? Regexp.union(@levelRegexp, rgx) : rgx
''
end
end
css('h2', 'h3', 'h4').each do |node|
node.inner_html = node.inner_html.remove @levelRegexp
unless @levelRegexp.nil?
css('h2', 'h3', 'h4').each do |node|
node.inner_html = node.inner_html.remove @levelRegexp
end
end
end
end

@ -2,16 +2,18 @@ module Docs
class Python
class EntriesV3Filter < Docs::EntriesFilter
REPLACE_TYPES = {
'Cryptographic' => 'Cryptography',
'Custom Interpreters' => 'Interpreters',
'Data Compression & Archiving' => 'Data Compression',
'Generic Operating System' => 'Operating System',
'Graphical User Interfaces with Tk' => 'Tk',
'Internet Data Handling' => 'Internet Data',
'Internet Protocols & Support' => 'Internet',
'Interprocess Communication & Networking' => 'Networking',
'Program Frameworks' => 'Frameworks',
'Structured Markup Processing Tools' => 'Structured Markup' }
'contextvars — Context Variables' => 'Context Variables',
'Cryptographic' => 'Cryptography',
'Custom Interpreters' => 'Interpreters',
'Data Compression & Archiving' => 'Data Compression',
'email — An email & MIME handling package' => 'Email',
'Generic Operating System' => 'Operating System',
'Graphical User Interfaces with Tk' => 'Tk',
'Internet Data Handling' => 'Internet Data',
'Internet Protocols & Support' => 'Internet',
'Interprocess Communication & Networking' => 'Networking',
'Program Frameworks' => 'Frameworks',
'Structured Markup Processing Tools' => 'Structured Markup' }
def get_name
name = at_css('h1').content

@ -2,8 +2,6 @@ module Docs
class Rust
class CleanHtmlFilter < Filter
def call
puts subpath if at_css('#versioninfo')
if slug.start_with?('book') || slug.start_with?('reference')
@doc = at_css('#content main')
elsif slug == 'error-index'
@ -29,12 +27,16 @@ module Docs
css('.rusttest', '.test-arrow', 'hr').remove
css('.docblock.attributes').each do |node|
node.remove if node.content.include?('#[must_use]')
end
css('a.header').each do |node|
node.first_element_child['id'] = node['name'] || node['id']
node.before(node.children).remove
end
css('.docblock > h1').each { |node| node.name = 'h4' }
css('.docblock > h1:not(.section-header)').each { |node| node.name = 'h4' }
css('h2.section-header').each { |node| node.name = 'h3' }
css('h1.section-header').each { |node| node.name = 'h2' }
@ -44,7 +46,7 @@ module Docs
end
end
css('> .impl-items', '> .docblock', 'pre > pre').each do |node|
css('> .impl-items', '> .docblock', 'pre > pre', '.tooltiptext', '.tooltip').each do |node|
node.before(node.children).remove
end
@ -65,6 +67,32 @@ module Docs
doc.first_element_child.name = 'h1' if doc.first_element_child.name = 'h2'
at_css('h1').content = 'Rust Documentation' if root_page?
css('.table-display').each do |node|
node.css('td').each do |td|
node.before(td.children)
end
node.remove
end
css('h2 .important-traits', 'h3 .important-traits', 'h4 .important-traits').each do |node|
content = node.at_css('.content.hidden .content')
node.at_css('.content.hidden').replace(content) if content
node.parent.after(node)
end
css('code.content').each do |node|
node.name = 'pre'
node.css('.fmt-newline').each do |line|
line.inner_html = line.inner_html + "\n"
end
node.inner_html = node.inner_html.gsub('<br>', "\n")
node.content = node.content
end
css('.since + .srclink').each do |node|
node.previous_element.before(node)
end
doc
end
end

@ -42,11 +42,14 @@ module Docs
entries << [node.content, node['id']] unless node.content.include?('Note:')
end
else
css('#methods + * + div > .method', '#required-methods + div > .method', '#provided-methods + div > .method').map do |node|
name = node.at_css('.fnname').content
name.prepend "#{self.name}::"
[name, node['id']]
end
css('.method')
.select {|node| !node.at_css('.fnname').nil?}
.map {|node|
name = node.at_css('.fnname').content
name.prepend "#{self.name}::"
[name, node['id']]
}
.uniq {|item| item[0]}
end
end
end

@ -2,7 +2,7 @@ module Docs
class ApachePig < UrlScraper
self.name = 'Apache Pig'
self.slug = 'apache_pig'
self.type = 'apache_pig'
self.type = 'simple'
self.links = {
home: 'https://pig.apache.org/'
}

@ -1,7 +1,7 @@
module Docs
class Bower < UrlScraper
self.name = 'Bower'
self.type = 'bower'
self.type = 'simple'
self.release = '1.8.4'
self.base_url = 'https://bower.io/docs/'
self.root_path = 'api'

@ -1,7 +1,7 @@
module Docs
class Chai < UrlScraper
self.name = 'Chai'
self.type = 'chai'
self.type = 'simple'
self.release = '4.1.0'
self.base_url = 'http://chaijs.com'
self.root_path = '/api/'

@ -1,7 +1,7 @@
module Docs
class Codeceptjs < UrlScraper
self.name = 'CodeceptJS'
self.type = 'codeceptjs'
self.type = 'simple'
self.root_path = 'index.html'
self.release = '1.3.1'
self.base_url = 'https://codecept.io/'

@ -1,6 +1,6 @@
module Docs
class Docker < UrlScraper
self.type = 'docker'
self.type = 'simple'
self.links = {
home: 'https://docker.com/',
code: 'https://github.com/docker/docker'

@ -1,6 +1,6 @@
module Docs
class Electron < UrlScraper
self.type = 'electron'
self.type = 'simple'
self.base_url = 'https://electronjs.org/docs'
self.release = '2.0.2'
self.links = {

@ -34,7 +34,7 @@ module Docs
end
version '1.7' do
self.release = '1.7.2'
self.release = '1.7.3'
self.base_urls = [
"https://hexdocs.pm/elixir/#{release}/",
"https://hexdocs.pm/eex/#{release}/",

@ -2,7 +2,7 @@ module Docs
class Express < UrlScraper
self.name = 'Express'
self.type = 'express'
self.release = '4.16.1'
self.release = '4.16.3'
self.base_url = 'http://expressjs.com/en/'
self.root_path = '4x/api.html'
self.initial_paths = %w(

@ -1,7 +1,7 @@
module Docs
class Fish < UrlScraper
self.name = 'Fish'
self.type = 'fish'
self.type = 'simple'
self.root_path = 'index.html'
self.links = {
home: 'https://fishshell.com/',

@ -1,6 +1,6 @@
module Docs
class Flow < UrlScraper
self.type = 'flow'
self.type = 'simple'
self.release = '0.79.1'
self.base_url = 'https://flow.org/en/docs/'
self.links = {

@ -1,6 +1,6 @@
module Docs
class Gnu < FileScraper
self.type = 'gnu'
self.type = 'simple'
self.root_path = 'index.html'
self.abstract = 'true'

@ -1,7 +1,7 @@
module Docs
class Grunt < UrlScraper
self.name = 'Grunt'
self.type = 'grunt'
self.type = 'simple'
self.release = '1.0.1'
self.base_url = 'https://gruntjs.com/'
self.root_path = 'getting-started'

@ -0,0 +1,23 @@
module Docs
class Handlebars < UrlScraper
self.name = 'Handlebars.js'
self.slug = 'handlebars'
self.type = 'simple'
self.release = '4.0.12'
self.base_url = 'https://handlebarsjs.com/'
self.links = {
home: 'https://handlebarsjs.com/',
code: 'https://github.com/wycats/handlebars.js/'
}
html_filters.push 'handlebars/entries', 'handlebars/clean_html', 'title'
options[:container] = '#contents'
options[:root_title] = 'Handlebars.js'
options[:attribution] = <<-HTML
&copy; 2011&ndash;2017 by Yehuda Katz<br>
Licensed under the MIT License.
HTML
end
end

@ -1,7 +1,7 @@
module Docs
class Haxe < UrlScraper
self.name = 'Haxe'
self.type = 'haxe'
self.type = 'simple'
self.release = '3.4.7'
self.base_url = 'https://api.haxe.org/'

@ -2,7 +2,7 @@ module Docs
class Immutable < UrlScraper
self.name = 'Immutable.js'
self.slug = 'immutable'
self.type = 'immutable'
self.type = 'simple'
self.release = '3.8.1'
self.base_url = 'https://facebook.github.io/immutable-js/docs/'
self.links = {

@ -1,7 +1,7 @@
module Docs
class Influxdata < UrlScraper
self.name = 'InfluxData'
self.type = 'influxdata'
self.type = 'simple'
self.release = '1.3'
self.base_url = 'https://docs.influxdata.com/'
self.links = {

@ -1,6 +1,6 @@
module Docs
class Jasmine < UrlScraper
self.type = 'jasmine'
self.type = 'simple'
self.release = '3.2.1'
self.base_url = 'https://jasmine.github.io/api/3.2/'
self.root_path = 'index.html'

@ -1,6 +1,6 @@
module Docs
class Jest < UrlScraper
self.type = 'jest'
self.type = 'simple'
self.release = '23.5.0'
self.base_url = 'https://jestjs.io/docs/en/'
self.root_path = 'getting-started'

@ -29,6 +29,19 @@ module Docs
Laravel is a trademark of Taylor Otwell.
HTML
version '5.7' do
self.release = '5.7.7'
self.root_path = '/api/5.7/index.html'
self.initial_paths = %w(/docs/5.7/installation /api/5.7/classes.html)
options[:only_patterns] = [%r{\A/api/5\.7/}, %r{\A/docs/5\.7/}]
options[:fix_urls] = ->(url) do
url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?!\d)}, "#{Laravel.base_url}/docs/5.7/"
url
end
end
version '5.6' do
self.release = '5.6.33'
self.root_path = '/api/5.6/index.html'

@ -1,6 +1,6 @@
module Docs
class Less < UrlScraper
self.type = 'less'
self.type = 'simple'
self.release = '2.7.2'
self.base_url = 'http://lesscss.org'
self.root_path = '/features'

@ -2,7 +2,7 @@ module Docs
class Lodash < UrlScraper
self.name = 'lodash'
self.slug = 'lodash'
self.type = 'lodash'
self.type = 'simple'
self.links = {
home: 'https://lodash.com/',
code: 'https://github.com/lodash/lodash/'

@ -2,7 +2,7 @@ module Docs
class Marionette < UrlScraper
self.name = 'Marionette.js'
self.slug = 'marionette'
self.type = 'marionette'
self.type = 'simple'
self.root_path = 'index'
self.links = {
home: 'https://marionettejs.com/',

@ -1,7 +1,7 @@
module Docs
class Markdown < UrlScraper
self.name = 'Markdown'
self.type = 'markdown'
self.type = 'simple'
self.base_url = 'http://daringfireball.net/projects/markdown/syntax'
html_filters.push 'markdown/clean_html', 'markdown/entries'

@ -1,6 +1,6 @@
module Docs
class Mocha < UrlScraper
self.type = 'mocha'
self.type = 'simple'
self.release = '5.0.1'
self.base_url = 'https://mochajs.org/'
self.links = {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save