diff --git a/.travis.yml b/.travis.yml index 7c3a1db9..e3fceec9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: ruby before_script: - gem update --system - - gem update bundler + - gem install bundler diff --git a/Gemfile.lock b/Gemfile.lock index 702ab535..9913765b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -22,13 +22,13 @@ GEM erubi (1.7.1) ethon (0.11.0) ffi (>= 1.3.0) - eventmachine (1.2.5) + eventmachine (1.2.7) execjs (2.7.0) - exifr (1.3.3) - ffi (1.9.23) + exifr (1.3.4) + ffi (1.9.25) fspath (3.1.0) highline (1.7.10) - html-pipeline (2.7.2) + html-pipeline (2.8.0) activesupport (>= 2) nokogiri (>= 1.4) i18n (1.0.1) @@ -39,7 +39,7 @@ GEM image_size (~> 1.5) in_threads (~> 1.3) progress (~> 3.0, >= 3.0.1) - image_optim_pack (0.5.0.20180419) + image_optim_pack (0.5.1) fspath (>= 2.1, < 4) image_optim (~> 0.19) image_size (1.5.0) @@ -49,7 +49,7 @@ GEM minitest (5.11.3) multi_json (1.13.1) mustermann (1.0.2) - newrelic_rpm (5.0.0.342) + newrelic_rpm (5.2.0.345) nokogiri (1.8.2) mini_portile2 (~> 2.3.0) options (2.3.2) @@ -61,7 +61,7 @@ GEM coderay (~> 1.1.0) method_source (~> 0.9.0) rack (2.0.5) - rack-protection (2.0.1) + rack-protection (2.0.3) rack rack-test (1.0.0) rack (>= 1.0, < 3) @@ -75,17 +75,18 @@ GEM sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sinatra (2.0.1) + sinatra (2.0.3) mustermann (~> 1.0) rack (~> 2.0) - rack-protection (= 2.0.1) + rack-protection (= 2.0.3) tilt (~> 2.0) - sinatra-contrib (2.0.1) - backports (>= 2.0) + sinatra-contrib (2.0.3) + activesupport (>= 4.0.0) + backports (>= 2.8.2) multi_json mustermann (~> 1.0) - rack-protection (= 2.0.1) - sinatra (= 2.0.1) + rack-protection (= 2.0.3) + sinatra (= 2.0.3) tilt (>= 1.3, < 3) sprockets (3.7.1) concurrent-ruby (~> 1.0) @@ -112,9 +113,9 @@ GEM ethon (>= 0.9.0) tzinfo (1.2.5) thread_safe (~> 0.1) - uglifier (4.1.10) + uglifier (4.1.11) execjs (>= 0.3.0, < 3) - unicode-display_width (1.3.2) + unicode-display_width (1.3.3) unicode_utils (1.4.0) unix_utils (0.0.15) yajl-ruby (1.4.0) diff --git a/assets/javascripts/views/layout/document.coffee b/assets/javascripts/views/layout/document.coffee index 5d01a325..10feefd5 100644 --- a/assets/javascripts/views/layout/document.coffee +++ b/assets/javascripts/views/layout/document.coffee @@ -28,7 +28,7 @@ class app.views.Document extends app.View return setTitle: (title) -> - @el.title = if title then "DevDocs — #{title}" else 'DevDocs API Documentation' + @el.title = if title then "#{title} — DevDocs" else 'DevDocs API Documentation' afterRoute: (route) => if route is 'settings' diff --git a/assets/javascripts/views/layout/mobile.coffee b/assets/javascripts/views/layout/mobile.coffee index ae6f9940..cb87a323 100644 --- a/assets/javascripts/views/layout/mobile.coffee +++ b/assets/javascripts/views/layout/mobile.coffee @@ -16,8 +16,8 @@ class app.views.Mobile extends app.View @detect: -> try (window.matchMedia('(max-width: 480px)').matches) or - (window.matchMedia('(max-device-width: 767px)').matches) or - (window.matchMedia('(max-device-height: 767px) and (max-device-width: 1024px)').matches) or + (window.matchMedia('(max-width: 767px)').matches) or + (window.matchMedia('(max-height: 767px) and (max-width: 1024px)').matches) or # Need to sniff the user agent because some Android and Windows Phone devices don't take # resolution (dpi) into account when reporting device width/height. (navigator.userAgent.indexOf('Android') isnt -1 and navigator.userAgent.indexOf('Mobile') isnt -1) or diff --git a/assets/stylesheets/pages/_angular.scss b/assets/stylesheets/pages/_angular.scss index 846fc436..84fb16ea 100644 --- a/assets/stylesheets/pages/_angular.scss +++ b/assets/stylesheets/pages/_angular.scss @@ -19,4 +19,6 @@ font-style: italic; text-align: right; } + + td h3 { margin: 0 !important; } } diff --git a/assets/stylesheets/pages/_sphinx.scss b/assets/stylesheets/pages/_sphinx.scss index 1ad24aa9..86744e33 100644 --- a/assets/stylesheets/pages/_sphinx.scss +++ b/assets/stylesheets/pages/_sphinx.scss @@ -10,6 +10,7 @@ .important { @extend %note-orange; } .warning, .deprecated-removed, .deprecated { @extend %note-red; } + .hint { @extend %note-green; } .versionmodified, span.title, .topic-title { display: block; diff --git a/lib/docs/filters/angular/clean_html.rb b/lib/docs/filters/angular/clean_html.rb index 59957865..75112710 100644 --- a/lib/docs/filters/angular/clean_html.rb +++ b/lib/docs/filters/angular/clean_html.rb @@ -7,7 +7,7 @@ module Docs at_css('h1').content = 'Angular Documentation' end - css('br', 'hr', '.material-icons', '.header-link').remove + css('br', 'hr', '.material-icons', '.header-link', '.breadcrumb').remove css('.content', 'article', '.api-header', 'section', '.instance-member').each do |node| node.before(node.children).remove @@ -86,6 +86,14 @@ module Docs at_css('h1').content = subpath.remove('api/') end + css('th h3').each do |node| + node.name = 'span' + end + + css('code code').each do |node| + node.before(node.children).remove + end + doc end end diff --git a/lib/docs/filters/angular/entries.rb b/lib/docs/filters/angular/entries.rb index 4b571063..da0a9d4b 100644 --- a/lib/docs/filters/angular/entries.rb +++ b/lib/docs/filters/angular/entries.rb @@ -16,6 +16,8 @@ module Docs node.next_element.content.remove('@angular/') elsif at_css('.api-type-label.module') name.split('/').first + elsif slug.start_with?('api/') + slug.split('/').second else 'Miscellaneous' end diff --git a/lib/docs/filters/ansible/clean_html.rb b/lib/docs/filters/ansible/clean_html.rb index f24d0d01..9cef4740 100644 --- a/lib/docs/filters/ansible/clean_html.rb +++ b/lib/docs/filters/ansible/clean_html.rb @@ -4,6 +4,10 @@ module Docs def call @doc = at_css('#page-content') + css('font').each do |node| + node.before(node.children).remove + end + doc end end diff --git a/lib/docs/filters/ansible/entries.rb b/lib/docs/filters/ansible/entries.rb index e809073c..d1097b99 100644 --- a/lib/docs/filters/ansible/entries.rb +++ b/lib/docs/filters/ansible/entries.rb @@ -11,14 +11,38 @@ module Docs end def get_type - if slug.include?('module') - if name =~ /\A[a-z]/ && node = css('.toctree-l2.current').last - "Modules: #{node.content.remove(' Modules')}" + if version == '2.4' + if slug.include?('module') + if name =~ /\A[a-z]/ && node = css('.toctree-l2.current').last + return "Modules: #{node.content.remove(' Modules')}" + else + return 'Modules' + end + end + end + + if slug =~ /\Acli\// + 'CLI Reference' + elsif slug =~ /\Anetwork\// + 'Network' + elsif slug =~ /\Aplugins\// + if name =~ /\A[a-z]/ && node = css('.toctree-l3.current').last + "Plugins: #{node.content.sub(/ Plugins.*/, '')}" + else + 'Plugins' + end + elsif slug =~ /\Amodules\// + if slug =~ /\Amodules\/list_/ || slug=~ /_maintained\z/ + 'Modules: Categories' else 'Modules' end elsif slug.include?('playbook') 'Playbooks' + elsif slug =~ /\Auser_guide\// + 'Guides: User' + elsif slug =~ /\Ascenario_guides\// + 'Guides: Scenarios' elsif slug.include?('guide') 'Guides' else diff --git a/lib/docs/filters/react_native/clean_html.rb b/lib/docs/filters/react_native/clean_html.rb index 54c7a142..ecc233be 100644 --- a/lib/docs/filters/react_native/clean_html.rb +++ b/lib/docs/filters/react_native/clean_html.rb @@ -2,7 +2,7 @@ module Docs class ReactNative class CleanHtmlFilter < Filter def call - @doc = at_css('.inner-content, article.withtoc') + @doc = at_css('.post') if root_page? at_css('h1').content = 'React Native Documentation' @@ -38,6 +38,11 @@ module Docs node.content = node.content end + css('pre > code.hljs').each do |node| + node.parent['data-language'] = 'jsx' + node.before(node.children).remove + end + css('blockquote > p:first-child').each do |node| node.remove if node.content.strip == 'Note:' end @@ -45,7 +50,7 @@ module Docs css('h3#props', 'h3#methods').each { |node| node.name = 'h2' } css('h4.propTitle').each { |node| node.name = 'h3' } - css('> div > div', '> div', 'div > span', '.props', '.prop').each do |node| + css('> div > div', '> div', 'div > span', '.props', '.prop', '> article', '.postHeader', '.web-player').each do |node| node.before(node.children).remove end diff --git a/lib/docs/filters/react_native/entries.rb b/lib/docs/filters/react_native/entries.rb index d2e96d75..54583368 100644 --- a/lib/docs/filters/react_native/entries.rb +++ b/lib/docs/filters/react_native/entries.rb @@ -12,9 +12,9 @@ module Docs end def get_type - link = at_css('.nav-docs-section .active, .toc .active') + link = at_css('.navItemActive') return 'Miscellaneous' unless link - section = link.ancestors('.nav-docs-section, section').first + section = link.ancestors('.navGroup').first type = section.at_css('h3').content.strip type = REPLACE_TYPES[type] || type type += ": #{name}" if type == 'Components' @@ -22,15 +22,13 @@ module Docs end def additional_entries - css('.props > .prop > .propTitle', '.props > .prop > .methodTitle').each_with_object [] do |node, entries| - name = node.children.find(&:text?).try(:content) - next if name.blank? - sep = node.content.include?('static') ? '.' : '#' - name.prepend(self.name + sep) - name << '()' if node['class'].include?('methodTitle') - name.remove! %r{\??\:\s*\z} - id = node.at_css('.anchor')['name'] - entries << [name, id] + css('.mainContainer h3').each_with_object [] do |node, entries| + subname = node.text + next if subname.blank? || node.css('code').empty? + sep = subname.include?('()') ? '.' : '#' + subname.prepend(name + sep) + id = node.at_css('.anchor')['id'] + entries << [subname, id] end end end diff --git a/lib/docs/scrapers/angular.rb b/lib/docs/scrapers/angular.rb index 18770c7e..c318ce25 100644 --- a/lib/docs/scrapers/angular.rb +++ b/lib/docs/scrapers/angular.rb @@ -59,7 +59,7 @@ module Docs end version do - self.release = '5.2.9' + self.release = '6.0.4' self.base_url = 'https://angular.io/' self.root_path = 'docs' @@ -78,6 +78,26 @@ module Docs include Docs::Angular::Common end + version '5' do + self.release = '5.2.11' + self.base_url = 'https://v5.angular.io/' + self.root_path = 'docs' + + html_filters.push 'angular/clean_html', 'angular/entries' + + options[:follow_links] = false + options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/] + options[:fix_urls_before_parse] = ->(url) do + url.sub! %r{\Aguide/}, '/guide/' + url.sub! %r{\Atutorial/}, '/tutorial/' + url.sub! %r{\Aapi/}, '/api/' + url.sub! %r{\Agenerated/}, '/generated/' + url + end + + include Docs::Angular::Common + end + version '4' do self.release = '4.4.6' self.base_url = 'https://v4.angular.io/' diff --git a/lib/docs/scrapers/ansible.rb b/lib/docs/scrapers/ansible.rb index cb66b84d..2ac3ee6f 100644 --- a/lib/docs/scrapers/ansible.rb +++ b/lib/docs/scrapers/ansible.rb @@ -7,15 +7,7 @@ module Docs code: 'https://github.com/ansible/ansible' } - html_filters.push 'ansible/entries', 'sphinx/clean_html' - - options[:skip] = %w( - glossary.html - faq.html - community.html - tower.html - quickstart.html - list_of_all_modules.html) + html_filters.push 'ansible/entries', 'sphinx/clean_html', 'ansible/clean_html' options[:attribution] = <<-HTML © 2012–2018 Michael DeHaan
@@ -23,9 +15,37 @@ module Docs Licensed under the GNU General Public License version 3. HTML + version '2.5' do + self.release = '2.5.3' + self.base_url = 'https://docs.ansible.com/ansible/2.5/' + + options[:skip] = %w( + installation_guide/index.html + reference_appendices/glossary.html + reference_appendices/faq.html + reference_appendices/tower.html + user_guide/quickstart.html + modules/modules_by_category.html + modules/list_of_all_modules.html) + + options[:skip_patterns] = [ + /\Acommunity.*/i, + /\Adev_guide.*/i, + /\Aroadmap.*/i, + ] + end + version '2.4' do self.release = '2.4.3' self.base_url = 'https://docs.ansible.com/ansible/2.4/' + + options[:skip] = %w( + glossary.html + faq.html + community.html + tower.html + quickstart.html + list_of_all_modules.html) end end end diff --git a/lib/docs/scrapers/codeceptjs.rb b/lib/docs/scrapers/codeceptjs.rb index 047cb010..c30a4a59 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.1.7' + self.release = '1.2.1' self.base_url = 'https://codecept.io/' self.links = { home: 'https://codecept.io/', diff --git a/lib/docs/scrapers/erlang.rb b/lib/docs/scrapers/erlang.rb index a1bdfde4..ffa267f3 100644 --- a/lib/docs/scrapers/erlang.rb +++ b/lib/docs/scrapers/erlang.rb @@ -41,7 +41,7 @@ module Docs HTML version '20' do - self.release = '20.2' + self.release = '20.3' self.dir = '/Users/Thibaut/DevDocs/Docs/Erlang20' end diff --git a/lib/docs/scrapers/jest.rb b/lib/docs/scrapers/jest.rb index 927c0807..689b3268 100644 --- a/lib/docs/scrapers/jest.rb +++ b/lib/docs/scrapers/jest.rb @@ -1,7 +1,7 @@ module Docs class Jest < UrlScraper self.type = 'jest' - self.release = '22.4.2' + self.release = '23.1.0' self.base_url = 'https://facebook.github.io/jest/docs/en/' self.root_path = 'getting-started.html' self.links = { diff --git a/lib/docs/scrapers/nginx.rb b/lib/docs/scrapers/nginx.rb index e080a53f..c6a772e2 100644 --- a/lib/docs/scrapers/nginx.rb +++ b/lib/docs/scrapers/nginx.rb @@ -2,7 +2,7 @@ module Docs class Nginx < UrlScraper self.name = 'nginx' self.type = 'nginx' - self.release = '1.14.0' + self.release = '1.15.0' self.base_url = 'https://nginx.org/en/docs/' self.links = { home: 'https://nginx.org/', diff --git a/lib/docs/scrapers/node.rb b/lib/docs/scrapers/node.rb index 465b8b37..0dc7c7e8 100644 --- a/lib/docs/scrapers/node.rb +++ b/lib/docs/scrapers/node.rb @@ -23,22 +23,22 @@ module Docs HTML version do - self.release = '10.1.0' + self.release = '10.4.0' self.base_url = 'https://nodejs.org/dist/latest-v10.x/docs/api/' end version '8 LTS' do - self.release = '8.11.1' + self.release = '8.11.2' self.base_url = 'https://nodejs.org/dist/latest-v8.x/docs/api/' end version '6 LTS' do - self.release = '6.13.1' + self.release = '6.14.2' self.base_url = 'https://nodejs.org/dist/latest-v6.x/docs/api/' end version '4 LTS' do - self.release = '4.8.7' + self.release = '4.9.1' self.base_url = 'https://nodejs.org/dist/latest-v4.x/docs/api/' end end diff --git a/lib/docs/scrapers/npm.rb b/lib/docs/scrapers/npm.rb index 7d16185e..3e15848b 100644 --- a/lib/docs/scrapers/npm.rb +++ b/lib/docs/scrapers/npm.rb @@ -2,7 +2,7 @@ module Docs class Npm < UrlScraper self.name = 'npm' self.type = 'npm' - self.release = '6.0.0' + self.release = '6.1.0' self.base_url = 'https://docs.npmjs.com/' self.force_gzip = true self.links = { diff --git a/lib/docs/scrapers/react.rb b/lib/docs/scrapers/react.rb index 436b5614..b8010bd6 100644 --- a/lib/docs/scrapers/react.rb +++ b/lib/docs/scrapers/react.rb @@ -2,7 +2,7 @@ module Docs class React < UrlScraper self.name = 'React' self.type = 'simple' - self.release = '16.3.0' + self.release = '16.4.0' self.base_url = 'https://reactjs.org/docs/' self.root_path = 'hello-world.html' self.links = { diff --git a/lib/docs/scrapers/react_native.rb b/lib/docs/scrapers/react_native.rb index 14c2c6c7..8300bc3b 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.49' + self.release = '0.55' self.base_url = 'https://facebook.github.io/react-native/docs/' self.root_path = 'getting-started.html' self.links = { @@ -12,7 +12,7 @@ module Docs html_filters.push 'react_native/entries', 'react_native/clean_html' - options[:container] = '.documentationContent' + options[:container] = '.docMainWrapper' options[:skip_patterns] = [/\Asample\-/] options[:skip] = %w( videos.html @@ -27,7 +27,7 @@ module Docs } options[:attribution] = <<-HTML - © 2015–2017 Facebook Inc.
+ © 2015–2018 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License. HTML end diff --git a/lib/docs/scrapers/sinon.rb b/lib/docs/scrapers/sinon.rb index 69387695..4a950406 100644 --- a/lib/docs/scrapers/sinon.rb +++ b/lib/docs/scrapers/sinon.rb @@ -19,7 +19,7 @@ module Docs HTML version '5' do - self.release = '5.0.7' + self.release = '5.1.0' self.base_url = "http://sinonjs.org/releases/v#{release}/" end diff --git a/lib/docs/scrapers/typescript.rb b/lib/docs/scrapers/typescript.rb index 2500aeb1..e8004fe9 100644 --- a/lib/docs/scrapers/typescript.rb +++ b/lib/docs/scrapers/typescript.rb @@ -2,7 +2,7 @@ module Docs class Typescript < UrlScraper self.name = 'TypeScript' self.type = 'typescript' - self.release = '2.8.3' + self.release = '2.9.0' self.base_url = 'https://www.typescriptlang.org/docs/' self.root_path = 'tutorial.html' self.links = { diff --git a/lib/docs/scrapers/webpack.rb b/lib/docs/scrapers/webpack.rb index 26414a46..86632aa8 100644 --- a/lib/docs/scrapers/webpack.rb +++ b/lib/docs/scrapers/webpack.rb @@ -4,7 +4,7 @@ module Docs self.type = 'webpack' version do - self.release = '4.8.3' + self.release = '4.12.0' self.base_url = 'https://webpack.js.org/' self.root_path = 'guides/' self.initial_paths = %w( diff --git a/lib/docs/scrapers/yarn.rb b/lib/docs/scrapers/yarn.rb index ae27fda8..7923f346 100644 --- a/lib/docs/scrapers/yarn.rb +++ b/lib/docs/scrapers/yarn.rb @@ -1,7 +1,7 @@ module Docs class Yarn < UrlScraper self.type = 'yarn' - self.release = '1.6.0' + self.release = '1.7.0' self.base_url = 'https://yarnpkg.com/en/docs/' self.links = { home: 'https://yarnpkg.com/',