From 66f69d88d0d1ddd109c2818d7661f0735aeb6468 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:18:53 -0400
Subject: [PATCH 01/27] Update gem dependencies
---
Gemfile.lock | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Gemfile.lock b/Gemfile.lock
index 9913765b..0f2d1325 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -28,7 +28,7 @@ GEM
ffi (1.9.25)
fspath (3.1.0)
highline (1.7.10)
- html-pipeline (2.8.0)
+ html-pipeline (2.8.3)
activesupport (>= 2)
nokogiri (>= 1.4)
i18n (1.0.1)
@@ -50,7 +50,7 @@ GEM
multi_json (1.13.1)
mustermann (1.0.2)
newrelic_rpm (5.2.0.345)
- nokogiri (1.8.2)
+ nokogiri (1.8.4)
mini_portile2 (~> 2.3.0)
options (2.3.2)
progress (3.4.0)
@@ -88,7 +88,7 @@ GEM
rack-protection (= 2.0.3)
sinatra (= 2.0.3)
tilt (>= 1.3, < 3)
- sprockets (3.7.1)
+ sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-helpers (1.2.1)
@@ -113,7 +113,7 @@ GEM
ethon (>= 0.9.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
- uglifier (4.1.11)
+ uglifier (4.1.14)
execjs (>= 0.3.0, < 3)
unicode-display_width (1.3.3)
unicode_utils (1.4.0)
From d657377d1c52c6140b24b3ac278d7670863d230a Mon Sep 17 00:00:00 2001
From: Grant Bourque
Date: Tue, 12 Jun 2018 00:48:54 -0500
Subject: [PATCH 02/27] Use `document.scrollingElement` for mobile scrolls
- Set `document.scrollingElement` as the scrolling element
for scrolling to anchors when the app is mobile mode
to enhance support in newer browsers.
The CSS View Module spec considers `document.documentElement`/``
to be the standard scrolling element
and that is what appears to be used in the latest Firefox and Chrome.
However, some older browsers and even the current Safari
use `document.body` as the scrolling element
which is why I suspect the original code used `document.body`.
Since some browsers scroll on different elements,
`document.scrollingElement` exists
so the browser can tell us what to use
for scrolling to anchors work for all modern browsers.
Since `document.scrollingElement` is undefined in older browsers,
`document.body` is available as fallback mobile scrolling element.
---
assets/javascripts/views/content/content.coffee | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/assets/javascripts/views/content/content.coffee b/assets/javascripts/views/content/content.coffee
index 7cf99409..8c5ba874 100644
--- a/assets/javascripts/views/content/content.coffee
+++ b/assets/javascripts/views/content/content.coffee
@@ -19,7 +19,10 @@ class app.views.Content extends app.View
after: 'afterRoute'
init: ->
- @scrollEl = if app.isMobile() then document.body else @el
+ @scrollEl = if app.isMobile()
+ (document.scrollingElement || document.body)
+ else
+ @el
@scrollMap = {}
@scrollStack = []
From 55a77f633fbd08784b6b34696d716015464d3a60 Mon Sep 17 00:00:00 2001
From: Beau Carnes
Date: Tue, 12 Jun 2018 11:42:47 -0400
Subject: [PATCH 03/27] Fix SVG case issue (#791)
---
lib/docs/filters/svg/entries.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/docs/filters/svg/entries.rb b/lib/docs/filters/svg/entries.rb
index aebdeb76..b1fbfe9c 100644
--- a/lib/docs/filters/svg/entries.rb
+++ b/lib/docs/filters/svg/entries.rb
@@ -3,8 +3,8 @@ module Docs
class EntriesFilter < Docs::EntriesFilter
def get_name
name = super
- name.gsub!('Element.', '').try(:downcase!)
- name.gsub!('Attribute.', '').try(:downcase!)
+ name.gsub!('Element.', '')
+ name.gsub!('Attribute.', '')
name.gsub!('Tutorial.', '')
name.gsub!('_', '')
From eaeb2bd3210f074a80c6a1eda676cde391074178 Mon Sep 17 00:00:00 2001
From: Beau Carnes
Date: Wed, 20 Jun 2018 11:04:51 -0400
Subject: [PATCH 04/27] Jest links work (#826)
---
lib/docs/filters/jest/clean_html.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/docs/filters/jest/clean_html.rb b/lib/docs/filters/jest/clean_html.rb
index 394316b6..ba90826d 100644
--- a/lib/docs/filters/jest/clean_html.rb
+++ b/lib/docs/filters/jest/clean_html.rb
@@ -12,8 +12,8 @@ module Docs
node.before(node.children).remove
end
- css('.anchor[name]').each do |node|
- node.parent['id'] = node['name']
+ css('.anchor').each do |node|
+ node.parent['id'] = node['id']
node.remove
end
From 8be51a5b36d0dc09926e52da70a91dd85d5895f5 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:25:52 -0400
Subject: [PATCH 05/27] Update Jest documentation (23.3.0)
---
lib/docs/filters/jest/clean_html.rb | 1 +
lib/docs/filters/jest/entries.rb | 2 +-
lib/docs/scrapers/jest.rb | 6 +++---
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib/docs/filters/jest/clean_html.rb b/lib/docs/filters/jest/clean_html.rb
index ba90826d..d1ced3f3 100644
--- a/lib/docs/filters/jest/clean_html.rb
+++ b/lib/docs/filters/jest/clean_html.rb
@@ -18,6 +18,7 @@ module Docs
end
css('pre').each do |node|
+ node['data-language'] = 'js'
node['data-language'] = node['class'][/language-(\w+)/, 1] if node['class']
node.content = node.content
end
diff --git a/lib/docs/filters/jest/entries.rb b/lib/docs/filters/jest/entries.rb
index e90f51ca..f87e4f77 100644
--- a/lib/docs/filters/jest/entries.rb
+++ b/lib/docs/filters/jest/entries.rb
@@ -6,7 +6,7 @@ module Docs
end
def get_type
- type = at_css('.navItemActive').ancestors('.navGroup').first.at_css('h3').content
+ type = at_css('.navListItemActive').ancestors('.navGroup').first.at_css('h3').content
if type == 'Introduction'
'Guides: Introduction'
diff --git a/lib/docs/scrapers/jest.rb b/lib/docs/scrapers/jest.rb
index 689b3268..efd05133 100644
--- a/lib/docs/scrapers/jest.rb
+++ b/lib/docs/scrapers/jest.rb
@@ -1,9 +1,9 @@
module Docs
class Jest < UrlScraper
self.type = 'jest'
- self.release = '23.1.0'
- self.base_url = 'https://facebook.github.io/jest/docs/en/'
- self.root_path = 'getting-started.html'
+ self.release = '23.3.0'
+ self.base_url = 'https://jestjs.io/docs/en/'
+ self.root_path = 'getting-started'
self.links = {
home: 'https://facebook.github.io/jest/',
code: 'https://github.com/facebook/jest'
From 0950168660fe5cd1d2d2c8fe6c069f6deec398bd Mon Sep 17 00:00:00 2001
From: icyleaf
Date: Thu, 21 Jun 2018 11:58:07 +0800
Subject: [PATCH 06/27] Update crystal documentation (0.25.0)
---
lib/docs/filters/crystal/clean_html.rb | 2 +-
lib/docs/filters/crystal/entries.rb | 2 +-
lib/docs/scrapers/crystal.rb | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/docs/filters/crystal/clean_html.rb b/lib/docs/filters/crystal/clean_html.rb
index 3cfa0174..94f3f253 100644
--- a/lib/docs/filters/crystal/clean_html.rb
+++ b/lib/docs/filters/crystal/clean_html.rb
@@ -16,7 +16,7 @@ module Docs
end
def api
- @doc = at_css('#main-content')
+ @doc = at_css('.main-content')
at_css('h1 + p').remove if root_page?
diff --git a/lib/docs/filters/crystal/entries.rb b/lib/docs/filters/crystal/entries.rb
index a2449e19..3a54e3c6 100644
--- a/lib/docs/filters/crystal/entries.rb
+++ b/lib/docs/filters/crystal/entries.rb
@@ -32,7 +32,7 @@ module Docs
if hierarchy && hierarchy.content.include?('Exception')
'Exceptions'
else
- type = at_css('#types-list > ul > .current > a').content
+ type = at_css('.types-list > ul > .current > a').content
type = 'Float' if type.start_with?('Float')
type = 'Int' if type.start_with?('Int')
type = 'UInt' if type.start_with?('UInt')
diff --git a/lib/docs/scrapers/crystal.rb b/lib/docs/scrapers/crystal.rb
index 1e95e540..23629465 100644
--- a/lib/docs/scrapers/crystal.rb
+++ b/lib/docs/scrapers/crystal.rb
@@ -1,7 +1,7 @@
module Docs
class Crystal < UrlScraper
self.type = 'crystal'
- self.release = '0.24.1'
+ self.release = '0.25.0'
self.base_url = 'https://crystal-lang.org/'
self.root_path = "api/#{release}/index.html"
self.initial_paths = %w(docs/index.html)
@@ -29,7 +29,7 @@ module Docs
HTML
else
<<-HTML
- © 2012–2017 Manas Technology Solutions.
+ © 2012–2018 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
HTML
end
From 88fbec50776367f9e3d4772a1c466f27c0d0c67c Mon Sep 17 00:00:00 2001
From: icyleaf
Date: Mon, 2 Jul 2018 15:19:29 +0800
Subject: [PATCH 07/27] Update crystal documentation to 0.25.1.
---
lib/docs/scrapers/crystal.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/crystal.rb b/lib/docs/scrapers/crystal.rb
index 23629465..bf8e8392 100644
--- a/lib/docs/scrapers/crystal.rb
+++ b/lib/docs/scrapers/crystal.rb
@@ -1,7 +1,7 @@
module Docs
class Crystal < UrlScraper
self.type = 'crystal'
- self.release = '0.25.0'
+ self.release = '0.25.1'
self.base_url = 'https://crystal-lang.org/'
self.root_path = "api/#{release}/index.html"
self.initial_paths = %w(docs/index.html)
From 68bd35c1bc87a6e553f1bcdca7ed70f5d460a256 Mon Sep 17 00:00:00 2001
From: Beau Carnes
Date: Thu, 5 Jul 2018 21:58:15 +0000
Subject: [PATCH 08/27] update Flow version
---
assets/javascripts/templates/pages/about_tmpl.coffee | 4 ++--
lib/docs/scrapers/flow.rb | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee
index 35905385..9cfc1a0b 100644
--- a/assets/javascripts/templates/pages/about_tmpl.coffee
+++ b/assets/javascripts/templates/pages/about_tmpl.coffee
@@ -553,8 +553,8 @@ credits = [
], [
'React, React Native, Flow, Relay',
'2013-present Facebook Inc.',
- 'CC BY',
- 'https://raw.githubusercontent.com/reactjs/reactjs.org/master/LICENSE-DOCS.md'
+ 'MIT',
+ 'https://raw.githubusercontent.com/facebook/react/master/LICENSE'
], [
'Redis',
'2009-2018 Salvatore Sanfilippo',
diff --git a/lib/docs/scrapers/flow.rb b/lib/docs/scrapers/flow.rb
index cbf95f5c..bc559486 100644
--- a/lib/docs/scrapers/flow.rb
+++ b/lib/docs/scrapers/flow.rb
@@ -1,7 +1,7 @@
module Docs
class Flow < UrlScraper
self.type = 'flow'
- self.release = '0.68.0'
+ self.release = '0.75.0'
self.base_url = 'https://flow.org/en/docs/'
self.links = {
home: 'https://flow.org/',
@@ -16,7 +16,7 @@ module Docs
options[:attribution] = <<-HTML
© 2013–present Facebook Inc.
- Licensed under the BSD License.
+ Licensed under the MIT License.
HTML
end
end
From 22fa7c81b68c05576815c1ad23df47f9e5ff93a3 Mon Sep 17 00:00:00 2001
From: Beau Carnes
Date: Thu, 14 Jun 2018 15:01:46 -0400
Subject: [PATCH 09/27] Fix header alignment in Python (issue #808)
---
assets/stylesheets/application-dark.css.scss | 1 +
assets/stylesheets/application.css.scss | 1 +
assets/stylesheets/pages/_python.scss | 6 ++++++
lib/docs/scrapers/python.rb | 2 +-
4 files changed, 9 insertions(+), 1 deletion(-)
create mode 100644 assets/stylesheets/pages/_python.scss
diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss
index c8dc1f8f..05ff7e9e 100644
--- a/assets/stylesheets/application-dark.css.scss
+++ b/assets/stylesheets/application-dark.css.scss
@@ -79,6 +79,7 @@
'pages/phpunit',
'pages/postgres',
'pages/pug',
+ 'pages/python',
'pages/ramda',
'pages/rdoc',
'pages/react_native',
diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss
index 26e0b885..eb73cdff 100644
--- a/assets/stylesheets/application.css.scss
+++ b/assets/stylesheets/application.css.scss
@@ -79,6 +79,7 @@
'pages/phpunit',
'pages/postgres',
'pages/pug',
+ 'pages/python',
'pages/ramda',
'pages/rdoc',
'pages/react_native',
diff --git a/assets/stylesheets/pages/_python.scss b/assets/stylesheets/pages/_python.scss
new file mode 100644
index 00000000..78f2d4db
--- /dev/null
+++ b/assets/stylesheets/pages/_python.scss
@@ -0,0 +1,6 @@
+._python {
+ @extend %sphinx;
+
+ h2 > a, h3 > a, dt[id] > a.external, dt[id] > a.internal { float: none !important; }
+ }
+
diff --git a/lib/docs/scrapers/python.rb b/lib/docs/scrapers/python.rb
index 8b0289d5..31089dc9 100644
--- a/lib/docs/scrapers/python.rb
+++ b/lib/docs/scrapers/python.rb
@@ -1,6 +1,6 @@
module Docs
class Python < FileScraper
- self.type = 'sphinx'
+ self.type = 'python'
self.root_path = 'library/index.html'
self.links = {
home: 'https://www.python.org/',
From 9c87e451dd35ad41a9f4b746922b551103de0475 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:34:29 -0400
Subject: [PATCH 10/27] Update Python documentation (3.7.0)
---
lib/docs/scrapers/python.rb | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/python.rb b/lib/docs/scrapers/python.rb
index 31089dc9..9b7126e6 100644
--- a/lib/docs/scrapers/python.rb
+++ b/lib/docs/scrapers/python.rb
@@ -23,8 +23,16 @@ module Docs
Licensed under the PSF License.
HTML
+ version '3.7' do
+ self.release = '3.7.0'
+ self.dir = '/Users/Thibaut/DevDocs/Docs/Python37' # docs.python.org/3.7/download.html
+ self.base_url = 'https://docs.python.org/3.7/'
+
+ html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html'
+ end
+
version '3.6' do
- self.release = '3.6.4'
+ self.release = '3.6.6'
self.dir = '/Users/Thibaut/DevDocs/Docs/Python36' # docs.python.org/3.6/download.html
self.base_url = 'https://docs.python.org/3.6/'
From f5b074d3977f83c7221d8d60f231c2ccd7de831d Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:34:34 -0400
Subject: [PATCH 11/27] Update Sinon.JS documentation (6.1.3)
---
lib/docs/scrapers/sinon.rb | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/docs/scrapers/sinon.rb b/lib/docs/scrapers/sinon.rb
index 4a950406..00362b11 100644
--- a/lib/docs/scrapers/sinon.rb
+++ b/lib/docs/scrapers/sinon.rb
@@ -18,6 +18,11 @@ module Docs
Licensed under the BSD License.
HTML
+ version '6' do
+ self.release = '6.1.3'
+ self.base_url = "http://sinonjs.org/releases/v#{release}/"
+ end
+
version '5' do
self.release = '5.1.0'
self.base_url = "http://sinonjs.org/releases/v#{release}/"
From 665022f542918c200b74034a26b7a2a2738acd03 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:37:10 -0400
Subject: [PATCH 12/27] Update Node.js documentation (10.6.0)
---
lib/docs/scrapers/node.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/node.rb b/lib/docs/scrapers/node.rb
index 0dc7c7e8..322ea192 100644
--- a/lib/docs/scrapers/node.rb
+++ b/lib/docs/scrapers/node.rb
@@ -23,7 +23,7 @@ module Docs
HTML
version do
- self.release = '10.4.0'
+ self.release = '10.6.0'
self.base_url = 'https://nodejs.org/dist/latest-v10.x/docs/api/'
end
From b88ae596a14d268a967ec0eb93de9331927401d8 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:39:58 -0400
Subject: [PATCH 13/27] Update ReactNative documentation (0.56)
---
lib/docs/filters/react_native/entries.rb | 2 +-
lib/docs/scrapers/react_native.rb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/docs/filters/react_native/entries.rb b/lib/docs/filters/react_native/entries.rb
index 54583368..71a55ece 100644
--- a/lib/docs/filters/react_native/entries.rb
+++ b/lib/docs/filters/react_native/entries.rb
@@ -12,7 +12,7 @@ module Docs
end
def get_type
- link = at_css('.navItemActive')
+ link = at_css('.navListItemActive')
return 'Miscellaneous' unless link
section = link.ancestors('.navGroup').first
type = section.at_css('h3').content.strip
diff --git a/lib/docs/scrapers/react_native.rb b/lib/docs/scrapers/react_native.rb
index 8300bc3b..d1f94001 100644
--- a/lib/docs/scrapers/react_native.rb
+++ b/lib/docs/scrapers/react_native.rb
@@ -2,7 +2,7 @@ module Docs
class ReactNative < UrlScraper
self.slug = 'react_native'
self.type = 'react_native'
- self.release = '0.55'
+ self.release = '0.56'
self.base_url = 'https://facebook.github.io/react-native/docs/'
self.root_path = 'getting-started.html'
self.links = {
From 5fc6b030705bceac5d733781f34e9a1fbcf4fca9 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:44:25 -0400
Subject: [PATCH 14/27] Update D documentation (2.081.0)
---
lib/docs/scrapers/d.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/d.rb b/lib/docs/scrapers/d.rb
index c6d151d7..0cf41a9f 100644
--- a/lib/docs/scrapers/d.rb
+++ b/lib/docs/scrapers/d.rb
@@ -2,7 +2,7 @@ module Docs
class D < UrlScraper
include MultipleBaseUrls
- self.release = '2.080.0'
+ self.release = '2.081.0'
self.type = 'd'
self.base_urls = ['https://dlang.org/phobos/', 'https://dlang.org/spec/']
self.root_path = 'index.html'
From a64cd2c83d8becbbfc8a71a117d7fd0661430a06 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:44:29 -0400
Subject: [PATCH 15/27] Update Erlang documentation (21.0)
---
lib/docs/scrapers/erlang.rb | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/docs/scrapers/erlang.rb b/lib/docs/scrapers/erlang.rb
index ffa267f3..9c94aed5 100644
--- a/lib/docs/scrapers/erlang.rb
+++ b/lib/docs/scrapers/erlang.rb
@@ -40,6 +40,11 @@ module Docs
Licensed under the Apache License, Version 2.0.
HTML
+ version '21' do
+ self.release = '21.0'
+ self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang21'
+ end
+
version '20' do
self.release = '20.3'
self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang20'
From 40c36a85aae46c1736afd3feda8622294a249bb4 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:45:23 -0400
Subject: [PATCH 16/27] Update Django documentation (2.0.7)
---
lib/docs/scrapers/django.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/django.rb b/lib/docs/scrapers/django.rb
index 37f3270a..cfedac46 100644
--- a/lib/docs/scrapers/django.rb
+++ b/lib/docs/scrapers/django.rb
@@ -35,7 +35,7 @@ module Docs
HTML
version '2.0' do
- self.release = '2.0.5'
+ self.release = '2.0.7'
self.dir = '/Users/Thibaut/DevDocs/Docs/Django20'
self.base_url = 'https://docs.djangoproject.com/en/2.0/'
end
From 5a62aa043d0eaffd068ca8fb64beef5d7de989c0 Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:46:35 -0400
Subject: [PATCH 17/27] Update Electron documentation (2.0.2)
---
lib/docs/scrapers/electron.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/electron.rb b/lib/docs/scrapers/electron.rb
index e9881f70..e71690a3 100644
--- a/lib/docs/scrapers/electron.rb
+++ b/lib/docs/scrapers/electron.rb
@@ -2,7 +2,7 @@ module Docs
class Electron < UrlScraper
self.type = 'electron'
self.base_url = 'https://electronjs.org/docs'
- self.release = '2.0.0'
+ self.release = '2.0.2'
self.links = {
home: 'https://electronjs.org/',
code: 'https://github.com/electron/electron'
From b1c37f94045abae835d3b57637aea9bb64fc6f3b Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 16:46:59 -0400
Subject: [PATCH 18/27] Update CodeceptJS documentation (1.3.1)
---
lib/docs/scrapers/codeceptjs.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/docs/scrapers/codeceptjs.rb b/lib/docs/scrapers/codeceptjs.rb
index c30a4a59..6fd2798c 100644
--- a/lib/docs/scrapers/codeceptjs.rb
+++ b/lib/docs/scrapers/codeceptjs.rb
@@ -3,7 +3,7 @@ module Docs
self.name = 'CodeceptJS'
self.type = 'codeceptjs'
self.root_path = 'index.html'
- self.release = '1.2.1'
+ self.release = '1.3.1'
self.base_url = 'https://codecept.io/'
self.links = {
home: 'https://codecept.io/',
From c8291a742813be8798639cdebe8abe4584105951 Mon Sep 17 00:00:00 2001
From: Simon Legner
Date: Tue, 12 Dec 2017 23:32:55 +0100
Subject: [PATCH 19/27] Add leaflet doc
---
lib/docs/filters/leaflet/clean_html.rb | 23 +++++++++++++++
lib/docs/filters/leaflet/entries.rb | 33 ++++++++++++++++++++++
lib/docs/scrapers/leaflet.rb | 37 +++++++++++++++++++++++++
public/icons/docs/leaflet/16.png | Bin 0 -> 826 bytes
public/icons/docs/leaflet/16@2x.png | Bin 0 -> 1879 bytes
public/icons/docs/leaflet/SOURCE | 1 +
6 files changed, 94 insertions(+)
create mode 100644 lib/docs/filters/leaflet/clean_html.rb
create mode 100644 lib/docs/filters/leaflet/entries.rb
create mode 100644 lib/docs/scrapers/leaflet.rb
create mode 100644 public/icons/docs/leaflet/16.png
create mode 100644 public/icons/docs/leaflet/16@2x.png
create mode 100644 public/icons/docs/leaflet/SOURCE
diff --git a/lib/docs/filters/leaflet/clean_html.rb b/lib/docs/filters/leaflet/clean_html.rb
new file mode 100644
index 00000000..c8d000f3
--- /dev/null
+++ b/lib/docs/filters/leaflet/clean_html.rb
@@ -0,0 +1,23 @@
+module Docs
+ class Leaflet
+ class CleanHtmlFilter < Filter
+ def call
+ css('#toc', '.expander').remove
+
+ # remove "This reference reflects Leaflet 1.2.0."
+ css('h2 ~ p').each do |node|
+ node.remove
+ break
+ end
+
+ # syntax highlighting
+ css('code.lang-js').each do |node|
+ node.parent['data-language'] = 'javascript'
+ node.parent.content = node.content
+ end
+
+ doc
+ end
+ end
+ end
+end
diff --git a/lib/docs/filters/leaflet/entries.rb b/lib/docs/filters/leaflet/entries.rb
new file mode 100644
index 00000000..c246d5ad
--- /dev/null
+++ b/lib/docs/filters/leaflet/entries.rb
@@ -0,0 +1,33 @@
+module Docs
+ class Leaflet
+ class EntriesFilter < Docs::EntriesFilter
+ def additional_entries
+ entries = []
+ type = nil
+ subtype = nil
+
+ css('*').each do |node|
+ if node.name == 'h2' && node['id']
+ type = node.content
+ subtype = nil
+ entries << [type, node['id'], type]
+ elsif node.name == 'h3'
+ subtype = node.content
+ elsif node.name == 'tr' && node['id']
+ value = node.css('td > code > b').first.content
+ if subtype && subtype.end_with?(' options')
+ name = "#{subtype}: #{value}"
+ elsif subtype
+ name = "#{type} #{subtype.downcase}: #{value}"
+ else
+ name = "#{type}: #{value}"
+ end
+ entries << [name, node['id'], type]
+ end
+ end
+
+ entries
+ end
+ end
+ end
+end
diff --git a/lib/docs/scrapers/leaflet.rb b/lib/docs/scrapers/leaflet.rb
new file mode 100644
index 00000000..5e939394
--- /dev/null
+++ b/lib/docs/scrapers/leaflet.rb
@@ -0,0 +1,37 @@
+module Docs
+ class Leaflet < UrlScraper
+ self.name = 'Leaflet'
+ self.type = 'leaflet'
+ self.slug = 'leaflet'
+ self.links = {
+ home: 'http://leafletjs.com/',
+ code: 'https://github.com/Leaflet/Leaflet'
+ }
+
+ html_filters.push 'leaflet/entries', 'leaflet/clean_html', 'title'
+
+ options[:container] = '.container'
+ options[:skip_links] = true
+
+ options[:attribution] = <<-HTML
+ © 2017 Vladimir Agafonkin.
+ Maps © OpenStreetMap contributors.
+ HTML
+
+ version '1.2' do
+ self.release = '1.2.0'
+ self.base_url = "http://leafletjs.com/reference-#{release}.html"
+ end
+
+ version '1.1' do
+ self.release = '1.1.0'
+ self.base_url = "http://leafletjs.com/reference-#{release}.html"
+ end
+
+ version '1.0' do
+ self.release = '1.0.3'
+ self.base_url = "http://leafletjs.com/reference-#{release}.html"
+ end
+
+ end
+end
diff --git a/public/icons/docs/leaflet/16.png b/public/icons/docs/leaflet/16.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2627fe32348d7e437b096a5bb2f196b7a23572e
GIT binary patch
literal 826
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
Date: Sun, 8 Jul 2018 17:07:14 -0400
Subject: [PATCH 20/27] Update link to freecodecamp blog
---
assets/javascripts/news.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json
index 40ded15e..461073ec 100644
--- a/assets/javascripts/news.json
+++ b/assets/javascripts/news.json
@@ -1,7 +1,7 @@
[
[
"2018-03-26",
- "DevDocs is joining the freeCodeCamp community. Read the announcement here."
+ "DevDocs is joining the freeCodeCamp community. Read the announcement here."
], [
"2018-02-04",
"New documentations: Babel, Jekyll and JSDoc"
From 15f79fa4884cd892d7a86761bccf63560a848e2f Mon Sep 17 00:00:00 2001
From: Thibaut Courouble
Date: Sun, 8 Jul 2018 17:11:39 -0400
Subject: [PATCH 21/27] Finish Leaflet scraper
---
assets/images/docs-2.png | Bin 16897 -> 17376 bytes
assets/images/docs-2@2x.png | Bin 40986 -> 42235 bytes
assets/javascripts/news.json | 3 ++
.../templates/pages/about_tmpl.coffee | 5 +++
assets/stylesheets/global/_icons.scss | 1 +
lib/docs/filters/leaflet/clean_html.rb | 29 ++++++++++++++----
lib/docs/scrapers/leaflet.rb | 20 +++++++-----
public/icons/docs-2.pxm | Bin 1145268 -> 1180909 bytes
public/icons/docs-2@2x.pxm | Bin 1249481 -> 1284813 bytes
public/icons/docs/leaflet/16.png | Bin 826 -> 670 bytes
public/icons/docs/leaflet/16@2x.png | Bin 1879 -> 1600 bytes
11 files changed, 45 insertions(+), 13 deletions(-)
diff --git a/assets/images/docs-2.png b/assets/images/docs-2.png
index a1758a0ee1c430f25fa80ee52441d01e10c8b82f..ac9ca5e8b5793e3b66a4473a2d32ad63881319df 100644
GIT binary patch
literal 17376
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
Z3e?YOl?Qq~v<(9Zd%F6$taD0e0sxscn->58
literal 16897
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
diff --git a/assets/images/docs-2@2x.png b/assets/images/docs-2@2x.png
index b2d719c213018247b0796e5e060697877f4081b3..d376d2e174e89fbeb381fd96c26ad138e2859952 100644
GIT binary patch
literal 42235
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